From f2edb49862820013b0e750a89b29d48bc7eaa90a Mon Sep 17 00:00:00 2001 From: CJ Burkey Date: Thu, 8 Aug 2024 14:01:40 -0400 Subject: [PATCH] Fix target blocks and entities not protected from fishing rods --- .../config/ClaimChunkWorldProfileHandler.java | 1 + .../event/WorldProfileEventHandler.java | 26 ++++++++++++++----- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/cjburkey/claimchunk/config/ClaimChunkWorldProfileHandler.java b/src/main/java/com/cjburkey/claimchunk/config/ClaimChunkWorldProfileHandler.java index f7a4940..82493ca 100644 --- a/src/main/java/com/cjburkey/claimchunk/config/ClaimChunkWorldProfileHandler.java +++ b/src/main/java/com/cjburkey/claimchunk/config/ClaimChunkWorldProfileHandler.java @@ -306,6 +306,7 @@ public void unloadAllProfiles() { mat.name().endsWith("_PRESSURE_PLATE") || mat.name().endsWith("_BUTTON")) .forEach(redstone::add); + redstone.add(Material.TARGET); blockAccessMapping.put("REDSTONE", redstone); // Add door blocks diff --git a/src/main/java/com/cjburkey/claimchunk/event/WorldProfileEventHandler.java b/src/main/java/com/cjburkey/claimchunk/event/WorldProfileEventHandler.java index 4bf8d86..8794c71 100644 --- a/src/main/java/com/cjburkey/claimchunk/event/WorldProfileEventHandler.java +++ b/src/main/java/com/cjburkey/claimchunk/event/WorldProfileEventHandler.java @@ -37,7 +37,7 @@ import java.util.*; import java.util.function.Function; -@SuppressWarnings({"unused"}) +@SuppressWarnings("unused") public record WorldProfileEventHandler(ClaimChunk claimChunk) implements Listener { // -- EVENTS -- // @@ -75,6 +75,24 @@ public void onEntityDamage(EntityDamageByEntityEvent event) { } } + /** Event handler for when the player uses their fishing rod. */ + @EventHandler + public void onPlayerFish(PlayerFishEvent event) { + if (event != null + && !event.isCancelled() + && event.getState() == PlayerFishEvent.State.CAUGHT_ENTITY) { + Entity caught = event.getCaught(); + if (caught != null) { + // Check if the line has hit an entity, and check the perms. + onEntityEvent( + () -> event.setCancelled(true), + event.getPlayer(), + caught, + EntityAccess.EntityAccessType.DAMAGE); + } + } + } + /** Event handler for when an entity spawns. */ @EventHandler public void onEntitySpawn(CreatureSpawnEvent event) { @@ -391,7 +409,6 @@ public void onEntityDamagedByExplosion(EntityDamageEvent event) { /* Explosion protection for blocks from block and entity explosions */ /** Event handler for when a block explodes. */ - @SuppressWarnings("unused") @EventHandler public void onBlockExplode(BlockExplodeEvent event) { if (event != null && !event.isCancelled()) { @@ -400,7 +417,6 @@ public void onBlockExplode(BlockExplodeEvent event) { } /** Event handler for when an entity explodes. */ - @SuppressWarnings("unused") @EventHandler public void onEntityExplode(EntityExplodeEvent event) { if (event != null && !event.isCancelled()) { @@ -409,7 +425,6 @@ public void onEntityExplode(EntityExplodeEvent event) { } /** Event handler for when a block spreads, like fire. */ - @SuppressWarnings("unused") @EventHandler public void onFireSpread(BlockSpreadEvent event) { if (event != null && !event.isCancelled() && event.getSource().getType() == Material.FIRE) { @@ -424,7 +439,6 @@ public void onFireSpread(BlockSpreadEvent event) { /** * Event handler for when a liquid spreads, like water or lava, or when a dragon egg teleports. */ - @SuppressWarnings("unused") @EventHandler public void onLiquidAndDragonEggSpread(BlockFromToEvent event) { if (event != null && !event.isCancelled()) { @@ -476,7 +490,6 @@ public void onLiquidAndDragonEggSpread(BlockFromToEvent event) { /* Piston protections */ - @SuppressWarnings("unused") @EventHandler public void onPistonExtend(BlockPistonExtendEvent event) { if (event != null && !event.isCancelled()) { @@ -488,7 +501,6 @@ public void onPistonExtend(BlockPistonExtendEvent event) { } } - @SuppressWarnings("unused") @EventHandler public void onPistonRetract(BlockPistonRetractEvent event) { if (event != null && !event.isCancelled()) {