diff --git a/docs/Notes.txt b/docs/Notes.txt index e34f1d9..3a73aba 100644 --- a/docs/Notes.txt +++ b/docs/Notes.txt @@ -3,6 +3,7 @@ Features: [list] [*]Keep Inventory[list][*]Determines what happens to your stuff when you die.[/list] [*]Creeper Damage[list][*]Enables/Disables creeper damage. Seperate settings for Blocks and Mobs/Players[/list] +[*]Creeper Disable Fuse[list][*]Enable/Disable a creepers ability to explode. The creeper will still ignite itself but after a second it will disarm.[/list] [*]Mob Equipment Drops[list][*]Determines wether equipped items are dropped by mobs when killed by a player or not[/list] [*]All Mobs Peaceful[list][*]Enable/Disable a Mobs ability to target players[/list] [/list] \ No newline at end of file diff --git a/src/main/java/com/rsscripting/serveradmin/listeners/CreeperDisableFuseListener.java b/src/main/java/com/rsscripting/serveradmin/listeners/CreeperDisableFuseListener.java index 5c3fce9..358474e 100644 --- a/src/main/java/com/rsscripting/serveradmin/listeners/CreeperDisableFuseListener.java +++ b/src/main/java/com/rsscripting/serveradmin/listeners/CreeperDisableFuseListener.java @@ -5,8 +5,9 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Creeper; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import org.bukkit.event.entity.EntityTargetEvent; +import org.bukkit.event.entity.EntityTargetLivingEntityEvent; import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.scheduler.BukkitTask; @@ -19,9 +20,9 @@ public class CreeperDisableFuseListener implements Listener { private final Map activeTasks = new HashMap<>(); - @EventHandler + @EventHandler(priority = EventPriority.MONITOR) public void onEntityTarget( - EntityTargetEvent event + EntityTargetLivingEntityEvent event ) { if (!(event.getEntity() instanceof Creeper creeper)) { @@ -32,20 +33,17 @@ public class CreeperDisableFuseListener implements Listener { stopTask( creeper.getUniqueId() ); + return; } try { - String worldName = - creeper.getWorld() - .getName(); - boolean disableFuse = RSServerAdmin.getInstance() .getCreeperSettingsDAO() .getDisableFuse( - worldName + creeper.getWorld().getName() ); if (!disableFuse) { @@ -69,7 +67,7 @@ public class CreeperDisableFuseListener implements Listener { } - @EventHandler + @EventHandler(priority = EventPriority.HIGHEST) public void onEntityExplode( EntityExplodeEvent event ) { @@ -80,37 +78,25 @@ public class CreeperDisableFuseListener implements Listener { try { - String worldName = - creeper.getWorld() - .getName(); - boolean disableFuse = RSServerAdmin.getInstance() .getCreeperSettingsDAO() .getDisableFuse( - worldName + creeper.getWorld().getName() ); if (!disableFuse) { return; } - stopTask( - creeper.getUniqueId() - ); - - creeper.setIgnited( - false - ); - - creeper.setFuseTicks( - 0 - ); - event.setCancelled( true ); + stopTask( + creeper.getUniqueId() + ); + } catch (Exception ex) { RSServerAdmin.getInstance() @@ -157,8 +143,7 @@ public class CreeperDisableFuseListener implements Listener { RSServerAdmin.getInstance() .getCreeperSettingsDAO() .getDisableFuse( - creeper.getWorld() - .getName() + creeper.getWorld().getName() ); if (!disableFuse) { @@ -180,15 +165,7 @@ public class CreeperDisableFuseListener implements Listener { return; } - if (creeper.isIgnited()) { - - creeper.setIgnited( - false - ); - - } - - if (creeper.getFuseTicks() != 0) { + if (creeper.getFuseTicks() > 0) { creeper.setFuseTicks( 0 @@ -201,7 +178,7 @@ public class CreeperDisableFuseListener implements Listener { RSServerAdmin.getInstance() .getLogger() .warning( - "Failed to prevent Creeper fuse: " + "Failed to reset Creeper fuse ticks: " + ex.getMessage() );