From 93d5c3c67c9a41148e9f0c3c32ce53576440ec2f Mon Sep 17 00:00:00 2001 From: lars Date: Thu, 18 Jul 2024 13:17:19 +0200 Subject: [PATCH] moved world check to own class --- .../minecraft/pixelblocks/PixelBlocks.java | 1 + .../listeners/BlockBreakListener.java | 12 +----- .../listeners/BlockExplodeListener.java | 12 +----- .../listeners/BlockPlaceListener.java | 9 ++--- .../listeners/CommonEventHandlers.java | 25 +++++++++++++ .../listeners/CreatureSpawnListener.java | 12 +----- .../listeners/EntityDamageListener.java | 14 +------ .../listeners/EntityExplodeListener.java | 12 +----- .../listeners/InventoryListener.java | 37 ++----------------- .../listeners/PlayerChangeWorldListener.java | 10 +---- .../listeners/PlayerDropItemListener.java | 12 ++++++ .../listeners/PlayerMoveListener.java | 11 +----- .../listeners/PlayerPortalListener.java | 11 +----- 13 files changed, 56 insertions(+), 122 deletions(-) create mode 100644 src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/CommonEventHandlers.java create mode 100644 src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerDropItemListener.java diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/PixelBlocks.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/PixelBlocks.java index cca3a92..90fbae9 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/PixelBlocks.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/PixelBlocks.java @@ -36,6 +36,7 @@ public final class PixelBlocks extends JavaPlugin { getServer().getPluginManager().registerEvents(new BlockExplodeListener(), this); getServer().getPluginManager().registerEvents(new PlayerPortalListener(), this); getServer().getPluginManager().registerEvents(new InventoryListener(), this); + getServer().getPluginManager().registerEvents(new PlayerDropItemListener(), this); getServer().getPluginManager().registerEvents(new PlayerChangeWorldListener(), this); Objects.requireNonNull(getCommand("createpixelblock")).setExecutor(new CreatePixelBlockCommand()); diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BlockBreakListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BlockBreakListener.java index 3918616..7bb0120 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BlockBreakListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BlockBreakListener.java @@ -1,23 +1,15 @@ package eu.mhsl.minecraft.pixelblocks.listeners; import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlock; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.World; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; -import java.util.Arrays; - public class BlockBreakListener implements Listener { @EventHandler static void onBlockBreak(BlockBreakEvent event) { - Location blockLocation = event.getBlock().getLocation(); - World[] standardWorlds = {Bukkit.getWorlds().get(0), Bukkit.getWorlds().get(1), Bukkit.getWorlds().get(2)}; - - if(!Arrays.stream(standardWorlds).toList().contains(blockLocation.getWorld())) { - PixelBlock pixelBlock = PixelBlock.getPixelBlockFromWorld(blockLocation.getWorld()); + if(CommonEventHandlers.isInPixelWorld(event.getBlock().getWorld())) { + PixelBlock pixelBlock = PixelBlock.getPixelBlockFromWorld(event.getBlock().getLocation().getWorld()); assert pixelBlock != null; pixelBlock.handleBlockBreak(event, true); diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BlockExplodeListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BlockExplodeListener.java index 508ea1c..cbdf73f 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BlockExplodeListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BlockExplodeListener.java @@ -1,22 +1,12 @@ package eu.mhsl.minecraft.pixelblocks.listeners; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.World; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockExplodeEvent; -import java.util.Arrays; - public class BlockExplodeListener implements Listener { @EventHandler static void onBlockExplode(BlockExplodeEvent event) { - Location eventLocation = event.getBlock().getLocation(); - World[] standardWorlds = {Bukkit.getWorlds().get(0), Bukkit.getWorlds().get(1), Bukkit.getWorlds().get(2)}; - - if(!Arrays.stream(standardWorlds).toList().contains(eventLocation.getWorld())) { - event.setCancelled(true); - } + CommonEventHandlers.cancelIfInPixelWorld(event, event.getBlock().getWorld()); } } diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BlockPlaceListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BlockPlaceListener.java index 16bfbd8..247f97b 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BlockPlaceListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BlockPlaceListener.java @@ -21,7 +21,7 @@ public class BlockPlaceListener implements Listener { event.setCancelled(true); World playerWorld = event.getPlayer().getWorld(); - World[] standardWorlds = {Bukkit.getWorlds().get(0), Bukkit.getWorlds().get(1)}; + World[] standardWorlds = {Bukkit.getWorlds().get(0), Bukkit.getWorlds().get(1)}; // don't allow Pixelblocks in the end dimension if(Arrays.stream(standardWorlds).toList().contains(playerWorld)) { Location newBlockLocation = event.getBlock().getLocation(); @@ -40,11 +40,8 @@ public class BlockPlaceListener implements Listener { event.getPlayer().sendMessage("Du kannst nur in der Overworld oder im Nether Pixelblocks platzieren!"); } } else { - Location blockLocation = event.getBlock().getLocation(); - World[] standardWorlds = {Bukkit.getWorlds().get(0), Bukkit.getWorlds().get(1), Bukkit.getWorlds().get(2)}; - - if(!Arrays.stream(standardWorlds).toList().contains(blockLocation.getWorld())) { - PixelBlock pixelBlock = PixelBlock.getPixelBlockFromWorld(blockLocation.getWorld()); + if(CommonEventHandlers.isInPixelWorld(event.getBlock().getWorld())) { + PixelBlock pixelBlock = PixelBlock.getPixelBlockFromWorld(event.getBlock().getLocation().getWorld()); assert pixelBlock != null; pixelBlock.handleBlockPlace(event, true); diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/CommonEventHandlers.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/CommonEventHandlers.java new file mode 100644 index 0000000..07e1887 --- /dev/null +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/CommonEventHandlers.java @@ -0,0 +1,25 @@ +package eu.mhsl.minecraft.pixelblocks.listeners; + +import org.bukkit.Bukkit; +import org.bukkit.World; +import org.bukkit.event.Cancellable; + +import java.util.List; + +import static eu.mhsl.minecraft.pixelblocks.PixelBlocks.plugin; + +public class CommonEventHandlers { + public static boolean isInPixelWorld(World world) { + List standardWorlds = Bukkit.getWorlds().stream() + .filter(world1 -> !world1.getName().startsWith(plugin.getDataFolder().getPath())) + .toList(); + + return !standardWorlds.contains(world); + } + + public static void cancelIfInPixelWorld(Cancellable event, World world) { + if(isInPixelWorld(world)) { + event.setCancelled(true); + } + } +} diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/CreatureSpawnListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/CreatureSpawnListener.java index a53aaba..b14c67e 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/CreatureSpawnListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/CreatureSpawnListener.java @@ -1,22 +1,12 @@ package eu.mhsl.minecraft.pixelblocks.listeners; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.World; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.CreatureSpawnEvent; -import java.util.Arrays; - public class CreatureSpawnListener implements Listener { @EventHandler static void onCreatureSpawn(CreatureSpawnEvent event) { - Location entityLocation = event.getEntity().getLocation(); - World[] standardWorlds = {Bukkit.getWorlds().get(0), Bukkit.getWorlds().get(1), Bukkit.getWorlds().get(2)}; - - if(!Arrays.stream(standardWorlds).toList().contains(entityLocation.getWorld())) { - event.setCancelled(true); - } + CommonEventHandlers.cancelIfInPixelWorld(event, event.getLocation().getWorld()); } } diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/EntityDamageListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/EntityDamageListener.java index 655d907..7cafda8 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/EntityDamageListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/EntityDamageListener.java @@ -1,24 +1,12 @@ package eu.mhsl.minecraft.pixelblocks.listeners; -import org.bukkit.Bukkit; -import org.bukkit.World; -import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageEvent; -import java.util.Arrays; - public class EntityDamageListener implements Listener { @EventHandler static void onEntityDamage(EntityDamageEvent event) { - if(event.getEntity() instanceof Player player) { - World playerWorld = player.getWorld(); - World[] standardWorlds = {Bukkit.getWorlds().get(0), Bukkit.getWorlds().get(1), Bukkit.getWorlds().get(2)}; - - if(!Arrays.stream(standardWorlds).toList().contains(playerWorld)) { - event.setCancelled(true); - } - } + CommonEventHandlers.cancelIfInPixelWorld(event, event.getEntity().getWorld()); } } diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/EntityExplodeListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/EntityExplodeListener.java index 4fa1473..08b0b66 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/EntityExplodeListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/EntityExplodeListener.java @@ -1,22 +1,12 @@ package eu.mhsl.minecraft.pixelblocks.listeners; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.World; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityExplodeEvent; -import java.util.Arrays; - public class EntityExplodeListener implements Listener { @EventHandler static void onEntityExplode(EntityExplodeEvent event) { - Location eventLocation = event.getLocation(); - World[] standardWorlds = {Bukkit.getWorlds().get(0), Bukkit.getWorlds().get(1), Bukkit.getWorlds().get(2)}; - - if(!Arrays.stream(standardWorlds).toList().contains(eventLocation.getWorld())) { - event.setCancelled(true); - } + CommonEventHandlers.cancelIfInPixelWorld(event, event.getLocation().getWorld()); } } diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/InventoryListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/InventoryListener.java index 9c66366..aef3f28 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/InventoryListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/InventoryListener.java @@ -1,23 +1,15 @@ package eu.mhsl.minecraft.pixelblocks.listeners; -import org.bukkit.Bukkit; -import org.bukkit.World; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.inventory.*; import org.bukkit.inventory.CraftingInventory; import org.bukkit.inventory.PlayerInventory; -import java.util.Arrays; -import java.util.Objects; - public class InventoryListener implements Listener { @EventHandler static void onInventoryOpen(InventoryOpenEvent event) { - World playerWorld = event.getPlayer().getWorld(); - World[] standardWorlds = {Bukkit.getWorlds().get(0), Bukkit.getWorlds().get(1), Bukkit.getWorlds().get(2)}; - - if(!Arrays.stream(standardWorlds).toList().contains(playerWorld)) { + if(CommonEventHandlers.isInPixelWorld(event.getPlayer().getWorld())) { if(!(event.getInventory() instanceof PlayerInventory) && !(event.getInventory() instanceof CraftingInventory)) { event.setCancelled(true); } @@ -26,10 +18,7 @@ public class InventoryListener implements Listener { @EventHandler static void onInventoryDrag(InventoryDragEvent event) { - World playerWorld = event.getWhoClicked().getWorld(); - World[] standardWorlds = {Bukkit.getWorlds().get(0), Bukkit.getWorlds().get(1), Bukkit.getWorlds().get(2)}; - - if(!Arrays.stream(standardWorlds).toList().contains(playerWorld)) { + if(CommonEventHandlers.isInPixelWorld(event.getWhoClicked().getWorld())) { if(!(event.getInventory() instanceof PlayerInventory) && !(event.getInventory() instanceof CraftingInventory)) { event.setCancelled(true); } @@ -38,10 +27,7 @@ public class InventoryListener implements Listener { @EventHandler static void onInventoryClick(InventoryClickEvent event) { - World playerWorld = event.getWhoClicked().getWorld(); - World[] standardWorlds = {Bukkit.getWorlds().get(0), Bukkit.getWorlds().get(1), Bukkit.getWorlds().get(2)}; - - if(!Arrays.stream(standardWorlds).toList().contains(playerWorld)) { + if(CommonEventHandlers.isInPixelWorld(event.getWhoClicked().getWorld())) { if(!(event.getInventory() instanceof PlayerInventory) && !(event.getInventory() instanceof CraftingInventory)) { event.setCancelled(true); } @@ -50,25 +36,10 @@ public class InventoryListener implements Listener { @EventHandler static void onInventoryInteract(InventoryInteractEvent event) { - World playerWorld = event.getWhoClicked().getWorld(); - World[] standardWorlds = {Bukkit.getWorlds().get(0), Bukkit.getWorlds().get(1), Bukkit.getWorlds().get(2)}; - - if(!Arrays.stream(standardWorlds).toList().contains(playerWorld)) { + if(CommonEventHandlers.isInPixelWorld(event.getWhoClicked().getWorld())) { if(!(event.getInventory() instanceof PlayerInventory) && !(event.getInventory() instanceof CraftingInventory)) { event.setCancelled(true); } } } - - @EventHandler - static void onInventoryMoveItem(InventoryMoveItemEvent event) { - World playerWorld = Objects.requireNonNull(event.getDestination().getLocation()).getWorld(); - World[] standardWorlds = {Bukkit.getWorlds().get(0), Bukkit.getWorlds().get(1), Bukkit.getWorlds().get(2)}; - - if(!Arrays.stream(standardWorlds).toList().contains(playerWorld)) { - if(!(event.getDestination() instanceof PlayerInventory) && !(event.getDestination() instanceof CraftingInventory)) { - event.setCancelled(true); - } - } - } } diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerChangeWorldListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerChangeWorldListener.java index 785cff2..1777d9c 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerChangeWorldListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerChangeWorldListener.java @@ -1,23 +1,17 @@ package eu.mhsl.minecraft.pixelblocks.listeners; import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlock; -import org.bukkit.Bukkit; -import org.bukkit.World; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerChangedWorldEvent; -import java.util.Arrays; import java.util.Objects; public class PlayerChangeWorldListener implements Listener { @EventHandler static void onPlayerChangeWorld(PlayerChangedWorldEvent event) { - World worldLeft = event.getFrom(); - World[] standardWorlds = {Bukkit.getWorlds().get(0), Bukkit.getWorlds().get(1), Bukkit.getWorlds().get(2)}; - - if(!Arrays.stream(standardWorlds).toList().contains(worldLeft)) { - Objects.requireNonNull(PixelBlock.getPixelBlockFromWorld(worldLeft)).update(); + if(CommonEventHandlers.isInPixelWorld(event.getFrom())) { + Objects.requireNonNull(PixelBlock.getPixelBlockFromWorld(event.getFrom())).update(); } } } diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerDropItemListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerDropItemListener.java new file mode 100644 index 0000000..36d9a2e --- /dev/null +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerDropItemListener.java @@ -0,0 +1,12 @@ +package eu.mhsl.minecraft.pixelblocks.listeners; + +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerDropItemEvent; + +public class PlayerDropItemListener implements Listener { + @EventHandler + static void onPlayerDropItem(PlayerDropItemEvent event) { + CommonEventHandlers.cancelIfInPixelWorld(event, event.getItemDrop().getWorld()); + } +} diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerMoveListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerMoveListener.java index 7ca46ea..63123e3 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerMoveListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerMoveListener.java @@ -1,24 +1,17 @@ package eu.mhsl.minecraft.pixelblocks.listeners; import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlock; -import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.World; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerMoveEvent; -import java.util.Arrays; - public class PlayerMoveListener implements Listener { @EventHandler static void onPlayerMove(PlayerMoveEvent event) { - World playerWorld = event.getPlayer().getWorld(); - World[] standardWorlds = {Bukkit.getWorlds().get(0), Bukkit.getWorlds().get(1), Bukkit.getWorlds().get(2)}; - - if(!Arrays.stream(standardWorlds).toList().contains(playerWorld)) { + if(CommonEventHandlers.isInPixelWorld(event.getPlayer().getWorld())) { Location playerLocation = event.getPlayer().getLocation(); - PixelBlock pixelBlock = PixelBlock.getPixelBlockFromWorld(playerWorld); + PixelBlock pixelBlock = PixelBlock.getPixelBlockFromWorld(event.getPlayer().getWorld()); assert pixelBlock != null; Location portalLocation = pixelBlock.getPortalLocation().clone(); diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerPortalListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerPortalListener.java index 092eb48..0cbb789 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerPortalListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerPortalListener.java @@ -1,21 +1,12 @@ package eu.mhsl.minecraft.pixelblocks.listeners; -import org.bukkit.Bukkit; -import org.bukkit.World; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerPortalEvent; -import java.util.Arrays; - public class PlayerPortalListener implements Listener { @EventHandler static void onPlayerPortal(PlayerPortalEvent event) { - World worldLeft = event.getFrom().getWorld(); - World[] standardWorlds = {Bukkit.getWorlds().get(0), Bukkit.getWorlds().get(1), Bukkit.getWorlds().get(2)}; - - if(!Arrays.stream(standardWorlds).toList().contains(worldLeft)) { - event.setCancelled(true); - } + CommonEventHandlers.cancelIfInPixelWorld(event, event.getFrom().getWorld()); } }