From e432bc60e5154a69cd9beb136bea6e4d65cc12fe Mon Sep 17 00:00:00 2001 From: ty-a Date: Fri, 18 Apr 2014 15:08:55 -0500 Subject: [PATCH] prevent being unable to use commands when hitting a safe mob --- .../com/faceyspacies/NoEscape/NoEscape.java | 9 +++++ .../NoEscape/NoEscapeListener.java | 36 +++++++++++-------- src/main/resources/config.yml | 11 ++++++ src/main/resources/plugin.yml | 2 +- 4 files changed, 42 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/faceyspacies/NoEscape/NoEscape.java b/src/main/java/com/faceyspacies/NoEscape/NoEscape.java index 2fe4c8c..4369c19 100644 --- a/src/main/java/com/faceyspacies/NoEscape/NoEscape.java +++ b/src/main/java/com/faceyspacies/NoEscape/NoEscape.java @@ -18,12 +18,14 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; +import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; public class NoEscape extends JavaPlugin { protected static List NoEscapePlayers = new LinkedList(); + protected static List safeMobs = new LinkedList(); @Override public void onEnable() { @@ -31,6 +33,13 @@ public void onEnable() { getCommand("noescape").setExecutor(this); getServer().getPluginManager().registerEvents(new NoEscapeListener(this), this); + + List safeMobsFromConfig = this.getConfig().getStringList("safe-mobs"); + for(String element: safeMobsFromConfig) { + element = element.toUpperCase().replace(" ", "_"); + if(EntityType.valueOf(element) != null ) + safeMobs.add(EntityType.valueOf(element)); + } } @Override diff --git a/src/main/java/com/faceyspacies/NoEscape/NoEscapeListener.java b/src/main/java/com/faceyspacies/NoEscape/NoEscapeListener.java index 66334f3..a61ca17 100644 --- a/src/main/java/com/faceyspacies/NoEscape/NoEscapeListener.java +++ b/src/main/java/com/faceyspacies/NoEscape/NoEscapeListener.java @@ -64,26 +64,32 @@ public void dmg(EntityDamageEvent event) { if(event.getCause() == EntityDamageEvent.DamageCause.ENTITY_ATTACK || event.getCause() == EntityDamageEvent.DamageCause.ENTITY_EXPLOSION || event.getCause() == EntityDamageEvent.DamageCause.PROJECTILE) { - - if( hitPlayer || causedByPlayer ) { + + if(!hitPlayer) { + if(NoEscape.safeMobs.contains(event.getEntity().getType())) { + return; // player hit a safe to hit mob + } + } + + if( !hitPlayer && causedByPlayer ) { if(this.plugin.getConfig().getBoolean("PvM")) { - if( hitPlayer && !causedByPlayer ) { - if(!((Player)damagee).hasPermission("noescape.bypass")) - createTask((Player)damagee); // player is hit by entity - } - else if ( !hitPlayer && causedByPlayer ) { - if(this.plugin.getConfig().getBoolean("PvM")) { - if(!((Player)(((EntityDamageByEntityEvent) event).getDamager())).hasPermission("noescape.bypass")) - createTask((Player)(((EntityDamageByEntityEvent) event).getDamager())); - // player is hitting something not human - } - } + if(!((Player)(((EntityDamageByEntityEvent) event).getDamager())).hasPermission("noescape.bypass")) + createTask((Player)(((EntityDamageByEntityEvent) event).getDamager())); // player hit entity } - - if(this.plugin.getConfig().getBoolean("PvP")) { + } + + else if( hitPlayer && !causedByPlayer ) { + if(this.plugin.getConfig().getBoolean("PvM")) { if(!((Player)damagee).hasPermission("noescape.bypass")) createTask((Player)damagee); + } + } + if(this.plugin.getConfig().getBoolean("PvP")) { + if( hitPlayer && causedByPlayer ) { + if(!((Player)damagee).hasPermission("noescape.bypass")) + createTask((Player)damagee); + if(!((Player)(((EntityDamageByEntityEvent) event).getDamager())).hasPermission("noescape.bypass")) createTask((Player)(((EntityDamageByEntityEvent) event).getDamager())); } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 66d1282..718a008 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -13,3 +13,14 @@ disabled-in-worlds: - world_example #Message that is sent to the players when they try to use commands after receiving damage. Supports & color codes. message: '&cYou can not use commands when taking damage!' +# Mobs when attacked by the player that will not restrict use of command +safe-mobs: + - cow + - sheep + - chicken + - horse + - pig + - mushroom cow + - squid + - snowman + - villager \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index feffa41..16e767c 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: NoEscape main: com.faceyspacies.NoEscape.NoEscape -version: 1.0 +version: 1.1 author: tehTyA commands: