From 92a3edc0b6b529574a180e22847f232500ebe50b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20M=C3=BCller?= Date: Fri, 4 Oct 2024 21:02:48 +0200 Subject: [PATCH] added listener to exit pixelblock when leaving the server --- .../listeners/BreakPixelBlockListener.java | 2 +- .../listeners/BreakPixelListener.java | 2 +- .../listeners/EnterPixelBlockListener.java | 2 +- .../listeners/ExitPixelWorldListener.java | 7 +++---- .../FallOutOfPixelBlockListener.java | 2 +- .../listeners/PlacePixelBlockListener.java | 2 +- .../listeners/PlacePixelListener.java | 4 ++-- .../PreventEntityPlacementListener.java | 2 +- .../PreventHopperActionsListener.java | 2 +- .../PreventIllegalBlocksListener.java | 8 +++---- .../listeners/PreventInventorysListener.java | 4 ++-- .../listeners/PreventLiquidsFlowListener.java | 2 +- .../listeners/PreventPistonsListener.java | 2 +- .../QuitWhileInPixelBlockListener.java | 21 +++++++++++++++++++ .../pixelblocks/pixelblock/PixelBlock.java | 4 ++++ 15 files changed, 45 insertions(+), 21 deletions(-) create mode 100644 src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/QuitWhileInPixelBlockListener.java diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BreakPixelBlockListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BreakPixelBlockListener.java index c67a654..297fa4a 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BreakPixelBlockListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BreakPixelBlockListener.java @@ -10,7 +10,7 @@ import org.bukkit.event.Listener; public class BreakPixelBlockListener implements Listener { @EventHandler - static void destroyPixelBlock(PrePlayerAttackEntityEvent event) { + public void destroyPixelBlock(PrePlayerAttackEntityEvent event) { if(!(event.getAttacked() instanceof Interaction)) return; Location blockLocation = event.getAttacked().getLocation().add(0, Main.configuration.hitboxOffset(), 0).toBlockLocation(); diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BreakPixelListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BreakPixelListener.java index be48781..0dcbddd 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BreakPixelListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BreakPixelListener.java @@ -7,7 +7,7 @@ import org.bukkit.event.block.BlockBreakEvent; public class BreakPixelListener implements Listener { @EventHandler - static void onBlockBreak(BlockBreakEvent event) { + public void onBlockBreak(BlockBreakEvent event) { EventCanceling.shouldCancelInPixelBlock( event, event.getBlock().getWorld(), diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/EnterPixelBlockListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/EnterPixelBlockListener.java index 0eb00d3..43aa432 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/EnterPixelBlockListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/EnterPixelBlockListener.java @@ -10,7 +10,7 @@ import org.bukkit.event.player.PlayerInteractEntityEvent; public class EnterPixelBlockListener implements Listener { @EventHandler - static void enterPixelBlock(PlayerInteractEntityEvent event) { + public void enterPixelBlock(PlayerInteractEntityEvent event) { if(!(event.getRightClicked() instanceof Interaction)) return; Location interactionLocation = event diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/ExitPixelWorldListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/ExitPixelWorldListener.java index 904af61..a57bde9 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/ExitPixelWorldListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/ExitPixelWorldListener.java @@ -12,7 +12,7 @@ import java.util.Objects; public class ExitPixelWorldListener implements Listener { @EventHandler - static void onPlayerChangeWorld(PlayerChangedWorldEvent event) { + public void onPlayerChangeWorld(PlayerChangedWorldEvent event) { World changingFrom = event.getFrom(); if(!PixelBlockWorld.isPixelWorld(changingFrom)) return; @@ -22,14 +22,13 @@ public class ExitPixelWorldListener implements Listener { } @EventHandler - static void onPlayerPortal(PlayerPortalEvent event) { + public void onPlayerPortal(PlayerPortalEvent event) { World pixelBlockWorld = event.getFrom().getWorld(); - if(!PixelBlockWorld.isPixelWorld(pixelBlockWorld)) return; event.setCancelled(true); PixelBlock pixelBlock = PixelBlock.getPixelBlockFromBlockWorld(pixelBlockWorld); Objects.requireNonNull(pixelBlock); - event.getPlayer().teleport(pixelBlock.lastEntryLocation); + pixelBlock.exitBlock(event.getPlayer()); } } diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/FallOutOfPixelBlockListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/FallOutOfPixelBlockListener.java index 856d4b6..3a4a660 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/FallOutOfPixelBlockListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/FallOutOfPixelBlockListener.java @@ -11,7 +11,7 @@ import java.util.Objects; public class FallOutOfPixelBlockListener implements Listener { @EventHandler - static void onPlayerMove(PlayerMoveEvent event) { + public void onPlayerMove(PlayerMoveEvent event) { Player player = event.getPlayer(); if(player.getLocation().y() > -65) return; if(!PixelBlockWorld.isPixelWorld(player.getWorld())) return; diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlacePixelBlockListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlacePixelBlockListener.java index 47cc001..8ebe58d 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlacePixelBlockListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlacePixelBlockListener.java @@ -19,7 +19,7 @@ import java.util.UUID; public class PlacePixelBlockListener implements Listener { @EventHandler - static void onBlockPlace(BlockPlaceEvent event) { + public void onBlockPlace(BlockPlaceEvent event) { ItemStack usedItem = event.getItemInHand(); PixelBlockItem.BlockInfo info = PixelBlockItem.getBlockInfo(usedItem); if(info == null) return; diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlacePixelListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlacePixelListener.java index 3130016..d32622b 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlacePixelListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlacePixelListener.java @@ -8,7 +8,7 @@ import org.bukkit.event.player.PlayerBucketEmptyEvent; public class PlacePixelListener implements Listener { @EventHandler - static void onBlockPlace(BlockPlaceEvent event) { + public void onBlockPlace(BlockPlaceEvent event) { EventCanceling.shouldCancelInPixelBlock( event, event.getBlock().getWorld(), @@ -17,7 +17,7 @@ public class PlacePixelListener implements Listener { } @EventHandler - static void onBuketEmpty(PlayerBucketEmptyEvent event) { + public void onBuketEmpty(PlayerBucketEmptyEvent event) { EventCanceling.shouldCancelInPixelBlock( event, event.getBlock().getWorld(), diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventEntityPlacementListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventEntityPlacementListener.java index 9e672ab..12e4929 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventEntityPlacementListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventEntityPlacementListener.java @@ -7,7 +7,7 @@ import org.bukkit.event.entity.EntityPlaceEvent; public class PreventEntityPlacementListener implements Listener { @EventHandler - public static void preventPlace(EntityPlaceEvent event) { + public void preventPlace(EntityPlaceEvent event) { EventCanceling.cancelIfInPixelWorld(event, event.getBlock().getWorld()); } } diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventHopperActionsListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventHopperActionsListener.java index d349a40..2219bc9 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventHopperActionsListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventHopperActionsListener.java @@ -8,7 +8,7 @@ import org.bukkit.event.inventory.InventoryType; public class PreventHopperActionsListener implements Listener { @EventHandler - static void onInventoryPickupItem(InventoryPickupItemEvent event) { + public void onInventoryPickupItem(InventoryPickupItemEvent event) { EventCanceling.shouldCancelInPixelBlock( event, event.getItem().getWorld(), diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventIllegalBlocksListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventIllegalBlocksListener.java index 1b56d95..e0a779f 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventIllegalBlocksListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventIllegalBlocksListener.java @@ -10,22 +10,22 @@ import org.bukkit.event.entity.EntityExplodeEvent; public class PreventIllegalBlocksListener implements Listener { @EventHandler - static void onBlockExplode(BlockExplodeEvent event) { + public void onBlockExplode(BlockExplodeEvent event) { EventCanceling.cancelIfInPixelWorld(event, event.getBlock().getWorld()); } @EventHandler - static void onCreatureSpawn(CreatureSpawnEvent event) { + public void onCreatureSpawn(CreatureSpawnEvent event) { EventCanceling.cancelIfInPixelWorld(event, event.getLocation().getWorld()); } @EventHandler - static void onEntityDamage(EntityDamageEvent event) { + public void onEntityDamage(EntityDamageEvent event) { EventCanceling.cancelIfInPixelWorld(event, event.getEntity().getWorld()); } @EventHandler - static void onEntityExplode(EntityExplodeEvent event) { + public void onEntityExplode(EntityExplodeEvent event) { EventCanceling.cancelIfInPixelWorld(event, event.getLocation().getWorld()); } } diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventInventorysListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventInventorysListener.java index dcec263..b1658bc 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventInventorysListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventInventorysListener.java @@ -10,7 +10,7 @@ import org.bukkit.inventory.PlayerInventory; public class PreventInventorysListener implements Listener { @EventHandler - static void onInventoryOpen(InventoryOpenEvent event) { + public void onInventoryOpen(InventoryOpenEvent event) { EventCanceling.shouldCancelInPixelBlock( event, event.getPlayer().getWorld(), @@ -19,7 +19,7 @@ public class PreventInventorysListener implements Listener { } @EventHandler - static void onInventoryInteract(InventoryInteractEvent event) { + public void onInventoryInteract(InventoryInteractEvent event) { EventCanceling.shouldCancelInPixelBlock( event, event.getWhoClicked().getWorld(), diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventLiquidsFlowListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventLiquidsFlowListener.java index 79ccc4a..a5a5542 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventLiquidsFlowListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventLiquidsFlowListener.java @@ -7,7 +7,7 @@ import org.bukkit.event.block.BlockFromToEvent; public class PreventLiquidsFlowListener implements Listener { @EventHandler - public static void onLiquidFlow(BlockFromToEvent event) { + public void onLiquidFlow(BlockFromToEvent event) { EventCanceling.shouldCancelInPixelBlock( event, event.getToBlock().getWorld(), diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventPistonsListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventPistonsListener.java index f9e8b28..2b6242f 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventPistonsListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventPistonsListener.java @@ -7,7 +7,7 @@ import org.bukkit.event.block.BlockPistonExtendEvent; public class PreventPistonsListener implements Listener { @EventHandler - public static void blockPistons(BlockPistonExtendEvent event) { + public void blockPistons(BlockPistonExtendEvent event) { EventCanceling.shouldCancelInPixelBlock( event, event.getBlock().getWorld(), diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/QuitWhileInPixelBlockListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/QuitWhileInPixelBlockListener.java new file mode 100644 index 0000000..81856da --- /dev/null +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/QuitWhileInPixelBlockListener.java @@ -0,0 +1,21 @@ +package eu.mhsl.minecraft.pixelblocks.listeners; + +import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlock; +import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlockWorld; +import org.bukkit.World; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerQuitEvent; + +import java.util.Objects; + +public class QuitWhileInPixelBlockListener implements Listener { + @EventHandler + public void onLeave(PlayerQuitEvent event) { + World pixelBlockWorld = event.getPlayer().getLocation().getWorld(); + if(!PixelBlockWorld.isPixelWorld(pixelBlockWorld)) return; + PixelBlock pixelBlock = PixelBlock.getPixelBlockFromBlockWorld(pixelBlockWorld); + Objects.requireNonNull(pixelBlock); + pixelBlock.exitBlock(event.getPlayer()); + } +} diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/pixelblock/PixelBlock.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/pixelblock/PixelBlock.java index a037637..f9dd2f5 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/pixelblock/PixelBlock.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/pixelblock/PixelBlock.java @@ -102,6 +102,10 @@ public class PixelBlock { .execute(); } + public void exitBlock(@NotNull Player player) { + player.teleport(this.lastEntryLocation); + } + public void setLastEntryLocation(Location lastEntryLocation) { this.lastEntryLocation = lastEntryLocation; }