diff --git a/src/main/java/com/songoda/ultimatemoderation/UltimateModeration.java b/src/main/java/com/songoda/ultimatemoderation/UltimateModeration.java index 08303f7..8c50b86 100644 --- a/src/main/java/com/songoda/ultimatemoderation/UltimateModeration.java +++ b/src/main/java/com/songoda/ultimatemoderation/UltimateModeration.java @@ -1,8 +1,7 @@ package com.songoda.ultimatemoderation; import com.songoda.ultimatemoderation.command.CommandManager; -import com.songoda.ultimatemoderation.listeners.ChatListener; -import com.songoda.ultimatemoderation.listeners.LoginListener; +import com.songoda.ultimatemoderation.listeners.*; import com.songoda.ultimatemoderation.utils.Methods; import com.songoda.ultimatemoderation.utils.SettingsManager; import org.bukkit.Bukkit; @@ -64,6 +63,9 @@ public class UltimateModeration extends JavaPlugin { this.commandManager = new CommandManager(this); // Register Listeners + Bukkit.getPluginManager().registerEvents(new MoveListener(this), this); + Bukkit.getPluginManager().registerEvents(new DropListener(this), this); + Bukkit.getPluginManager().registerEvents(new InventoryListener(this), this); Bukkit.getPluginManager().registerEvents(new ChatListener(this), this); Bukkit.getPluginManager().registerEvents(new LoginListener(this), this); diff --git a/src/main/java/com/songoda/ultimatemoderation/command/CommandManager.java b/src/main/java/com/songoda/ultimatemoderation/command/CommandManager.java index 114d41e..66ce746 100644 --- a/src/main/java/com/songoda/ultimatemoderation/command/CommandManager.java +++ b/src/main/java/com/songoda/ultimatemoderation/command/CommandManager.java @@ -32,6 +32,7 @@ public class CommandManager implements CommandExecutor { instance.getCommand("Vanish").setExecutor(this); instance.getCommand("ViewEnderChest").setExecutor(this); instance.getCommand("InvSee").setExecutor(this); + instance.getCommand("Freeze").setExecutor(this); AbstractCommand commandUltimateModeration = addCommand(new CommandUltimateModeration()); addCommand(new CommandClearChat()); @@ -40,6 +41,7 @@ public class CommandManager implements CommandExecutor { addCommand(new CommandVanish()); addCommand(new CommandViewEnderChest()); addCommand(new CommandInvSee()); + addCommand(new CommandFreeze()); addCommand(new CommandSettings(commandUltimateModeration)); addCommand(new CommandReload(commandUltimateModeration)); diff --git a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandFreeze.java b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandFreeze.java new file mode 100644 index 0000000..b3bb049 --- /dev/null +++ b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandFreeze.java @@ -0,0 +1,70 @@ +package com.songoda.ultimatemoderation.command.commands; + +import com.songoda.ultimatemoderation.UltimateModeration; +import com.songoda.ultimatemoderation.command.AbstractCommand; +import com.songoda.ultimatemoderation.utils.Methods; +import org.bukkit.Bukkit; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +public class CommandFreeze extends AbstractCommand { + + private static List frozen = new ArrayList<>(); + + public CommandFreeze() { + super(true, true,"Freeze"); + } + + @Override + protected ReturnType runCommand(UltimateModeration instance, CommandSender sender, String... args) { + if (args.length != 1) + return ReturnType.SYNTAX_ERROR; + + Player player = Bukkit.getPlayer(args[0]); + + if (player == null) { + sender.sendMessage(instance.getReferences().getPrefix() + "That player does not exist or is not online."); + return ReturnType.FAILURE; + } + + if (frozen.contains(player.getUniqueId())) { + frozen.remove(player.getUniqueId()); + sender.sendMessage(instance.getReferences().getPrefix() + instance.getLocale().getMessage("command.freeze.remove", player.getDisplayName())); + player.sendMessage(instance.getReferences().getPrefix() + instance.getLocale().getMessage("command.freeze.alertremove")); + } else { + frozen.add(player.getUniqueId()); + sender.sendMessage(instance.getReferences().getPrefix() + instance.getLocale().getMessage("command.freeze.add", player.getDisplayName())); + player.sendMessage(instance.getReferences().getPrefix() + instance.getLocale().getMessage("command.freeze.alertadd")); + } + + return ReturnType.SUCCESS; + } + + public static boolean isFrozen(Player player) { + return frozen.contains(player.getUniqueId()); + } + + @Override + protected List onTab(UltimateModeration instance, CommandSender sender, String... args) { + return null; + } + + @Override + public String getPermissionNode() { + return "um.freeze"; + } + + @Override + public String getSyntax() { + return "/Freeze "; + } + + @Override + public String getDescription() { + return "Allows you to freeze a player."; + } +} diff --git a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandInvSee.java b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandInvSee.java index 008bd52..c103109 100644 --- a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandInvSee.java +++ b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandInvSee.java @@ -11,7 +11,7 @@ import java.util.List; public class CommandInvSee extends AbstractCommand { public CommandInvSee() { - super(true, true,"Inv1See"); + super(true, true,"InvSee"); } @Override @@ -35,10 +35,6 @@ public class CommandInvSee extends AbstractCommand { return null; } - private boolean isForced(String[] args) { - return args.length != 0 && args[0].equals("force"); - } - @Override public String getPermissionNode() { return "um.invsee"; @@ -51,6 +47,6 @@ public class CommandInvSee extends AbstractCommand { @Override public String getDescription() { - return "Allows you to see inside of a players inventory.\n"; + return "Allows you to see inside of a players inventory."; } } diff --git a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandRandomPlayer.java b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandRandomPlayer.java index 8d6a643..0ea74aa 100644 --- a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandRandomPlayer.java +++ b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandRandomPlayer.java @@ -47,6 +47,6 @@ public class CommandRandomPlayer extends AbstractCommand { @Override public String getDescription() { - return "Allows you to randomly teleport to a player on the server."; + return "Allows you to randomly teleport to a player on the server."; } } diff --git a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandViewEnderChest.java b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandViewEnderChest.java index d2e8ed4..86ec12a 100644 --- a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandViewEnderChest.java +++ b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandViewEnderChest.java @@ -38,10 +38,6 @@ public class CommandViewEnderChest extends AbstractCommand { return null; } - private boolean isForced(String[] args) { - return args.length != 0 && args[0].equals("force"); - } - @Override public String getPermissionNode() { return "um.viewenderchest"; @@ -54,6 +50,6 @@ public class CommandViewEnderChest extends AbstractCommand { @Override public String getDescription() { - return "Allows you to see inside of a players enderchest.\n"; + return "Allows you to see inside of a players enderchest."; } } diff --git a/src/main/java/com/songoda/ultimatemoderation/listeners/DropListener.java b/src/main/java/com/songoda/ultimatemoderation/listeners/DropListener.java new file mode 100644 index 0000000..6a07d39 --- /dev/null +++ b/src/main/java/com/songoda/ultimatemoderation/listeners/DropListener.java @@ -0,0 +1,27 @@ +package com.songoda.ultimatemoderation.listeners; + +import com.songoda.ultimatemoderation.UltimateModeration; +import com.songoda.ultimatemoderation.command.commands.CommandFreeze; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerDropItemEvent; +import org.bukkit.event.player.PlayerMoveEvent; + +public class DropListener implements Listener { + + private UltimateModeration instance; + + public DropListener(UltimateModeration ultimateModeration) { + this.instance = ultimateModeration; + } + + @EventHandler + public void onMove(PlayerDropItemEvent event) { + Player player = event.getPlayer(); + if (CommandFreeze.isFrozen(player)) { + event.setCancelled(true); + player.sendMessage(instance.getReferences().getPrefix() + instance.getLocale().getMessage("command.freeze.nope")); + } + } +} diff --git a/src/main/java/com/songoda/ultimatemoderation/listeners/InventoryListener.java b/src/main/java/com/songoda/ultimatemoderation/listeners/InventoryListener.java new file mode 100644 index 0000000..ba79f35 --- /dev/null +++ b/src/main/java/com/songoda/ultimatemoderation/listeners/InventoryListener.java @@ -0,0 +1,28 @@ +package com.songoda.ultimatemoderation.listeners; + +import com.songoda.ultimatemoderation.UltimateModeration; +import com.songoda.ultimatemoderation.command.commands.CommandFreeze; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.player.PlayerDropItemEvent; + +public class InventoryListener implements Listener { + + private UltimateModeration instance; + + public InventoryListener(UltimateModeration ultimateModeration) { + this.instance = ultimateModeration; + } + + @EventHandler + public void onMove(InventoryClickEvent event) { + if (!(event.getWhoClicked() instanceof Player)) return; + Player player = (Player)event.getWhoClicked(); + if (CommandFreeze.isFrozen(player)) { + event.setCancelled(true); + player.sendMessage(instance.getReferences().getPrefix() + instance.getLocale().getMessage("command.freeze.nope")); + } + } +} diff --git a/src/main/java/com/songoda/ultimatemoderation/listeners/MoveListener.java b/src/main/java/com/songoda/ultimatemoderation/listeners/MoveListener.java new file mode 100644 index 0000000..26b0fea --- /dev/null +++ b/src/main/java/com/songoda/ultimatemoderation/listeners/MoveListener.java @@ -0,0 +1,28 @@ +package com.songoda.ultimatemoderation.listeners; + +import com.songoda.ultimatemoderation.UltimateModeration; +import com.songoda.ultimatemoderation.command.commands.CommandFreeze; +import com.songoda.ultimatemoderation.command.commands.CommandVanish; +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.PlayerMoveEvent; + +public class MoveListener implements Listener { + + private UltimateModeration instance; + + public MoveListener(UltimateModeration ultimateModeration) { + this.instance = ultimateModeration; + } + + @EventHandler + public void onMove(PlayerMoveEvent event) { + Player player = event.getPlayer(); + if (CommandFreeze.isFrozen(player)) { + event.setCancelled(true); + player.sendMessage(instance.getReferences().getPrefix() + instance.getLocale().getMessage("command.freeze.nope")); + } + } +} diff --git a/src/main/resources/en_US.lang b/src/main/resources/en_US.lang index 1db4ef5..ae34a7c 100644 --- a/src/main/resources/en_US.lang +++ b/src/main/resources/en_US.lang @@ -11,4 +11,10 @@ command.togglechat.bypass = "&aYou were immune to the chat toggle because of you command.togglechat.muted = "&cChat is currently disabled, try again later." command.vanish.toggledOn = "&7You are now visible." -command.vanish.toggledOff = "&7You are now vanished." \ No newline at end of file +command.vanish.toggledOff = "&7You are now vanished." + +command.freeze.add = "&7You have frozen &6%player%&7 successfully."; +command.freeze.remove = "&7You have unfrozen &6%player%&7 successfully."; +command.freeze.alertadd = "&7You have been frozen."; +command.freeze.alertremove = "&7You have been unfrozen."; +command.freeze.nope = "&cYou cannot do that because you are currently frozen..."; \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 4ead7fc..578cb20 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -39,4 +39,8 @@ commands: InvSee: description: InvSee default: false - usage: /invsee \ No newline at end of file + usage: /invsee + Freeze: + description: Freeze + default: false + usage: /freeze \ No newline at end of file