mirror of
https://github.com/SangeloDev/Unique.git
synced 2024-11-22 00:02:42 +00:00
Initial commit
This commit is contained in:
commit
994bbb585f
29 changed files with 1587 additions and 0 deletions
2
.gitattributes
vendored
Normal file
2
.gitattributes
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
# Auto detect text files and perform LF normalization
|
||||||
|
* text=auto
|
113
.gitignore
vendored
Normal file
113
.gitignore
vendored
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
# User-specific
|
||||||
|
.idea/
|
||||||
|
|
||||||
|
*.iml
|
||||||
|
*.ipr
|
||||||
|
*.iws
|
||||||
|
|
||||||
|
# IntelliJ
|
||||||
|
out/
|
||||||
|
|
||||||
|
# Compiled class file
|
||||||
|
*.class
|
||||||
|
|
||||||
|
# Log file
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# BlueJ files
|
||||||
|
*.ctxt
|
||||||
|
|
||||||
|
# Package Files #
|
||||||
|
*.jar
|
||||||
|
*.war
|
||||||
|
*.nar
|
||||||
|
*.ear
|
||||||
|
*.zip
|
||||||
|
*.tar.gz
|
||||||
|
*.rar
|
||||||
|
|
||||||
|
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||||
|
hs_err_pid*
|
||||||
|
|
||||||
|
*~
|
||||||
|
|
||||||
|
# temporary files which can be created if a process still has a handle open of a deleted file
|
||||||
|
.fuse_hidden*
|
||||||
|
|
||||||
|
# KDE directory preferences
|
||||||
|
.directory
|
||||||
|
|
||||||
|
# Linux trash folder which might appear on any partition or disk
|
||||||
|
.Trash-*
|
||||||
|
|
||||||
|
# .nfs files are created when an open file is removed but is still being accessed
|
||||||
|
.nfs*
|
||||||
|
|
||||||
|
# General
|
||||||
|
.DS_Store
|
||||||
|
.AppleDouble
|
||||||
|
.LSOverride
|
||||||
|
|
||||||
|
# Icon must end with two \r
|
||||||
|
Icon
|
||||||
|
|
||||||
|
# Thumbnails
|
||||||
|
._*
|
||||||
|
|
||||||
|
# Files that might appear in the root of a volume
|
||||||
|
.DocumentRevisions-V100
|
||||||
|
.fseventsd
|
||||||
|
.Spotlight-V100
|
||||||
|
.TemporaryItems
|
||||||
|
.Trashes
|
||||||
|
.VolumeIcon.icns
|
||||||
|
.com.apple.timemachine.donotpresent
|
||||||
|
|
||||||
|
# Directories potentially created on remote AFP share
|
||||||
|
.AppleDB
|
||||||
|
.AppleDesktop
|
||||||
|
Network Trash Folder
|
||||||
|
Temporary Items
|
||||||
|
.apdisk
|
||||||
|
|
||||||
|
# Windows thumbnail cache files
|
||||||
|
Thumbs.db
|
||||||
|
Thumbs.db:encryptable
|
||||||
|
ehthumbs.db
|
||||||
|
ehthumbs_vista.db
|
||||||
|
|
||||||
|
# Dump file
|
||||||
|
*.stackdump
|
||||||
|
|
||||||
|
# Folder config file
|
||||||
|
[Dd]esktop.ini
|
||||||
|
|
||||||
|
# Recycle Bin used on file shares
|
||||||
|
$RECYCLE.BIN/
|
||||||
|
|
||||||
|
# Windows Installer files
|
||||||
|
*.cab
|
||||||
|
*.msi
|
||||||
|
*.msix
|
||||||
|
*.msm
|
||||||
|
*.msp
|
||||||
|
|
||||||
|
# Windows shortcuts
|
||||||
|
*.lnk
|
||||||
|
|
||||||
|
target/
|
||||||
|
|
||||||
|
pom.xml.tag
|
||||||
|
pom.xml.releaseBackup
|
||||||
|
pom.xml.versionsBackup
|
||||||
|
pom.xml.next
|
||||||
|
|
||||||
|
release.properties
|
||||||
|
dependency-reduced-pom.xml
|
||||||
|
buildNumber.properties
|
||||||
|
.mvn/timing.properties
|
||||||
|
.mvn/wrapper/maven-wrapper.jar
|
||||||
|
.flattened-pom.xml
|
||||||
|
|
||||||
|
# Common working directory
|
||||||
|
run/
|
21
LICENSE
Normal file
21
LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2022 Sangelo
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
79
config-backup.yml
Normal file
79
config-backup.yml
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
# __ __ _
|
||||||
|
# / / / /___ (_)___ ___ _____
|
||||||
|
# / / / / __ \/ / __ `/ / / / _ \
|
||||||
|
#/ /_/ / / / / / /_/ / /_/ / __/
|
||||||
|
#\____/_/ /_/_/\__, /\__,_/\___/
|
||||||
|
# /_/
|
||||||
|
|
||||||
|
# !! INFO
|
||||||
|
# Placeholders:
|
||||||
|
# %p is the player's name.
|
||||||
|
# %t is the target's name.
|
||||||
|
# %c is the placeholder for the command itself.
|
||||||
|
# %u is the command's usage.
|
||||||
|
# !! Do not replace the placeholders, or change them up, as it will break things !!
|
||||||
|
# For example:
|
||||||
|
# - Do not do this: Replace %c in no-args-msg with %p.
|
||||||
|
# - Do this: Move it around inside of the message, so it makes sense when you translate messages.
|
||||||
|
|
||||||
|
# Sets the prefix for chat messages.
|
||||||
|
prefix: '&8[&2Unique&8]&r '
|
||||||
|
|
||||||
|
# This message will be sent when a player couldn't be found.
|
||||||
|
player-not-online-msg: "&cThis player is not online or doesn't exist."
|
||||||
|
# This is the message that will be sent to the console when it has to be ran in game.
|
||||||
|
console-not-allowed-msg: "&cYou need to be on the server to use this command."
|
||||||
|
# This is the message that is sent to the player, when they don't have the required permissions
|
||||||
|
no-perms-msg: "&cYou don't have the required permissions to execute this command."
|
||||||
|
# This is the error that will be sent when no arguments were given.
|
||||||
|
no-args-msg: "&cNo arguments were given. Usage: &6/%c %u&c."
|
||||||
|
# These are the join and leave messages.
|
||||||
|
join-msg: "&8[&2+&8]&a %p"
|
||||||
|
quit-msg: "&8[&4-&8]&c %p"
|
||||||
|
|
||||||
|
# These are the toggle messages for god mode.
|
||||||
|
god-enabled-msg: '&2God mode is now &aenabled&2.'
|
||||||
|
god-disabled-msg: '&2God mode is now &cdisabled&2.'
|
||||||
|
# These are the toggle messages for god mode, on the sender's side.
|
||||||
|
god-enabled-others-msg: '&2You have &aenabled&2 god mode for &6%t&2.'
|
||||||
|
god-disabled-others-msg: '&2You have &cdisabled&2 god mode for &6%t&2.'
|
||||||
|
# These are the toggle messages for god mode, on the target's side.
|
||||||
|
god-enabled-target-msg: '&2God mode has now been &aenabled&2 for you by &6%p&2.'
|
||||||
|
god-disabled-target-msg: '&2God mode has now been &cdisabled&2 for you by &6%p&2.'
|
||||||
|
|
||||||
|
# These are the toggle messages for flight.
|
||||||
|
flight-enabled-msg: '&2Flight is now &aenabled&2.'
|
||||||
|
flight-disabled-msg: '&2Flight is now &cdisabled&2.'
|
||||||
|
# These are the toggle messages for flight, on the sender's side.
|
||||||
|
flight-enabled-others-msg: '&2You have &aenabled&2 flight for &6%t&2.'
|
||||||
|
flight-disabled-others-msg: '&2You have &cdisabled&2 flight for &6%t&2.'
|
||||||
|
# These are the toggle messages for flight, on the target's side.
|
||||||
|
flight-enabled-target-msg: '&2Flight has now been &aenabled&2 for you by &6%p&2.'
|
||||||
|
flight-disabled-target-msg: '&2Flight has now been &cdisabled&2 for you by &6%p&2.'
|
||||||
|
|
||||||
|
# These are the toggle messages for vanish.
|
||||||
|
vanish-enabled-msg: '&2You are now &ainvisible&2.'
|
||||||
|
vanish-disabled-msg: '&2You are now &cvisible&2.'
|
||||||
|
|
||||||
|
# These are the feed messages.
|
||||||
|
feed-msg: "&2You have now been fed."
|
||||||
|
feed-others-msg: '&2You have now fed &6%t&2.'
|
||||||
|
feed-target-msg: '&2You have been fed by &6%p&2.'
|
||||||
|
|
||||||
|
# These are the heal messages.
|
||||||
|
heal-msg: "&2You have now been healed."
|
||||||
|
heal-others-msg: '&2You have now healed &6%t&2.'
|
||||||
|
heal-target-msg: '&2You have been healed by &6%p&2.'
|
||||||
|
|
||||||
|
# This is the message that is sent to the mod, when they set a new spawn point.
|
||||||
|
setspawn-msg: "&2Spawn location has now been set &asuccessfully."
|
||||||
|
# This is the confirmation message that is sent to the player, when they teleport to the spawn point.
|
||||||
|
spawn-tp-msg: "&2You have been teleported to spawn."
|
||||||
|
# This is the message that is sent to the player, when they tried to teleport to the spawn point, but have to wait for the cooldown.
|
||||||
|
spawn-cooldown-msg: "&cYou cannot teleport for another &6%s&c seconds."
|
||||||
|
# This is the message that is sent to the player, when they tried to teleport to the spawn point, but there is none set.
|
||||||
|
spawn-no-location-msg: "&cThere is no spawn location set. Couldn't initiate teleport."
|
||||||
|
# This is the message that is sent to the moderator, when they tried to teleport to the spawn point, but there is none set.
|
||||||
|
spawn-mod-no-location-msg: "&cThere is no spawn location set. Couldn't initiate teleport. Use &6/setspawn &cto set one."
|
||||||
|
# This is the command cooldown in seconds. You can type 0 to disable it, or any other number to enable it. Default is 3.
|
||||||
|
spawn-command-cooldown: 3
|
63
pom.xml
Normal file
63
pom.xml
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<groupId>space.sangelo</groupId>
|
||||||
|
<artifactId>unique</artifactId>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>Unique</name>
|
||||||
|
|
||||||
|
<description>Escape the ordinary – Be Unique!</description>
|
||||||
|
<properties>
|
||||||
|
<java.version>17</java.version>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
<url>https://sangelo.space</url>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>3.8.1</version>
|
||||||
|
<configuration>
|
||||||
|
<release>17</release>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>papermc</id>
|
||||||
|
<url>https://repo.papermc.io/repository/maven-public/</url>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>sonatype</id>
|
||||||
|
<url>https://oss.sonatype.org/content/groups/public/</url>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>jitpack.io</id>
|
||||||
|
<url>https://jitpack.io</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.papermc.paper</groupId>
|
||||||
|
<artifactId>paper-api</artifactId>
|
||||||
|
<version>1.18.2-R0.1-SNAPSHOT</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
82
src/main/java/space/sangelo/unique/Unique.java
Normal file
82
src/main/java/space/sangelo/unique/Unique.java
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
package space.sangelo.unique;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.plugin.PluginManager;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
import space.sangelo.unique.commands.*;
|
||||||
|
import space.sangelo.unique.listeners.PlayerConnectionListener;
|
||||||
|
import space.sangelo.unique.listeners.SpawnListener;
|
||||||
|
import space.sangelo.unique.listeners.VanishLoginListener;
|
||||||
|
import space.sangelo.unique.listeners.VanishPlayerListener;
|
||||||
|
import space.sangelo.unique.util.MessageUtil;
|
||||||
|
import space.sangelo.unique.util.VanishManager;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
public final class Unique extends JavaPlugin {
|
||||||
|
private MessageUtil messageUtil;
|
||||||
|
private VanishManager vanishManager;
|
||||||
|
//public Config config = new Config("config.yml", this.getDataFolder().getAbsolutePath(), this.getResource("config.yml"));
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEnable() {
|
||||||
|
messageUtil = new MessageUtil(this, new File(getDataFolder(), "messages.yml"));
|
||||||
|
vanishManager = new VanishManager(this);
|
||||||
|
loadListeners();
|
||||||
|
loadConfig();
|
||||||
|
loadCommands();
|
||||||
|
Bukkit.getConsoleSender().sendMessage(ChatColor.DARK_GREEN + "[Unique] " + ChatColor.GREEN + "Plugin has started.");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load Commands
|
||||||
|
public void loadCommands() {
|
||||||
|
Bukkit.getConsoleSender().sendMessage(ChatColor.DARK_GREEN + "[Unique] " + ChatColor.YELLOW + "Loading commands...");
|
||||||
|
getCommand("unique").setExecutor(new UniqueCommand(this));
|
||||||
|
getCommand("print").setExecutor(new PrintCommand(this));
|
||||||
|
getCommand("god").setExecutor(new GodCommand(this));
|
||||||
|
getCommand("fly").setExecutor(new FlyCommand(this));
|
||||||
|
getCommand("vanish").setExecutor(new VanishCommand(this));
|
||||||
|
getCommand("heal").setExecutor(new HealCommand(this));
|
||||||
|
getCommand("feed").setExecutor(new FeedCommand(this));
|
||||||
|
getCommand("setspawn").setExecutor(new SetSpawnCommand(this));
|
||||||
|
getCommand("spawn").setExecutor(new SpawnCommand(this));
|
||||||
|
getCommand("forcereload").setExecutor(new ForceReloadCommand(this));
|
||||||
|
getCommand("gmc").setExecutor(new GamemodeCCommand(this));
|
||||||
|
getCommand("gms").setExecutor(new GamemodeSCommand(this));
|
||||||
|
getCommand("gmsp").setExecutor(new GamemodeSpCommand(this));
|
||||||
|
getCommand("gma").setExecutor(new GamemodeACommand(this));
|
||||||
|
Bukkit.getConsoleSender().sendMessage(ChatColor.DARK_GREEN + "[Unique] " + ChatColor.GOLD + "Commands loaded.");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load Config
|
||||||
|
public void loadConfig() {
|
||||||
|
Bukkit.getConsoleSender().sendMessage(ChatColor.DARK_GREEN + "[Unique] " + ChatColor.YELLOW + "Loading config...");
|
||||||
|
saveResource("config.yml", false);
|
||||||
|
reloadConfig();
|
||||||
|
Bukkit.getConsoleSender().sendMessage(ChatColor.DARK_GREEN + "[Unique] " + ChatColor.GOLD + "Loading config complete");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load Listeners
|
||||||
|
public void loadListeners() {
|
||||||
|
final PluginManager pluginManager = getServer().getPluginManager();
|
||||||
|
pluginManager.registerEvents(new PlayerConnectionListener(this), this);
|
||||||
|
pluginManager.registerEvents(new SpawnListener(this), this);
|
||||||
|
pluginManager.registerEvents(new VanishLoginListener(this), this);
|
||||||
|
pluginManager.registerEvents(new VanishPlayerListener(this), this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable() {
|
||||||
|
Bukkit.getConsoleSender().sendMessage(ChatColor.DARK_GREEN + "[Unique] " + ChatColor.GOLD + "Shutting down...");
|
||||||
|
}
|
||||||
|
|
||||||
|
public MessageUtil getMessageUtil() {
|
||||||
|
return messageUtil;
|
||||||
|
}
|
||||||
|
|
||||||
|
public VanishManager getVanishManager() {
|
||||||
|
return vanishManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
49
src/main/java/space/sangelo/unique/commands/FeedCommand.java
Normal file
49
src/main/java/space/sangelo/unique/commands/FeedCommand.java
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
package space.sangelo.unique.commands;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import space.sangelo.unique.Unique;
|
||||||
|
import space.sangelo.unique.util.MessageUtil;
|
||||||
|
|
||||||
|
public class FeedCommand implements CommandExecutor {
|
||||||
|
private final MessageUtil messageUtil;
|
||||||
|
|
||||||
|
public FeedCommand(final Unique plugin) {
|
||||||
|
this.messageUtil = plugin.getMessageUtil();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) {
|
||||||
|
if (sender instanceof Player player) {
|
||||||
|
if (args.length == 0) {
|
||||||
|
if (player.hasPermission("unique.moderation.feed")) {
|
||||||
|
player.setFoodLevel(20);
|
||||||
|
player.setSaturation(20);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "feed-msg");
|
||||||
|
} else {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "no-perms-msg");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
final String playerName = args[0];
|
||||||
|
final Player target = Bukkit.getServer().getPlayerExact(playerName);
|
||||||
|
if (target == null) {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "player-not-online-msg");
|
||||||
|
} else {
|
||||||
|
if (player.hasPermission("unique.moderation.feed.others")) {
|
||||||
|
target.setFoodLevel(20);
|
||||||
|
target.setSaturation(20);
|
||||||
|
messageUtil.sendMessageWithPrefix(target, "feed-target-msg", Placeholder.component("player", player.displayName()));
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "feed-others-msg", Placeholder.component("target", target.displayName()));
|
||||||
|
} else {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "no-perms-msg");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
59
src/main/java/space/sangelo/unique/commands/FlyCommand.java
Normal file
59
src/main/java/space/sangelo/unique/commands/FlyCommand.java
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
package space.sangelo.unique.commands;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import space.sangelo.unique.Unique;
|
||||||
|
import space.sangelo.unique.util.MessageUtil;
|
||||||
|
|
||||||
|
public class FlyCommand implements CommandExecutor {
|
||||||
|
private final MessageUtil messageUtil;
|
||||||
|
private final Unique plugin;
|
||||||
|
|
||||||
|
public FlyCommand(final Unique plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
this.messageUtil = plugin.getMessageUtil();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) {
|
||||||
|
if (sender instanceof Player player)
|
||||||
|
if (args.length == 0) {
|
||||||
|
if (player.hasPermission("unique.moderation.fly")) {
|
||||||
|
if (player.getAllowFlight()) {
|
||||||
|
player.setAllowFlight(false);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "flight-disabled-msg");
|
||||||
|
} else {
|
||||||
|
player.setAllowFlight(true);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "flight-enabled-msg");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "no-perms-msg");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
final String playerName = args[0];
|
||||||
|
final Player target = Bukkit.getServer().getPlayerExact(playerName);
|
||||||
|
if (player.hasPermission("unique.moderation.fly.set")) {
|
||||||
|
if (target == null) {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "player-not-online-msg");
|
||||||
|
} else {
|
||||||
|
if (target.getAllowFlight()) {
|
||||||
|
target.setAllowFlight(false);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "flight-disabled-target-msg", Placeholder.component("player", player.displayName()));
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "flight-disabled-others-msg", Placeholder.component("target", target.displayName()));
|
||||||
|
} else {
|
||||||
|
target.setAllowFlight(true);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "flight-enabled-target-msg", Placeholder.component("player", player.displayName()));
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "flight-enabled-others-msg", Placeholder.component("target", target.displayName()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "no-perms-msg");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package space.sangelo.unique.commands;
|
||||||
|
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import space.sangelo.unique.Unique;
|
||||||
|
import space.sangelo.unique.util.MessageUtil;
|
||||||
|
|
||||||
|
|
||||||
|
public class ForceReloadCommand implements CommandExecutor {
|
||||||
|
private final Unique plugin;
|
||||||
|
private final MessageUtil messageUtil;
|
||||||
|
|
||||||
|
public ForceReloadCommand(final Unique plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
this.messageUtil = plugin.getMessageUtil();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) {
|
||||||
|
if (sender.hasPermission("unique.admin.forcereload")) {
|
||||||
|
messageUtil.sendMessageWithPrefix(sender, "force-reload-msg");
|
||||||
|
plugin.reloadConfig();
|
||||||
|
messageUtil.sendMessageWithPrefix(sender, "force-reload-complete-msg");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,60 @@
|
||||||
|
package space.sangelo.unique.commands;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.GameMode;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.ConsoleCommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import space.sangelo.unique.Unique;
|
||||||
|
import space.sangelo.unique.util.MessageUtil;
|
||||||
|
|
||||||
|
public class GamemodeACommand implements CommandExecutor {
|
||||||
|
private final Unique plugin;
|
||||||
|
private final MessageUtil messageUtil;
|
||||||
|
|
||||||
|
public GamemodeACommand(final Unique plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
this.messageUtil = plugin.getMessageUtil();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(final CommandSender sender, final Command cmd, final String label, final String[] args) {
|
||||||
|
if (sender instanceof Player player && args.length == 0) {
|
||||||
|
adventurePlayerSelf(player);
|
||||||
|
} else if (sender instanceof Player player) {
|
||||||
|
final Player target = Bukkit.getPlayerExact(args[0]);
|
||||||
|
if (player.hasPermission("unique.moderation.adventure.others")) {
|
||||||
|
if (player == target) {
|
||||||
|
player.setGameMode(GameMode.ADVENTURE);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "gamemode-switcher-msg", Placeholder.unparsed("gamemode", "adventure"));
|
||||||
|
} else {
|
||||||
|
target.setGameMode(GameMode.ADVENTURE);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "gamemode-switcher-others-msg", Placeholder.unparsed("gamemode", "adventure"), Placeholder.component("target", target.displayName()));
|
||||||
|
messageUtil.sendMessageWithPrefix(target, "gamemode-switcher-msg", Placeholder.unparsed("gamemode", "adventure"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (sender instanceof ConsoleCommandSender && args.length == 0) {
|
||||||
|
messageUtil.sendMessageWithPrefix(sender, "console-specify-player");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void adventurePlayerSelf(final Player player) {
|
||||||
|
if (player.getGameMode() == GameMode.ADVENTURE) {
|
||||||
|
if (player.hasPermission("unique.moderation.gamemode.adventure.self")) {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "gamemode-already-set-msg", Placeholder.unparsed("gamemode", "adventure"));
|
||||||
|
} else {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "no-perms-msg");
|
||||||
|
}
|
||||||
|
} else if (player.hasPermission("unique.moderation.gamemode.adventure.self")) {
|
||||||
|
player.setGameMode(GameMode.ADVENTURE);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "gamemode-switcher-msg", Placeholder.unparsed("gamemode", "adventure"));
|
||||||
|
} else {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "no-perms-msg");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,60 @@
|
||||||
|
package space.sangelo.unique.commands;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.GameMode;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.ConsoleCommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import space.sangelo.unique.Unique;
|
||||||
|
import space.sangelo.unique.util.MessageUtil;
|
||||||
|
|
||||||
|
public class GamemodeCCommand implements CommandExecutor {
|
||||||
|
private final Unique plugin;
|
||||||
|
private final MessageUtil messageUtil;
|
||||||
|
|
||||||
|
public GamemodeCCommand(final Unique plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
this.messageUtil = plugin.getMessageUtil();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(final CommandSender sender, final Command cmd, final String label, final String[] args) {
|
||||||
|
if (sender instanceof Player player && args.length == 0) {
|
||||||
|
creativePlayerSelf(player);
|
||||||
|
} else if (sender instanceof Player player) {
|
||||||
|
final Player target = Bukkit.getPlayerExact(args[0]);
|
||||||
|
if (player.hasPermission("unique.moderation.gamemode.creative.others")) {
|
||||||
|
if (player == target) {
|
||||||
|
player.setGameMode(GameMode.CREATIVE);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "gamemode-switcher-msg", Placeholder.unparsed("gamemode", "creative"));
|
||||||
|
} else {
|
||||||
|
target.setGameMode(GameMode.CREATIVE);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "gamemode-switcher-others-msg", Placeholder.unparsed("gamemode", "creative"), Placeholder.component("target", target.displayName()));
|
||||||
|
messageUtil.sendMessageWithPrefix(target, "gamemode-switcher-msg", Placeholder.unparsed("gamemode", "creative"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (sender instanceof ConsoleCommandSender && args.length == 0) {
|
||||||
|
messageUtil.sendMessageWithPrefix(sender, "console-specify-player");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void creativePlayerSelf(final Player player) {
|
||||||
|
if (player.getGameMode() == GameMode.CREATIVE) {
|
||||||
|
if (player.hasPermission("unique.moderation.gamemode.creative.self")) {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "gamemode-already-set-msg", Placeholder.unparsed("gamemode", "creative"));
|
||||||
|
} else {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "no-perms-msg");
|
||||||
|
}
|
||||||
|
} else if (player.hasPermission("unique.moderation.gamemode.creative.self")) {
|
||||||
|
player.setGameMode(GameMode.CREATIVE);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "gamemode-switcher-msg", Placeholder.unparsed("gamemode", "creative"));
|
||||||
|
} else {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "no-perms-msg");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,60 @@
|
||||||
|
package space.sangelo.unique.commands;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.GameMode;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.ConsoleCommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import space.sangelo.unique.Unique;
|
||||||
|
import space.sangelo.unique.util.MessageUtil;
|
||||||
|
|
||||||
|
public class GamemodeSCommand implements CommandExecutor {
|
||||||
|
private final Unique plugin;
|
||||||
|
private final MessageUtil messageUtil;
|
||||||
|
|
||||||
|
public GamemodeSCommand(final Unique plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
this.messageUtil = plugin.getMessageUtil();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(final CommandSender sender, final Command cmd, final String label, final String[] args) {
|
||||||
|
if (sender instanceof Player player && args.length == 0) {
|
||||||
|
survivalPlayerSelf(player);
|
||||||
|
} else if (sender instanceof Player player) {
|
||||||
|
final Player target = Bukkit.getPlayerExact(args[0]);
|
||||||
|
if (player.hasPermission("unique.moderation.gamemode.survival.others")) {
|
||||||
|
if (player == target) {
|
||||||
|
player.setGameMode(GameMode.SURVIVAL);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "gamemode-switcher-msg", Placeholder.unparsed("gamemode", "survival"));
|
||||||
|
} else {
|
||||||
|
target.setGameMode(GameMode.SURVIVAL);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "gamemode-switcher-others-msg", Placeholder.unparsed("gamemode", "survival"), Placeholder.component("target", target.displayName()));
|
||||||
|
messageUtil.sendMessageWithPrefix(target, "gamemode-switcher-msg", Placeholder.unparsed("gamemode", "survival"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (sender instanceof ConsoleCommandSender && args.length == 0) {
|
||||||
|
messageUtil.sendMessageWithPrefix(sender, "console-specify-player");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void survivalPlayerSelf(final Player player) {
|
||||||
|
if (player.getGameMode() == GameMode.SURVIVAL) {
|
||||||
|
if (player.hasPermission("unique.moderation.gamemode.survival.self")) {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "gamemode-already-set-msg", Placeholder.unparsed("gamemode", "survival"));
|
||||||
|
} else {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "no-perms-msg");
|
||||||
|
}
|
||||||
|
} else if (player.hasPermission("unique.moderation.gamemode.survival.self")) {
|
||||||
|
player.setGameMode(GameMode.SURVIVAL);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "gamemode-switcher-msg", Placeholder.unparsed("gamemode", "survival"));
|
||||||
|
} else {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "no-perms-msg");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,61 @@
|
||||||
|
package space.sangelo.unique.commands;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.GameMode;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.ConsoleCommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import space.sangelo.unique.Unique;
|
||||||
|
import space.sangelo.unique.util.MessageUtil;
|
||||||
|
|
||||||
|
public class GamemodeSpCommand implements CommandExecutor {
|
||||||
|
private final Unique plugin;
|
||||||
|
private final MessageUtil messageUtil;
|
||||||
|
|
||||||
|
public GamemodeSpCommand(final Unique plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
this.messageUtil = plugin.getMessageUtil();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(final CommandSender sender, final Command cmd, final String label, final String[] args) {
|
||||||
|
if (sender instanceof Player player && args.length == 0) {
|
||||||
|
spectatorPlayerSelf(player);
|
||||||
|
} else if (sender instanceof Player player) {
|
||||||
|
final Player target = Bukkit.getPlayerExact(args[0]);
|
||||||
|
if (player.hasPermission("unique.moderation.gamemode.spectator.others")) {
|
||||||
|
if (player == target) {
|
||||||
|
player.setGameMode(GameMode.SPECTATOR);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "gamemode-switcher-msg", Placeholder.unparsed("gamemode", "spectator"));
|
||||||
|
} else {
|
||||||
|
target.setGameMode(GameMode.SPECTATOR);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "gamemode-switcher-others-msg", Placeholder.unparsed("gamemode", "spectator"), Placeholder.component("target", target.displayName()));
|
||||||
|
messageUtil.sendMessageWithPrefix(target, "gamemode-switcher-msg", Placeholder.unparsed("gamemode", "spectator"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (sender instanceof ConsoleCommandSender && args.length == 0) {
|
||||||
|
messageUtil.sendMessageWithPrefix(sender, "console-specify-player");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void spectatorPlayerSelf(final Player player) {
|
||||||
|
if (player.getGameMode() == GameMode.SPECTATOR) {
|
||||||
|
if (player.hasPermission("unique.moderation.gamemode.spectator.self")) {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "gamemode-already-set-msg", Placeholder.unparsed("gamemode", "spectator"));
|
||||||
|
} else {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "no-perms-msg");
|
||||||
|
}
|
||||||
|
} else if (player.hasPermission("unique.moderation.gamemode.spectator.self")) {
|
||||||
|
player.setGameMode(GameMode.SPECTATOR);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "gamemode-switcher-msg", Placeholder.unparsed("gamemode", "spectator"));
|
||||||
|
} else {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "no-perms-msg");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
60
src/main/java/space/sangelo/unique/commands/GodCommand.java
Normal file
60
src/main/java/space/sangelo/unique/commands/GodCommand.java
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
package space.sangelo.unique.commands;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import space.sangelo.unique.Unique;
|
||||||
|
import space.sangelo.unique.util.MessageUtil;
|
||||||
|
|
||||||
|
public class GodCommand implements CommandExecutor {
|
||||||
|
private final Unique plugin;
|
||||||
|
private final MessageUtil messageUtil;
|
||||||
|
|
||||||
|
public GodCommand(final Unique plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
this.messageUtil = plugin.getMessageUtil();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) {
|
||||||
|
if (sender instanceof Player player) {
|
||||||
|
if (args.length == 0) {
|
||||||
|
if (player.hasPermission("unique.moderation.god.use")) {
|
||||||
|
if (player.isInvulnerable()) {
|
||||||
|
player.setInvulnerable(false);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "god-disabled-msg");
|
||||||
|
} else {
|
||||||
|
player.setInvulnerable(true);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "god-enabled-msg");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "no-perms-msg");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
final String playerName = args[0];
|
||||||
|
final Player target = Bukkit.getServer().getPlayerExact(playerName);
|
||||||
|
if (player.hasPermission("unique.moderation.god.set")) {
|
||||||
|
if (target == null) {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "player-not-online");
|
||||||
|
} else {
|
||||||
|
if (target.isInvulnerable()) {
|
||||||
|
target.setInvulnerable(false);
|
||||||
|
messageUtil.sendMessageWithPrefix(target, "god-disabled-target-msg", Placeholder.component("player", player.displayName()));
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "god-disabled-others-msg", Placeholder.component("target", target.displayName()));
|
||||||
|
} else {
|
||||||
|
target.setInvulnerable(true);
|
||||||
|
messageUtil.sendMessageWithPrefix(target, "god-enabled-target-msg", Placeholder.component("player", player.displayName()));
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "god-enabled-others-msg", Placeholder.component("target", target.displayName()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "no-perms-msg");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
51
src/main/java/space/sangelo/unique/commands/HealCommand.java
Normal file
51
src/main/java/space/sangelo/unique/commands/HealCommand.java
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
package space.sangelo.unique.commands;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import space.sangelo.unique.Unique;
|
||||||
|
import space.sangelo.unique.util.MessageUtil;
|
||||||
|
|
||||||
|
import static org.bukkit.attribute.Attribute.GENERIC_MAX_HEALTH;
|
||||||
|
|
||||||
|
public class HealCommand implements CommandExecutor {
|
||||||
|
private final Unique plugin;
|
||||||
|
private final MessageUtil messageUtil;
|
||||||
|
|
||||||
|
public HealCommand(final Unique plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
this.messageUtil = plugin.getMessageUtil();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) {
|
||||||
|
if (sender instanceof Player player) {
|
||||||
|
if (args.length == 0) {
|
||||||
|
if (player.hasPermission("unique.moderation.heal")) {
|
||||||
|
player.setHealth(player.getAttribute(GENERIC_MAX_HEALTH).getDefaultValue());
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "heal-msg");
|
||||||
|
} else {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "no-perms-msg");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
final String playerName = args[0];
|
||||||
|
final Player target = Bukkit.getServer().getPlayerExact(playerName);
|
||||||
|
if (target == null) {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "player-not-online-msg");
|
||||||
|
} else {
|
||||||
|
if (player.hasPermission("unique.moderation.heal.others")) {
|
||||||
|
target.setHealth(target.getAttribute(GENERIC_MAX_HEALTH).getDefaultValue());
|
||||||
|
messageUtil.sendMessageWithPrefix(target, "heal-target-msg", Placeholder.component("player", player.displayName()));
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "heal-others-msg", Placeholder.component("target", target.displayName()));
|
||||||
|
} else {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "no-perms-msg");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
package space.sangelo.unique.commands;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import space.sangelo.unique.Unique;
|
||||||
|
import space.sangelo.unique.util.MessageUtil;
|
||||||
|
|
||||||
|
public class PrintCommand implements CommandExecutor {
|
||||||
|
private final Unique plugin;
|
||||||
|
|
||||||
|
private final MessageUtil messageUtil;
|
||||||
|
|
||||||
|
public PrintCommand(final Unique plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
this.messageUtil = plugin.getMessageUtil();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) {
|
||||||
|
if (sender instanceof Player player) {
|
||||||
|
if (args.length == 0) {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "no-args-msg", Placeholder.unparsed("command", "print {message}"));
|
||||||
|
} else if (args.length == 1) {
|
||||||
|
final String printMessage = args[0];
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "print-msg", Placeholder.parsed("message", printMessage));
|
||||||
|
} else {
|
||||||
|
final StringBuilder builder = new StringBuilder();
|
||||||
|
for (int i = 0; i < args.length; i++) {
|
||||||
|
builder.append(args[i]);
|
||||||
|
builder.append(" ");
|
||||||
|
}
|
||||||
|
String printFinalMessage = builder.toString();
|
||||||
|
printFinalMessage = printFinalMessage.stripTrailing();
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "print-msg", Placeholder.parsed("message", printFinalMessage));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
package space.sangelo.unique.commands;
|
||||||
|
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import space.sangelo.unique.Unique;
|
||||||
|
import space.sangelo.unique.util.MessageUtil;
|
||||||
|
|
||||||
|
public class SetSpawnCommand implements CommandExecutor {
|
||||||
|
private final Unique plugin;
|
||||||
|
private final MessageUtil messageUtil;
|
||||||
|
|
||||||
|
public SetSpawnCommand(final Unique plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
this.messageUtil = plugin.getMessageUtil();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) {
|
||||||
|
if (sender instanceof Player player) {
|
||||||
|
if (player.hasPermission("unique.moderation.setspawn")) {
|
||||||
|
plugin.getConfig().set("spawn", player.getLocation());
|
||||||
|
plugin.saveConfig();
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "setspawn-msg");
|
||||||
|
} else {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "no-perms-msg");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
messageUtil.sendMessageWithPrefix(sender, "console-not-allowed-msg");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,90 @@
|
||||||
|
// Warning! Very duplicate code bc i don't have a clue.
|
||||||
|
package space.sangelo.unique.commands;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import space.sangelo.unique.Unique;
|
||||||
|
import space.sangelo.unique.util.MessageUtil;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class SpawnCommand implements CommandExecutor {
|
||||||
|
private final Unique plugin;
|
||||||
|
private final MessageUtil messageUtil;
|
||||||
|
|
||||||
|
private final HashMap<UUID, Long> cooldown;
|
||||||
|
|
||||||
|
public SpawnCommand(final Unique plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
this.messageUtil = plugin.getMessageUtil();
|
||||||
|
this.cooldown = new HashMap<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) {
|
||||||
|
|
||||||
|
final Location location = plugin.getConfig().getLocation("spawn");
|
||||||
|
|
||||||
|
if (sender instanceof Player player) {
|
||||||
|
if (!player.hasPermission("unique.moderation.bypass.cooldown")) {
|
||||||
|
if (!this.cooldown.containsKey(player.getUniqueId())) {
|
||||||
|
this.cooldown.put(player.getUniqueId(), System.currentTimeMillis());
|
||||||
|
if (location != null) {
|
||||||
|
player.teleport(location);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "spawn-tp-msg");
|
||||||
|
} else {
|
||||||
|
if (!player.hasPermission("unique.moderation.setspawn")) {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "spawn-no-location-msg");
|
||||||
|
} else {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "spawn-mod-no-location-msg");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
final long timeElapsedMs = System.currentTimeMillis() - cooldown.get(player.getUniqueId());
|
||||||
|
final long timeElapsed = (timeElapsedMs / 1000) % 60;
|
||||||
|
if (timeElapsed >= plugin.getConfig().getLong("spawn-command-cooldown")) {
|
||||||
|
this.cooldown.put(player.getUniqueId(), System.currentTimeMillis());
|
||||||
|
if (player.hasPermission("unique.moderation.setspawn")) {
|
||||||
|
if (location != null) {
|
||||||
|
player.teleport(location);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "spawn-tp-msg");
|
||||||
|
} else {
|
||||||
|
if (player.hasPermission("unique.moderation.setspawn")) {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "spawn-mod-no-location-msg");
|
||||||
|
} else {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "spawn-no-location-msg");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "no-perms-msg");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "spawn-mod-no-location-msg", Placeholder.unparsed("remaining", String.valueOf(plugin.getConfig().getLong("spawn-command-cooldown") - timeElapsed)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (player.hasPermission("unique.general.spawn")) {
|
||||||
|
if (location != null) {
|
||||||
|
player.teleport(location);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "spawn-tp-msg");
|
||||||
|
} else {
|
||||||
|
if (player.hasPermission("unique.moderation.setspawn")) {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "spawn-mod-no-location-msg");
|
||||||
|
} else {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "spawn-no-location-msg");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "no-perms-msg");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
package space.sangelo.unique.commands;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import space.sangelo.unique.Unique;
|
||||||
|
|
||||||
|
public class UniqueCommand implements CommandExecutor {
|
||||||
|
private final Unique plugin;
|
||||||
|
|
||||||
|
public UniqueCommand(final Unique plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) {
|
||||||
|
if (sender instanceof Player player) {
|
||||||
|
// p.sendMessage(ChatColor.DARK_GREEN + "-=-=-=-=-=-=-");
|
||||||
|
player.sendMessage(ChatColor.DARK_GREEN + "Unique - " + ChatColor.GOLD + "v" + plugin.getDescription().getVersion());
|
||||||
|
// p.sendMessage(ChatColor.DARK_GREEN + "-=-=-=-=-=-=-");
|
||||||
|
player.sendMessage(ChatColor.DARK_GRAY + "Author: " + ChatColor.AQUA + "Sangelo");
|
||||||
|
player.sendMessage(ChatColor.DARK_GRAY + "Website: " + ChatColor.BLUE + "" + ChatColor.UNDERLINE + "https://sangelo.space");
|
||||||
|
player.sendMessage(ChatColor.DARK_GREEN + "For help, type " + ChatColor.GOLD + "/help unique");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,85 @@
|
||||||
|
package space.sangelo.unique.commands;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import space.sangelo.unique.Unique;
|
||||||
|
import space.sangelo.unique.util.MessageUtil;
|
||||||
|
import space.sangelo.unique.util.VanishManager;
|
||||||
|
|
||||||
|
public class VanishCommand implements CommandExecutor {
|
||||||
|
|
||||||
|
private final Unique plugin;
|
||||||
|
private final VanishManager vanishManager;
|
||||||
|
private final MessageUtil messageUtil;
|
||||||
|
|
||||||
|
public VanishCommand(final Unique plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
this.vanishManager = plugin.getVanishManager();
|
||||||
|
this.messageUtil = plugin.getMessageUtil();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(final CommandSender sender, final Command cmd, final String commandLabel, final String[] args) {
|
||||||
|
if (!(sender instanceof final Player player)) return false;
|
||||||
|
if (args.length > 0) {
|
||||||
|
if (args[0].equalsIgnoreCase("list")) {
|
||||||
|
if (!player.hasPermission("unique.moderation.vanish.list")) {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "no-perms-msg");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (vanishManager.getHiddenUsernames().size() > 0) {
|
||||||
|
final StringBuilder builder = new StringBuilder();
|
||||||
|
for (int i = 0; i < vanishManager.getHiddenUsernames().size(); i++) {
|
||||||
|
builder.append(vanishManager.getHiddenUsernames().get(i));
|
||||||
|
if (i < vanishManager.getHiddenUsernames().size() - 1) {
|
||||||
|
builder.append(", ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "vanish-hidden-list-msg", Placeholder.unparsed("playerlist", String.valueOf(builder)));
|
||||||
|
} else {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "vanish-hidden-none");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
} else if (args[0].equalsIgnoreCase("help") || args[0].equalsIgnoreCase("?")) {
|
||||||
|
return false;
|
||||||
|
} else if (player.hasPermission("unique.moderation.vanish.other")) {
|
||||||
|
Player target = plugin.getServer().getPlayer(args[0]);
|
||||||
|
if (target == null) target = plugin.getServer().getPlayerExact(args[0]);
|
||||||
|
if (target == null) {
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "player-not-online-msg");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!vanishManager.isVanished(target)) {
|
||||||
|
vanishManager.vanishPlayer(target);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "vanish-enabled-msg");
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "vanish-enabled-others-msg", Placeholder.component("player", player.displayName()));
|
||||||
|
plugin.getServer().broadcast(messageUtil.getMessage("quit-msg", Placeholder.component("player", player.displayName())));
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
vanishManager.showPlayer(target);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "vanish-disabled-msg");
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "vanish-disabled-others-msg", Placeholder.component("player", player.displayName()));
|
||||||
|
plugin.getServer().broadcast(messageUtil.getMessage("join-msg", Placeholder.component("player", player.displayName())));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (player.hasPermission("unique.moderation.vanish.use")) {
|
||||||
|
if (!vanishManager.isVanished(player)) {
|
||||||
|
vanishManager.vanishPlayer(player);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "vanish-enabled-msg");
|
||||||
|
plugin.getServer().broadcast(messageUtil.getMessage("quit-msg", Placeholder.component("player", player.displayName())));
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
vanishManager.showPlayer(player);
|
||||||
|
messageUtil.sendMessageWithPrefix(player, "vanish-disabled-msg");
|
||||||
|
plugin.getServer().broadcast(messageUtil.getMessage("join-msg", Placeholder.component("player", player.displayName())));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
package space.sangelo.unique.listeners;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
import space.sangelo.unique.Unique;
|
||||||
|
import space.sangelo.unique.util.MessageUtil;
|
||||||
|
|
||||||
|
public class PlayerConnectionListener implements Listener {
|
||||||
|
private final Unique plugin;
|
||||||
|
private final MessageUtil messageUtil;
|
||||||
|
|
||||||
|
public PlayerConnectionListener(final Unique plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
this.messageUtil = plugin.getMessageUtil();
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onJoin(final PlayerJoinEvent event) {
|
||||||
|
event.joinMessage(messageUtil.getMessage("join-msg", Placeholder.component("player", event.getPlayer().displayName())));
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onLeave(final PlayerQuitEvent event) {
|
||||||
|
event.quitMessage(messageUtil.getMessage("quit-msg", Placeholder.component("player", event.getPlayer().displayName())));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
package space.sangelo.unique.listeners;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
import org.bukkit.event.player.PlayerRespawnEvent;
|
||||||
|
import space.sangelo.unique.Unique;
|
||||||
|
|
||||||
|
public class SpawnListener implements Listener {
|
||||||
|
private final Unique plugin;
|
||||||
|
|
||||||
|
public SpawnListener(final Unique plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPlayerJoin(final PlayerJoinEvent e) {
|
||||||
|
// Spawn the player on the spawn location on first join, if one's set.
|
||||||
|
final Player p = e.getPlayer();
|
||||||
|
if (!e.getPlayer().hasPlayedBefore()) {
|
||||||
|
final Location location = plugin.getConfig().getLocation("spawn");
|
||||||
|
if (location != null) {
|
||||||
|
p.teleport(location);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPlayerRespawn(final PlayerRespawnEvent e) {
|
||||||
|
// Respawn the player at the spawn location, if one's set.
|
||||||
|
final Location location = plugin.getConfig().getLocation("spawn");
|
||||||
|
if (location != null) {
|
||||||
|
if (e.getPlayer().getBedSpawnLocation() == null) {
|
||||||
|
e.setRespawnLocation(location);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
package space.sangelo.unique.listeners;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.player.PlayerLoginEvent;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
import space.sangelo.unique.Unique;
|
||||||
|
import space.sangelo.unique.util.VanishManager;
|
||||||
|
|
||||||
|
public class VanishLoginListener implements Listener {
|
||||||
|
private final Unique plugin;
|
||||||
|
private final VanishManager vanishManager;
|
||||||
|
|
||||||
|
public VanishLoginListener(final Unique plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
this.vanishManager = plugin.getVanishManager();
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void handleLogin(final PlayerLoginEvent event) {
|
||||||
|
final Player player = event.getPlayer();
|
||||||
|
|
||||||
|
if (vanishManager.isVanished(player)) {
|
||||||
|
vanishManager.showPlayer(player);
|
||||||
|
}
|
||||||
|
if (player.hasPermission("unique.moderation.vanish.see")) return;
|
||||||
|
for (final Player p1 : plugin.getServer().getOnlinePlayers()) {
|
||||||
|
if (vanishManager.isVanished(p1) && !player.equals(p1)) {
|
||||||
|
player.hidePlayer(plugin, p1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void handleQuit(final PlayerQuitEvent event) {
|
||||||
|
final Player player = event.getPlayer();
|
||||||
|
|
||||||
|
if (vanishManager.isVanished(player)) {
|
||||||
|
vanishManager.showPlayer(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
package space.sangelo.unique.listeners;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.entity.EntityDamageByBlockEvent;
|
||||||
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
|
import org.bukkit.event.entity.EntityPickupItemEvent;
|
||||||
|
import org.bukkit.event.entity.EntityTargetEvent;
|
||||||
|
import space.sangelo.unique.Unique;
|
||||||
|
import space.sangelo.unique.util.VanishManager;
|
||||||
|
|
||||||
|
public class VanishPlayerListener implements Listener {
|
||||||
|
|
||||||
|
private final VanishManager vanishManager;
|
||||||
|
|
||||||
|
public VanishPlayerListener(final Unique plugin) {
|
||||||
|
this.vanishManager = plugin.getVanishManager();
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onEntityTarget(final EntityTargetEvent event) {
|
||||||
|
if (event.getEntity() instanceof Player player && vanishManager.isVanished(player)) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onDamageByBlock(final EntityDamageByBlockEvent event) {
|
||||||
|
if (event.getEntity() instanceof Player player && vanishManager.isVanished(player)) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onDamageByEntity(final EntityDamageByEntityEvent event) {
|
||||||
|
if (event.getDamager() instanceof Player player && vanishManager.isVanished(player)) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
} else if (event.getEntity() instanceof Player player && vanishManager.isVanished(player)) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onItemPickup(final EntityPickupItemEvent event) {
|
||||||
|
if (event.getEntity() instanceof Player player && vanishManager.isVanished(player)) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
60
src/main/java/space/sangelo/unique/util/MessageUtil.java
Normal file
60
src/main/java/space/sangelo/unique/util/MessageUtil.java
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
package space.sangelo.unique.util;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
|
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
import space.sangelo.unique.Unique;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
|
||||||
|
public class MessageUtil {
|
||||||
|
|
||||||
|
private final FileConfiguration externalConfig;
|
||||||
|
private final FileConfiguration internalConfig;
|
||||||
|
private final Component prefix;
|
||||||
|
|
||||||
|
public MessageUtil(final Unique plugin, final File messageConfig) {
|
||||||
|
if (!messageConfig.exists()) {
|
||||||
|
plugin.saveResource(messageConfig.getName(), false);
|
||||||
|
}
|
||||||
|
externalConfig = YamlConfiguration.loadConfiguration(messageConfig);
|
||||||
|
|
||||||
|
final InputStream inputStream = plugin.getResource(messageConfig.getName());
|
||||||
|
|
||||||
|
assert inputStream != null;
|
||||||
|
final InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
|
||||||
|
internalConfig = YamlConfiguration.loadConfiguration(inputStreamReader);
|
||||||
|
|
||||||
|
prefix = MiniMessage.miniMessage().deserialize(getString("prefix"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sendMessage(final CommandSender sender, final String configString, final TagResolver... tagResolvers) {
|
||||||
|
sender.sendMessage(getMessage(configString, tagResolvers));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sendMessageWithPrefix(final CommandSender sender, final String configString, final TagResolver... tagResolvers) {
|
||||||
|
sender.sendMessage(getMessageWithPrefix(configString, tagResolvers));
|
||||||
|
}
|
||||||
|
|
||||||
|
public Component getMessage(final String configString, final TagResolver... tagResolvers) {
|
||||||
|
return MiniMessage.miniMessage().deserialize(getString(configString), tagResolvers);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Component getMessageWithPrefix(final String configString, final TagResolver... tagResolvers) {
|
||||||
|
return prefix.append(getMessage(configString, tagResolvers));
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getString(final String configString) {
|
||||||
|
if (externalConfig.contains(configString)) {
|
||||||
|
return externalConfig.getString(configString);
|
||||||
|
} else {
|
||||||
|
return internalConfig.getString(configString);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
51
src/main/java/space/sangelo/unique/util/VanishManager.java
Normal file
51
src/main/java/space/sangelo/unique/util/VanishManager.java
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
package space.sangelo.unique.util;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import space.sangelo.unique.Unique;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
public class VanishManager {
|
||||||
|
private final ArrayList<String> hiddenUsernames;
|
||||||
|
|
||||||
|
private final Unique plugin;
|
||||||
|
|
||||||
|
public VanishManager(final Unique plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
this.hiddenUsernames = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isVanished(final Player player) {
|
||||||
|
return hiddenUsernames.contains(player.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void vanishPlayer(final Player p) {
|
||||||
|
final String vanishModLogsMsg = ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("prefix") + plugin.getConfig().getString("vanish-mod-logs-msg"));
|
||||||
|
hiddenUsernames.add(p.getName());
|
||||||
|
for (final Player p1 : plugin.getServer().getOnlinePlayers()) {
|
||||||
|
if (p1 == p) {
|
||||||
|
continue;
|
||||||
|
} else if (p1.hasPermission("unique.moderation.vanish.see")) {
|
||||||
|
p1.sendMessage(vanishModLogsMsg.replace("%p", p.getName()));
|
||||||
|
continue;
|
||||||
|
} else if (p1.hasPermission("unique.moderation.vanish.list")) {
|
||||||
|
p1.hidePlayer(plugin, p);
|
||||||
|
p1.sendMessage(vanishModLogsMsg.replace("%p", p.getName()));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
p1.hidePlayer(plugin, p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void showPlayer(final Player player) {
|
||||||
|
hiddenUsernames.remove(player.getName());
|
||||||
|
for (final Player p1 : plugin.getServer().getOnlinePlayers()) {
|
||||||
|
p1.showPlayer(plugin, player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<String> getHiddenUsernames() {
|
||||||
|
return hiddenUsernames;
|
||||||
|
}
|
||||||
|
}
|
20
src/main/resources/config.yml
Normal file
20
src/main/resources/config.yml
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# __ __ _
|
||||||
|
# / / / /___ (_)___ ___ _____
|
||||||
|
# / / / / __ \/ / __ `/ / / / _ \
|
||||||
|
#/ /_/ / / / / / /_/ / /_/ / __/
|
||||||
|
#\____/_/ /_/_/\__, /\__,_/\___/
|
||||||
|
# /_/
|
||||||
|
|
||||||
|
# !! INFO
|
||||||
|
# Placeholders:
|
||||||
|
# %p is the player's name.
|
||||||
|
# %t is the target's name.
|
||||||
|
# %c is the placeholder for the command itself.
|
||||||
|
# %u is the command's usage.
|
||||||
|
# !! Do not replace the placeholders, or change them up, as it will break things !!
|
||||||
|
# For example:
|
||||||
|
# - Do not do this: Replace %c in no-args-msg with %p.
|
||||||
|
# - Do this: Move it around inside of the message, so it makes sense when you translate messages.
|
||||||
|
|
||||||
|
# This is the command cooldown in seconds. You can type 0 to disable it, or any other number to enable it. Default is 3.
|
||||||
|
spawn-command-cooldown: 3
|
78
src/main/resources/messages.yml
Normal file
78
src/main/resources/messages.yml
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
# Sets the prefix for chat messages.
|
||||||
|
prefix: '<dark_gray>[<dark_green>Unique</dark_green>]</dark_gray> '
|
||||||
|
print-msg: '<dark_gray>(print)</dark_gray> <message>'
|
||||||
|
|
||||||
|
# This message will be sent when a player couldn't be found.
|
||||||
|
player-not-online-msg: "<red>This player is not online or doesn't exist.</red>"
|
||||||
|
# This message is sent to the console, when they try to run a command that only works on players.
|
||||||
|
console-specify-player: '<red>Please specify a player.</red>'
|
||||||
|
# This is the message that will be sent to the console when it has to be ran in game.
|
||||||
|
console-not-allowed-msg: "<red>You need to be on the server to use this command.</red>"
|
||||||
|
# This is the message that is sent to the player, when they don't have the required permissions
|
||||||
|
no-perms-msg: "<red>You don't have the required permissions to execute this command.</red>"
|
||||||
|
# This is the error that will be sent when no arguments were given.
|
||||||
|
no-args-msg: "<red>No arguments were given. Usage: <gold>/<command> <usage>.</red>"
|
||||||
|
# This are the force reload messages.
|
||||||
|
force-reload-msg: "<dark_green>Forcing reload of the plugin..."
|
||||||
|
force-reload-complete-msg: "<dark_green>Forcing reload of the plugin <green>complete</green><dark_green>!"
|
||||||
|
# These are the join and leave messages.
|
||||||
|
join-msg: "<dark_gray>[<dark_green>+</dark_green>] <green><player></green></dark_gray>"
|
||||||
|
quit-msg: "<dark_gray>[<dark_red>-</dark_red>] <red><player></red>"
|
||||||
|
|
||||||
|
# These are the toggle messages for god mode.
|
||||||
|
god-enabled-msg: '<dark_green>God mode is now <green>enabled</green><dark_green>.'
|
||||||
|
god-disabled-msg: '<dark_green>God mode is now <red>disabled</red><dark_green>.'
|
||||||
|
# These are the toggle messages for god mode, on the sender's side.
|
||||||
|
god-enabled-others-msg: '<dark_green>You have <green>enabled</green> god mode for <gold><target></gold>.</dark_green>'
|
||||||
|
god-disabled-others-msg: '<dark_green>You have <red>disabled</red> god mode for <gold><target></gold>.</dark_green>'
|
||||||
|
# These are the toggle messages for god mode, on the target's side.
|
||||||
|
god-enabled-target-msg: '<dark_green>God mode has now been <green>enabled</green> for you by <gold><player></gold></dark_green>.'
|
||||||
|
god-disabled-target-msg: '<dark_green>God mode has now been <red>disabled</red> for you by <gold><player></gold><dark_green>.'
|
||||||
|
|
||||||
|
# These are the toggle messages for flight.
|
||||||
|
flight-enabled-msg: '<dark_green>Flight is now <green>enabled</green>.'
|
||||||
|
flight-disabled-msg: '<dark_green>Flight is now <red>disabled</red><dark_green>.'
|
||||||
|
# These are the toggle messages for flight, on the sender's side.
|
||||||
|
flight-enabled-others-msg: '<dark_green>You have <green>enabled</green> flight for <gold><target></gold><dark_green>.'
|
||||||
|
flight-disabled-others-msg: '<dark_green>You have <red>disabled</red> flight for <gold><target></gold><dark_green>.'
|
||||||
|
# These are the toggle messages for flight, on the target's side.
|
||||||
|
flight-enabled-target-msg: '<dark_green>Flight has now been <green>enabled</green> for you by <gold><player></gold><dark_green>.'
|
||||||
|
flight-disabled-target-msg: '<dark_green>Flight has now been <red>disabled</red> for you by <gold><player></gold><dark_green>.'
|
||||||
|
|
||||||
|
# These are the toggle messages for vanish.
|
||||||
|
vanish-enabled-msg: '<dark_green>You are now <green>invisible</green><dark_green>.'
|
||||||
|
vanish-disabled-msg: '<dark_green>You are now <red>visible</red><dark_green>.'
|
||||||
|
vanish-enabled-others-msg: '<gold><target></gold><dark_green> is now <green>invisible</green><dark_green>.'
|
||||||
|
vanish-disabled-others-msg: '<gold><target></gold><dark_green> is now <red>visible</red><dark_green>.'
|
||||||
|
# Other vanish related messages.
|
||||||
|
vanish-hidden-list-msg: '<dark_green>Hidden players: <gold><playerlist></gold>'
|
||||||
|
vanish-hidden-none-msg: '<dark_green>There are no hidden players.'
|
||||||
|
vanish-mod-logs-msg: '<dark_green><player> <gray>has vanished.'
|
||||||
|
|
||||||
|
|
||||||
|
# These are the feed messages.
|
||||||
|
feed-msg: "<dark_green>You have now been fed."
|
||||||
|
feed-others-msg: '<dark_green>You have now fed <gold><target></gold></dark_green>.'
|
||||||
|
feed-target-msg: '<dark_green>You have been fed by <gold><player></gold></dark_green>.'
|
||||||
|
|
||||||
|
# These are the heal messages.
|
||||||
|
heal-msg: "<dark_green>You have now been healed."
|
||||||
|
heal-others-msg: '<dark_green>You have now healed <gold><target></gold><dark_green>.'
|
||||||
|
heal-target-msg: '<dark_green>You have been healed by <gold><player></gold><dark_green>.'
|
||||||
|
|
||||||
|
# These are the gamemode switcher messages.
|
||||||
|
gamemode-switcher-msg: '<dark_green>Your gamemode has been updated to <gold><gamemode></gold>.</dark_green>'
|
||||||
|
gamemode-already-set-msg: '<red>You already are in <gold><gamemode></gold>.</red>'
|
||||||
|
gamemode-already-set-others-msg: "<red><gold><target></gold>'s gamemode is already set to <gold><gamemode></gold>.</red>"
|
||||||
|
gamemode-switch-others-msg: "<dark_green>You have changed <gold><target>'s</gold> to <gold><gamemode></gold>.<dark_green>"
|
||||||
|
|
||||||
|
# This is the message that is sent to the mod, when they set a new spawn point.
|
||||||
|
setspawn-msg: "<dark_green>Spawn location has now been set <green>successfully.</green>"
|
||||||
|
# This is the confirmation message that is sent to the player, when they teleport to the spawn point.
|
||||||
|
spawn-tp-msg: "<dark_green>You have been teleported to spawn."
|
||||||
|
# This is the message that is sent to the player, when they tried to teleport to the spawn point, but have to wait for the cooldown.
|
||||||
|
spawn-cooldown-msg: "<red>You cannot teleport for another <gold><remaining></gold> seconds.</red>"
|
||||||
|
# This is the message that is sent to the player, when they tried to teleport to the spawn point, but there is none set.
|
||||||
|
spawn-no-location-msg: "<red>There is no spawn location set. Couldn't initiate teleport.</red>"
|
||||||
|
# This is the message that is sent to the moderator, when they try to teleport to the spawn point, but there is none set.
|
||||||
|
spawn-mod-no-location-msg: "<red>There is no spawn location set. Couldn't initiate teleport. Use <click:run_command:setspawn><u><gold>/setspawn</gold></u></click> to set one.</red>"
|
87
src/main/resources/plugin.yml
Normal file
87
src/main/resources/plugin.yml
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
name: Unique
|
||||||
|
version: '${project.version}'
|
||||||
|
main: space.sangelo.unique.Unique
|
||||||
|
api-version: 1.18
|
||||||
|
authors: [ Sangelo ]
|
||||||
|
description: Escape the ordinary – Be Unique!
|
||||||
|
website: https://sangelo.space
|
||||||
|
commands:
|
||||||
|
unique:
|
||||||
|
description: Main Plugin Command. Just a little about page.
|
||||||
|
usage: /<command>
|
||||||
|
aliases:
|
||||||
|
- uq
|
||||||
|
- about
|
||||||
|
print:
|
||||||
|
description: Print a message.
|
||||||
|
usage: /<command> {message}
|
||||||
|
aliases:
|
||||||
|
- hello
|
||||||
|
- test
|
||||||
|
- message
|
||||||
|
god:
|
||||||
|
description: Become invulnerable! Or let anyone else be.
|
||||||
|
usage: /<command> [player]
|
||||||
|
fly:
|
||||||
|
description: Be able to fly! Or let anyone else be.
|
||||||
|
usage: /<command> [player]
|
||||||
|
vanish:
|
||||||
|
description: Become invisible to others!
|
||||||
|
usage: /<command>
|
||||||
|
aliases:
|
||||||
|
- v
|
||||||
|
- invis
|
||||||
|
- invisible
|
||||||
|
heal:
|
||||||
|
description: Heal yourself (or if you'd like, someone else)!
|
||||||
|
usage: /<command> [player]
|
||||||
|
feed:
|
||||||
|
description: Feed yourself (or if you'd like, someone else)!
|
||||||
|
usage: /<command> [player]
|
||||||
|
aliases:
|
||||||
|
- food
|
||||||
|
gmc:
|
||||||
|
description: Set your gamemode to creative.
|
||||||
|
usage: /<command> [player]
|
||||||
|
aliases:
|
||||||
|
- gamemodec
|
||||||
|
- modec
|
||||||
|
- creative
|
||||||
|
- c
|
||||||
|
gms:
|
||||||
|
description: Set your gamemode to survival.
|
||||||
|
usage: /<command> [player]
|
||||||
|
aliases:
|
||||||
|
- gamemodes
|
||||||
|
- modes
|
||||||
|
- survival
|
||||||
|
- s
|
||||||
|
gma:
|
||||||
|
description: Set your gamemode to adventure.
|
||||||
|
usage: /<command> [player]
|
||||||
|
aliases:
|
||||||
|
- gamemodea
|
||||||
|
- modea
|
||||||
|
- adventure
|
||||||
|
- a
|
||||||
|
gmsp:
|
||||||
|
description: Set your gamemode to spectator.
|
||||||
|
usage: /<command> [player]
|
||||||
|
aliases:
|
||||||
|
- gamemodesp
|
||||||
|
- modesp
|
||||||
|
- spectator
|
||||||
|
- sp
|
||||||
|
setspawn:
|
||||||
|
description: Sets the spawnpoint to the current player location.
|
||||||
|
usage: /<command>
|
||||||
|
spawn:
|
||||||
|
description: Teleports the player to the spawnpoint, if there is one specified.
|
||||||
|
usage: /<command>
|
||||||
|
forcereload:
|
||||||
|
description: Force the server to reload the plugin configuration.
|
||||||
|
usage: /<command>
|
||||||
|
aliases:
|
||||||
|
- rlu
|
||||||
|
- rlunique
|
||||||
|
- reloadunique
|
Loading…
Reference in a new issue