From 0f7388f1291d2ce115d06521fd1a9ff079b3e95d Mon Sep 17 00:00:00 2001 From: JSON Derulo Date: Mon, 3 May 2021 02:55:35 -0700 Subject: [PATCH 1/2] Bump to v2.8.4 --- pom.xml | 2 +- src/main/java/network/palace/core/Core.java | 6 +- .../palace/core/commands/HelpopCommand.java | 2 +- .../palace/core/commands/KillCommand.java | 37 +++++++++++ .../palace/core/events/CommandListener.java | 61 +++++++++++++++++++ 5 files changed, 105 insertions(+), 3 deletions(-) create mode 100644 src/main/java/network/palace/core/commands/KillCommand.java create mode 100644 src/main/java/network/palace/core/events/CommandListener.java diff --git a/pom.xml b/pom.xml index 90d755f0..437a5b7d 100755 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ network.palace Core - 2.8.3 + 2.8.4 diff --git a/src/main/java/network/palace/core/Core.java b/src/main/java/network/palace/core/Core.java index 9bdbfb45..0700c5fe 100755 --- a/src/main/java/network/palace/core/Core.java +++ b/src/main/java/network/palace/core/Core.java @@ -21,6 +21,7 @@ import network.palace.core.economy.EconomyManager; import network.palace.core.economy.HonorManager; import network.palace.core.errors.RollbarHandler; +import network.palace.core.events.CommandListener; import network.palace.core.library.LibraryHandler; import network.palace.core.messagequeue.MessageHandler; import network.palace.core.mongo.MongoHandler; @@ -63,7 +64,7 @@ *

* You can access instances of other modules by depending on Core in your pom.xml, and then executing Core.get */ -@PluginInfo(name = "Core", version = "2.8.3", depend = {"ProtocolLib"}, softdepend = {"ViaVersion"}) +@PluginInfo(name = "Core", version = "2.8.4", depend = {"ProtocolLib"}, softdepend = {"ViaVersion"}) public class Core extends JavaPlugin { @Getter private URLClassLoader coreClassLoader; @Getter private static Core instance; @@ -201,6 +202,8 @@ public void onPacketSending(PacketEvent event) { registerDisabledCommands(); // Log logMessage("Core", ChatColor.DARK_GREEN + "Enabled"); + // Command Listener + new CommandListener(this); runTask(this, () -> mongoHandler.setServerOnline(getInstanceName(), getServerType(), playground, true)); @@ -244,6 +247,7 @@ private void registerCommands() { registerCommand(new FlyCommand()); registerCommand(new HelpopCommand()); registerCommand(new HonorCommand()); + registerCommand(new KillCommand()); registerCommand(new ListCommand()); registerCommand(new LockArmorStandCommand()); registerCommand(new MsgCommand()); diff --git a/src/main/java/network/palace/core/commands/HelpopCommand.java b/src/main/java/network/palace/core/commands/HelpopCommand.java index 9f08711a..35a33bf6 100644 --- a/src/main/java/network/palace/core/commands/HelpopCommand.java +++ b/src/main/java/network/palace/core/commands/HelpopCommand.java @@ -66,7 +66,7 @@ protected void handleCommand(CPlayer player, String[] args) throws CommandExcept } private void message(String sender, String message) { - String msg = ChatColor.DARK_RED + "[CM CHAT] " + ChatColor.GRAY + sender + ": " + ChatColor.WHITE + + String msg = ChatColor.DARK_PURPLE + "[CM CHAT] " + ChatColor.GRAY + sender + ": " + ChatColor.WHITE + ChatColor.translateAlternateColorCodes('&', message); for (CPlayer tp : Core.getPlayerManager().getOnlinePlayers()) { if (tp.getRank().getRankId() >= Rank.TRAINEE.getRankId()) { diff --git a/src/main/java/network/palace/core/commands/KillCommand.java b/src/main/java/network/palace/core/commands/KillCommand.java new file mode 100644 index 00000000..d1cc07eb --- /dev/null +++ b/src/main/java/network/palace/core/commands/KillCommand.java @@ -0,0 +1,37 @@ +package network.palace.core.commands; + +import network.palace.core.command.CommandException; +import network.palace.core.command.CommandMeta; +import network.palace.core.command.CoreCommand; +import network.palace.core.player.CPlayer; +import network.palace.core.player.Rank; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.ChatColor; + +/** + * @author Tourist457 + * @since 4/25/2021 + */ + +@CommandMeta(description = "Kill entities safely", rank = Rank.CM) +public class KillCommand extends CoreCommand { + + public KillCommand() { + super("kill"); + } + + @Override + protected void handleCommand(ConsoleCommandSender sender, String[] args) throws CommandException { + sender.sendMessage(ChatColor.RED + "You cannot kill entities in console!"); + } + + @Override + protected void handleCommand(CPlayer sender, String[] args) throws CommandException { + String command = String.join(" ", args); + if (!command.matches(".*r=[1-9].*")) { + sender.sendMessage(ChatColor.RED + "You cannot kill entities without a radius!"); + return; + } + sender.performCommand("minecraft:kill " + command); + } +} \ No newline at end of file diff --git a/src/main/java/network/palace/core/events/CommandListener.java b/src/main/java/network/palace/core/events/CommandListener.java new file mode 100644 index 00000000..c78d3f0d --- /dev/null +++ b/src/main/java/network/palace/core/events/CommandListener.java @@ -0,0 +1,61 @@ +package network.palace.core.events; + +import org.bukkit.event.Listener; +import org.bukkit.event.EventHandler; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; +import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.event.block.BlockRedstoneEvent; +import org.bukkit.block.Block; +import org.bukkit.block.CommandBlock; +import org.bukkit.Bukkit; + + +public class CommandListener implements Listener { + JavaPlugin plugin; + + public CommandListener(JavaPlugin plugin) { + plugin.getServer().getPluginManager().registerEvents(this, plugin); + this.plugin = plugin; + } + + @EventHandler + public void preProcessCommand(PlayerCommandPreprocessEvent event) { + if (event.getMessage().startsWith("/minecraft:kill")) { + if (!event.getMessage().matches(".*r=[1-9].*")) { + event.setCancelled(true); + event.getPlayer().sendMessage("§cYou cannot kill entities without a radius!"); + } + } + } + + @EventHandler + public void redstoneChanges(BlockRedstoneEvent e){ + Block block = e.getBlock(); + if(e.getOldCurrent() > 0 || e.getNewCurrent() == 0) return; + if (!(block.getState() instanceof CommandBlock)) return; + + CommandBlock cb = (CommandBlock)block.getState(); + try { + String[] args = cb.getCommand().split(" "); + if (args[0].equals("minecraft:kill") && !cb.getCommand().matches(".*r=[1-9].*")) { + setCommandBlock(cb, "", String.join(" ", args)); + return; + } + + if (!args[0].equals("kill")) return; + + String cmd = cb.getCommand().matches(".*r=[1-9].*") ? "minecraft:" + cb.getCommand() : ""; + setCommandBlock(cb, cmd, String.join(" ", args)); + } catch (Exception ignored) { } + } + + public void setCommandBlock(CommandBlock cb, String command, String oldCommand) { + cb.setCommand(command); + cb.update(); + + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { + cb.setCommand(String.join(" ", oldCommand)); + cb.update(); + }, 5L); + }} + From 64db276a084252119f9a83d3d6a946d0c2153885 Mon Sep 17 00:00:00 2001 From: JSON Derulo Date: Wed, 12 May 2021 14:08:07 -0700 Subject: [PATCH 2/2] Fixed quick caps sensitive issue to minecraft:kill --- .../java/network/palace/core/events/CommandListener.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/network/palace/core/events/CommandListener.java b/src/main/java/network/palace/core/events/CommandListener.java index c78d3f0d..ce61cf80 100644 --- a/src/main/java/network/palace/core/events/CommandListener.java +++ b/src/main/java/network/palace/core/events/CommandListener.java @@ -20,7 +20,7 @@ public CommandListener(JavaPlugin plugin) { @EventHandler public void preProcessCommand(PlayerCommandPreprocessEvent event) { - if (event.getMessage().startsWith("/minecraft:kill")) { + if (event.getMessage().toLowerCase().startsWith("/minecraft:kill")) { if (!event.getMessage().matches(".*r=[1-9].*")) { event.setCancelled(true); event.getPlayer().sendMessage("§cYou cannot kill entities without a radius!"); @@ -37,12 +37,12 @@ public void redstoneChanges(BlockRedstoneEvent e){ CommandBlock cb = (CommandBlock)block.getState(); try { String[] args = cb.getCommand().split(" "); - if (args[0].equals("minecraft:kill") && !cb.getCommand().matches(".*r=[1-9].*")) { + if (args[0].toLowerCase().equals("minecraft:kill") && !cb.getCommand().matches(".*r=[1-9].*")) { setCommandBlock(cb, "", String.join(" ", args)); return; } - if (!args[0].equals("kill")) return; + if (!args[0].toLowerCase().equals("kill")) return; String cmd = cb.getCommand().matches(".*r=[1-9].*") ? "minecraft:" + cb.getCommand() : ""; setCommandBlock(cb, cmd, String.join(" ", args));