From a33204b7b87b8fe25885685e0a362fe0008b500b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beatrice=20Dellac=C3=A0?= Date: Fri, 11 Nov 2022 18:25:22 +0100 Subject: [PATCH] Add listener to globally disable specific blocks --- pom.xml | 6 ++ .../beatrice/limbomanager/LimboManager.java | 4 + .../listeners/RiskyBlocksHandler.java | 93 +++++++++++++++++++ 3 files changed, 103 insertions(+) create mode 100644 src/main/java/wtf/beatrice/limbomanager/listeners/RiskyBlocksHandler.java diff --git a/pom.xml b/pom.xml index b606446..3712b92 100644 --- a/pom.xml +++ b/pom.xml @@ -30,6 +30,12 @@ 1.19.2-R0.1-SNAPSHOT provided + + + org.jetbrains + annotations + 23.0.0 + \ No newline at end of file diff --git a/src/main/java/wtf/beatrice/limbomanager/LimboManager.java b/src/main/java/wtf/beatrice/limbomanager/LimboManager.java index 5d4a416..d3ede33 100644 --- a/src/main/java/wtf/beatrice/limbomanager/LimboManager.java +++ b/src/main/java/wtf/beatrice/limbomanager/LimboManager.java @@ -3,7 +3,9 @@ package wtf.beatrice.limbomanager; import org.bukkit.Bukkit; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; +import wtf.beatrice.limbomanager.listeners.CommandCanceller; import wtf.beatrice.limbomanager.listeners.PlayerHider; +import wtf.beatrice.limbomanager.listeners.RiskyBlocksHandler; public class LimboManager extends JavaPlugin { @@ -17,6 +19,8 @@ public class LimboManager extends JavaPlugin { pluginManager = Bukkit.getServer().getPluginManager(); pluginManager.registerEvents(new PlayerHider(), this); + pluginManager.registerEvents(new CommandCanceller(), this); + pluginManager.registerEvents(new RiskyBlocksHandler(), this); } diff --git a/src/main/java/wtf/beatrice/limbomanager/listeners/RiskyBlocksHandler.java b/src/main/java/wtf/beatrice/limbomanager/listeners/RiskyBlocksHandler.java new file mode 100644 index 0000000..4e17d43 --- /dev/null +++ b/src/main/java/wtf/beatrice/limbomanager/listeners/RiskyBlocksHandler.java @@ -0,0 +1,93 @@ +package wtf.beatrice.limbomanager.listeners; + +import org.bukkit.Material; +import org.bukkit.event.Cancellable; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockMultiPlaceEvent; +import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.inventory.*; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; + +public class RiskyBlocksHandler implements Listener +{ + List riskyMaterials = new ArrayList<>() + {{ + add(Material.TNT); + add(Material.ANVIL); + add(Material.CHIPPED_ANVIL); + add(Material.DAMAGED_ANVIL); + add(Material.MINECART); + add(Material.CHEST_MINECART); + add(Material.COMMAND_BLOCK_MINECART); + add(Material.HOPPER_MINECART); + add(Material.FURNACE_MINECART); + add(Material.TNT_MINECART); + add(Material.COMMAND_BLOCK); + add(Material.CHAIN_COMMAND_BLOCK); + add(Material.CHAIN_COMMAND_BLOCK); + }}; + + + @EventHandler + public void onBlockPlace(BlockPlaceEvent event) + { + checkAndCancel(event, event.getBlockPlaced().getType()); + } + + @EventHandler + public void onBlockPlace(BlockMultiPlaceEvent event) + { + checkAndCancel(event, event.getBlockPlaced().getType()); + } + + @EventHandler + public void onInventoryClick(InventoryClickEvent event) + { + if(event.getCurrentItem() != null) + { + checkAndCancel(event, event.getCurrentItem().getType()); + } + + if(event.getCursor() != null) + { + checkAndCancel(event, event.getCursor().getType()); + } + } + + @EventHandler + public void onInventoryDrag(InventoryDragEvent event) + { + if(event.getCursor() != null) + { + checkAndCancel(event, event.getCursor().getType()); + } + + checkAndCancel(event, event.getOldCursor().getType()); + } + + @EventHandler + public void onInvMoveItem(InventoryMoveItemEvent event) + { + checkAndCancel(event, event.getItem().getType()); + } + + + @EventHandler + public void onInvPickup(InventoryPickupItemEvent event) + { + checkAndCancel(event, event.getItem().getItemStack().getType()); + } + + + private void checkAndCancel(Cancellable event, @NotNull Material material) + { + if(riskyMaterials.contains(material)) + { + event.setCancelled(true); + } + } +}