From 04d5a76ac6dbd3da0165e2cd1aa7d4211ab1032b Mon Sep 17 00:00:00 2001 From: Len <40720638+destro174@users.noreply.github.com> Date: Sat, 10 Feb 2024 15:48:19 +0100 Subject: [PATCH] Clean up PlayerListener.java --- .../listeners/PlayerListener.java | 140 ++++++------------ 1 file changed, 42 insertions(+), 98 deletions(-) diff --git a/plugin/src/main/java/com/alttd/cometskyblock/listeners/PlayerListener.java b/plugin/src/main/java/com/alttd/cometskyblock/listeners/PlayerListener.java index 7a81cb1..7b860e2 100644 --- a/plugin/src/main/java/com/alttd/cometskyblock/listeners/PlayerListener.java +++ b/plugin/src/main/java/com/alttd/cometskyblock/listeners/PlayerListener.java @@ -6,6 +6,7 @@ import com.alttd.cometskyblock.island.IslandPlayer; import org.bukkit.World; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; @@ -21,110 +22,31 @@ public class PlayerListener implements Listener { public PlayerListener(CometSkyBlockPlugin plugin) { this.plugin = plugin; } - // TODO -- extract all of the duplicate code + @EventHandler(ignoreCancelled = true) public void onBlockPlace(BlockPlaceEvent event) { - Player player = event.getPlayer(); - World world = player.getWorld(); - IslandPlayer islandPlayer = IslandPlayer.getIslandPlayer(player.getUniqueId()); - if (!world.getUID().equals(islandPlayer.islandUUID())) { - event.setCancelled(true); - return; - } - - Island island = Island.getIsland(world.getUID()); - if (island == null) { - return; - } - - if (!island.canBuild(player.getUniqueId())) { - event.setCancelled(true); - return; - } + canInteract(event, event.getPlayer()); } @EventHandler(ignoreCancelled = true) public void onPlayerBucketEmpty(PlayerBucketEmptyEvent event) { - Player player = event.getPlayer(); - World world = player.getWorld(); - IslandPlayer islandPlayer = IslandPlayer.getIslandPlayer(player.getUniqueId()); - if (!world.getUID().equals(islandPlayer.islandUUID())) { - event.setCancelled(true); - return; - } - - Island island = Island.getIsland(world.getUID()); - if (island == null) { - return; - } - - if (!island.canBuild(player.getUniqueId())) { - event.setCancelled(true); - return; - } + canInteract(event, event.getPlayer()); } @EventHandler(ignoreCancelled = true) public void onBlockIgnite(PlayerBucketEmptyEvent event) { - Player player = event.getPlayer(); - World world = player.getWorld(); - IslandPlayer islandPlayer = IslandPlayer.getIslandPlayer(player.getUniqueId()); - if (!world.getUID().equals(islandPlayer.islandUUID())) { - event.setCancelled(true); - return; - } - - Island island = Island.getIsland(world.getUID()); - if (island == null) { - return; - } - - if (!island.canBuild(player.getUniqueId())) { - event.setCancelled(true); - return; - } + canInteract(event, event.getPlayer()); } @EventHandler(ignoreCancelled = true) public void onBlockBreak(BlockBreakEvent event) { - Player player = event.getPlayer(); - World world = player.getWorld(); - IslandPlayer islandPlayer = IslandPlayer.getIslandPlayer(player.getUniqueId()); - if (!world.getUID().equals(islandPlayer.islandUUID())) { - event.setCancelled(true); - return; - } - - Island island = Island.getIsland(world.getUID()); - if (island == null) { - return; - } - - if (!island.canBuild(player.getUniqueId())) { - event.setCancelled(true); - return; - } + canInteract(event, event.getPlayer()); } @EventHandler(ignoreCancelled = true) public void onPlayerBucketFill(PlayerBucketFillEvent event) { - Player player = event.getPlayer(); - World world = player.getWorld(); - IslandPlayer islandPlayer = IslandPlayer.getIslandPlayer(player.getUniqueId()); - if (!world.getUID().equals(islandPlayer.islandUUID())) { - event.setCancelled(true); - return; - } - - Island island = Island.getIsland(world.getUID()); - if (island == null) { - return; - } - - if (!island.canBuild(player.getUniqueId())) { - event.setCancelled(true); - return; - } + canInteract(event, event.getPlayer()); } + @EventHandler(ignoreCancelled = true) public void onEntityBlockForm(EntityBlockFormEvent event) { // not a player listener World world = event.getEntity().getWorld(); @@ -142,20 +64,42 @@ public class PlayerListener implements Listener { public void islandVisitProtection(EntityDamageEvent event) { Entity entity = event.getEntity(); if (entity instanceof Player player) { - Island island = Island.getIsland(player.getWorld().getUID()); - if (island == null) { - return; - } - if (island.worldName() == null || island.worldName().isEmpty()) { // Worlds not generated by us will have this as null or empty - return; - } - - event.setCancelled(true); - if (event.getCause() == EntityDamageEvent.DamageCause.VOID || player.getLocation().getY() < 0) { - player.setFallDistance(0); - player.teleportAsync(plugin.getServer().getWorlds().get(0).getSpawnLocation()); + if (!canInteract(event, player)) { + if (event.getCause() == EntityDamageEvent.DamageCause.VOID || player.getLocation().getY() < 0) { + player.setFallDistance(0); + player.teleportAsync(plugin.getServer().getWorlds().get(0).getSpawnLocation()); + } } } } + boolean canInteract(Cancellable event, Player player) { + World world = player.getWorld(); + IslandPlayer islandPlayer = IslandPlayer.getIslandPlayer(player.getUniqueId()); + if (!world.getUID().equals(islandPlayer.islandUUID())) { + return cancelEvent(event); + } + + Island island = Island.getIsland(world.getUID()); + if (island == null) { + return cancelEvent(event); + } + + // Worlds not generated by CometSkyblock will have this as null or empty + // We do not care about these worlds - yet + if (island.worldName() == null || island.worldName().isEmpty()) { + return true; + } + + if (!island.canBuild(player.getUniqueId())) { + return cancelEvent(event); + } + return true; + } + + boolean cancelEvent(Cancellable event) { + event.setCancelled(true); + return false; + } + }