From 4dc64ae1d99c8c083d1d79b49e3609faa808f72a Mon Sep 17 00:00:00 2001 From: mathias Date: Sat, 3 Aug 2019 00:19:56 +0300 Subject: [PATCH] Command changes --- src/main/java/pw/kaboom/extras/Main.java | 3 - .../extras/modules/player/PlayerCommand.java | 34 +++++++- .../modules/player/PlayerConnection.java | 83 ++++++++----------- .../extras/modules/player/PlayerInteract.java | 2 +- .../modules/player/PlayerInventory.java | 65 --------------- .../extras/modules/server/ServerAutosave.java | 4 +- .../extras/modules/server/ServerCommand.java | 28 +++++++ src/main/resources/plugin.yml | 1 - 8 files changed, 99 insertions(+), 121 deletions(-) delete mode 100644 src/main/java/pw/kaboom/extras/modules/player/PlayerInventory.java diff --git a/src/main/java/pw/kaboom/extras/Main.java b/src/main/java/pw/kaboom/extras/Main.java index 12b4066..d83cf12 100644 --- a/src/main/java/pw/kaboom/extras/Main.java +++ b/src/main/java/pw/kaboom/extras/Main.java @@ -9,8 +9,6 @@ import org.bukkit.Material; import org.bukkit.block.BlockFace; import org.bukkit.plugin.java.JavaPlugin; -/*import com.comphenix.protocol.ProtocolLibrary;*/ - import com.destroystokyo.paper.profile.PlayerProfile; public class Main extends JavaPlugin { @@ -613,7 +611,6 @@ public class Main extends JavaPlugin { this.getServer().getPluginManager().registerEvents(new PlayerConnection(this), this); this.getServer().getPluginManager().registerEvents(new PlayerDamage(), this); this.getServer().getPluginManager().registerEvents(new PlayerInteract(this), this); - /*ProtocolLibrary.getProtocolManager().addPacketListener(new PlayerInventory(this));*/ /* Server-related modules */ new AutosaveCheck().runTaskTimerAsynchronously(this, 0, 20); diff --git a/src/main/java/pw/kaboom/extras/modules/player/PlayerCommand.java b/src/main/java/pw/kaboom/extras/modules/player/PlayerCommand.java index c387c84..992f010 100644 --- a/src/main/java/pw/kaboom/extras/modules/player/PlayerCommand.java +++ b/src/main/java/pw/kaboom/extras/modules/player/PlayerCommand.java @@ -2,11 +2,17 @@ package pw.kaboom.extras; import java.util.UUID; +import org.bukkit.ChatColor; + +import org.bukkit.command.Command; + import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerCommandPreprocessEvent; +import org.bukkit.scheduler.BukkitRunnable; + class PlayerCommand implements Listener { private Main main; public PlayerCommand(Main main) { @@ -22,7 +28,7 @@ class PlayerCommand implements Listener { main.commandMillisList.put(playerUuid, System.currentTimeMillis()); - if (millisDifference < 400) { + if (millisDifference < 200) { event.setCancelled(true); return; } @@ -50,6 +56,32 @@ class PlayerCommand implements Listener { event.setMessage(stringBuilder.toString()); } + } else if (("/bukkit:reload".equals(arr[0].toLowerCase()) || + "/bukkit:rl".equals(arr[0].toLowerCase()) || + "/reload".equals(arr[0].toLowerCase()) || + "/rl".equals(arr[0].toLowerCase())) && + event.getPlayer().hasPermission("bukkit.command.reload")) { + if (arr.length >= 2 && + "confirm".equals(arr[1].toLowerCase())) { + event.setCancelled(true); + Command.broadcastCommandMessage(event.getPlayer(), ChatColor.RED + "Please note that this command is not supported and may cause issues when using some plugins."); + Command.broadcastCommandMessage(event.getPlayer(), ChatColor.RED + "If you encounter any issues please use the /stop command to restart your server."); + Command.broadcastCommandMessage(event.getPlayer(), ChatColor.GREEN + "Reload complete."); + } + } else if (("/restart".equals(arr[0].toLowerCase()) || + "/spigot:restart".equals(arr[0].toLowerCase())) && + event.getPlayer().hasPermission("bukkit.command.restart")) { + event.setCancelled(true); + } else if (("/minecraft:save-off".equals(arr[0].toLowerCase()) || + "/save-off".equals(arr[0].toLowerCase())) && + event.getPlayer().hasPermission("minecraft.command.save.disable")) { + event.setCancelled(true); + Command.broadcastCommandMessage(event.getPlayer(), "Automatic saving is now disabled"); + } else if (("/minecraft:stop".equals(arr[0].toLowerCase()) || + "/stop".equals(arr[0].toLowerCase())) && + event.getPlayer().hasPermission("minecraft.command.stop")) { + event.setCancelled(true); + Command.broadcastCommandMessage(event.getPlayer(), "Stopping the server"); } } } diff --git a/src/main/java/pw/kaboom/extras/modules/player/PlayerConnection.java b/src/main/java/pw/kaboom/extras/modules/player/PlayerConnection.java index bcb8cf9..fbf1ed5 100644 --- a/src/main/java/pw/kaboom/extras/modules/player/PlayerConnection.java +++ b/src/main/java/pw/kaboom/extras/modules/player/PlayerConnection.java @@ -6,9 +6,10 @@ import java.util.UUID; import javax.net.ssl.HttpsURLConnection; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Chunk; -import org.bukkit.Location; +import org.bukkit.World; import org.bukkit.entity.Player; @@ -20,18 +21,19 @@ import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerLoginEvent.Result; -import org.bukkit.event.player.PlayerQuitEvent; - -import org.bukkit.inventory.ItemStack; import org.bukkit.scheduler.BukkitRunnable; +import com.destroystokyo.paper.event.player.PlayerConnectionCloseEvent; + import com.destroystokyo.paper.profile.PlayerProfile; import com.destroystokyo.paper.profile.ProfileProperty; import com.google.gson.JsonObject; import com.google.gson.JsonParser; +import org.bukkit.event.world.WorldSaveEvent; + class PlayerConnection implements Listener { private Main main; public PlayerConnection(Main main) { @@ -40,6 +42,9 @@ class PlayerConnection implements Listener { @EventHandler void onAsyncPlayerPreLogin(AsyncPlayerPreLoginEvent event) { + main.commandMillisList.put(event.getUniqueId(), System.currentTimeMillis()); + main.interactMillisList.put(event.getUniqueId(), System.currentTimeMillis()); + try { final URL nameUrl = new URL("https://api.mojang.com/users/profiles/minecraft/" + event.getName()); final HttpsURLConnection nameConnection = (HttpsURLConnection) nameUrl.openConnection(); @@ -74,6 +79,30 @@ class PlayerConnection implements Listener { } } + @EventHandler + void onPlayerConnectionClose(final PlayerConnectionCloseEvent event) { + main.commandMillisList.remove(event.getPlayerUniqueId()); + main.interactMillisList.remove(event.getPlayerUniqueId()); + + new BukkitRunnable() { + public void run() { + for (final World world : Bukkit.getWorlds()) { + for (final Chunk chunk : world.getLoadedChunks()) { + try { + chunk.getTileEntities(); + } catch (Exception e) { + new BukkitRunnable() { + public void run() { + world.regenerateChunk(chunk.getX(), chunk.getZ()); + } + }.runTask(main); + } + } + } + } + }.runTaskAsynchronously(main); + } + @EventHandler void onPlayerJoin(PlayerJoinEvent event) { final Player player = event.getPlayer(); @@ -115,8 +144,6 @@ class PlayerConnection implements Listener { event.allow(); player.setOp(true); - main.commandMillisList.put(player.getUniqueId(), System.currentTimeMillis()); - main.interactMillisList.put(player.getUniqueId(), System.currentTimeMillis()); try { player.setPlayerProfile(main.playerProfile.get(player.getName())); } catch (Exception exception) { @@ -125,47 +152,7 @@ class PlayerConnection implements Listener { } @EventHandler - void onPlayerQuit(PlayerQuitEvent event) { - final Player player = event.getPlayer(); - - main.commandMillisList.remove(player.getUniqueId()); - main.interactMillisList.remove(player.getUniqueId()); - - final Location location = player.getLocation(); - - new BukkitRunnable() { - public void run() { - for (final Chunk chunk : location.getWorld().getLoadedChunks()) { - try { - chunk.getTileEntities(); - } catch (Exception e) { - new BukkitRunnable() { - public void run() { - location.getWorld().regenerateChunk(chunk.getX(), chunk.getZ()); - } - }.runTask(main); - } - } - } - }.runTaskAsynchronously(main); - - /*final int chunkX = player.getLocation().getChunk().getX(); - final int chunkZ = player.getLocation().getChunk().getZ(); - final int radius = 4; - - for (int x = chunkX - radius; x < chunkX + radius; x++) { - for (int z = chunkZ - radius; z < chunkZ + radius; z++) { - try { - Chunk chunk = player.getLocation().getWorld().getChunkAtAsync(x, z).get(); - - try { - chunk.getTileEntities(); - } catch (Exception e) { - player.getLocation().getWorld().regenerateChunk(chunk.getX(), chunk.getZ()); - } - } catch (Exception e) { - } - } - }*/ + void onWorldSave(WorldSaveEvent event) { + System.out.println("1"); } } diff --git a/src/main/java/pw/kaboom/extras/modules/player/PlayerInteract.java b/src/main/java/pw/kaboom/extras/modules/player/PlayerInteract.java index b97d19c..94cbfab 100644 --- a/src/main/java/pw/kaboom/extras/modules/player/PlayerInteract.java +++ b/src/main/java/pw/kaboom/extras/modules/player/PlayerInteract.java @@ -23,7 +23,7 @@ class PlayerInteract implements Listener { main.interactMillisList.put(playerUuid, System.currentTimeMillis()); - if (millisDifference < 200) { + if (millisDifference < 150) { event.setCancelled(true); } } diff --git a/src/main/java/pw/kaboom/extras/modules/player/PlayerInventory.java b/src/main/java/pw/kaboom/extras/modules/player/PlayerInventory.java deleted file mode 100644 index b1d5d2f..0000000 --- a/src/main/java/pw/kaboom/extras/modules/player/PlayerInventory.java +++ /dev/null @@ -1,65 +0,0 @@ -/*package pw.kaboom.extras; - -import java.util.ArrayList; -import java.util.List; - -import org.bukkit.entity.LivingEntity; - -import org.bukkit.inventory.ItemStack; - -import com.comphenix.protocol.PacketType; -import com.comphenix.protocol.events.ListenerPriority; -import com.comphenix.protocol.events.PacketAdapter; -import com.comphenix.protocol.events.PacketContainer; -import com.comphenix.protocol.events.PacketEvent; - -class PlayerInventory extends PacketAdapter { - private Main main; - public PlayerInventory(Main main) { - /*super(main, ListenerPriority.HIGH, PacketType.Play.Server.SET_SLOT, PacketType.Play.Server.WINDOW_ITEMS); - super(main, ListenerPriority.HIGH, PacketType.Play.Server.ENTITY_METADATA); - } - - @Override - public void onPacketSending(PacketEvent event) { - try { - LivingEntity entity = (LivingEntity) event.getPacket().getEntityModifier(event).read(0); - entity.getEquipment().getArmorContents(); - } catch (Exception exception) { - LivingEntity entity = (LivingEntity) event.getPacket().getEntityModifier(event).read(0); - entity.getEquipment().setArmorContents( - new ItemStack[] {null, null, null, null} - ); - System.out.println("slot"); - } - } - - /*@Override - public void onPacketSending(PacketEvent event) { - if (event.getPacketType().equals(PacketType.Play.Server.SET_SLOT)) { - try { - event.getPacket().getItemModifier().read(0); - } catch (Exception exception) { - PacketContainer packet = event.getPacket(); - packet.getItemModifier().write(0, new ItemStack(Material.AIR)); - event.setPacket(packet); - System.out.println("slot"); - } - } else { - try { - for (int i = 0; i < 50; i++) { - event.getPacket().getItemListModifier().read(i); - } - } catch (Exception exception) { - System.out.println("window1"); - PacketContainer packet = event.getPacket(); - for (int i = 0; i < 50; i++) { - packet.getItemListModifier().write(i, null); - } - - event.setPacket(packet); - System.out.println("window"); - } - } - } -}*/ diff --git a/src/main/java/pw/kaboom/extras/modules/server/ServerAutosave.java b/src/main/java/pw/kaboom/extras/modules/server/ServerAutosave.java index c4f63bc..9da309f 100644 --- a/src/main/java/pw/kaboom/extras/modules/server/ServerAutosave.java +++ b/src/main/java/pw/kaboom/extras/modules/server/ServerAutosave.java @@ -7,10 +7,10 @@ import org.bukkit.scheduler.BukkitRunnable; class AutosaveCheck extends BukkitRunnable { public void run() { - for (final World world : Bukkit.getWorlds()) { + /*for (final World world : Bukkit.getWorlds()) { if (world.isAutoSave() == false) { world.setAutoSave(true); } - } + }*/ } } diff --git a/src/main/java/pw/kaboom/extras/modules/server/ServerCommand.java b/src/main/java/pw/kaboom/extras/modules/server/ServerCommand.java index e6f4179..e3e0f7d 100644 --- a/src/main/java/pw/kaboom/extras/modules/server/ServerCommand.java +++ b/src/main/java/pw/kaboom/extras/modules/server/ServerCommand.java @@ -1,5 +1,10 @@ package pw.kaboom.extras; +import org.bukkit.ChatColor; + +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; + import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -41,6 +46,29 @@ class ServerCommand implements Listener { event.setCommand(stringBuilder.toString()); } + } else if ("bukkit:reload".equals(arr[0].toLowerCase()) || + "bukkit:rl".equals(arr[0].toLowerCase()) || + "reload".equals(arr[0].toLowerCase()) || + "rl".equals(arr[0].toLowerCase())) { + if (arr.length >= 2 && + "confirm".equals(arr[1].toLowerCase())) { + event.setCancelled(true); + Command.broadcastCommandMessage(event.getSender(), ChatColor.RED + "Please note that this command is not supported and may cause issues when using some plugins."); + Command.broadcastCommandMessage(event.getSender(), ChatColor.RED + "If you encounter any issues please use the /stop command to restart your server."); + Command.broadcastCommandMessage(event.getSender(), ChatColor.GREEN + "Reload complete."); + } + } else if ("restart".equals(arr[0].toLowerCase()) || + "spigot:restart".equals(arr[0].toLowerCase())) { + event.setCancelled(true); + } else if ("minecraft:save-off".equals(arr[0].toLowerCase()) || + "save-off".equals(arr[0].toLowerCase())) { + event.setCancelled(true); + Command.broadcastCommandMessage(event.getSender(), "Automatic saving is now disabled"); + } else if (("minecraft:stop".equals(arr[0].toLowerCase()) || + "stop".equals(arr[0].toLowerCase())) && + !(event.getSender() instanceof BlockCommandSender)) { + event.setCancelled(true); + Command.broadcastCommandMessage(event.getSender(), "Stopping the server"); } } } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index e120785..35c5db6 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -3,7 +3,6 @@ main: pw.kaboom.extras.Main description: Plugin that adds extra functionality to the server. api-version: 1.13 version: master -#depends: [ProtocolLib] commands: clearchat: