From 24502659096f967b1ff1806037a4b2aa6e2f8b94 Mon Sep 17 00:00:00 2001 From: Jonathan Williams Date: Sat, 22 Mar 2014 00:16:51 -0700 Subject: [PATCH] Fixed damage rate limiting for mobs. --- Plugins/BuildFiles/common.xml | 2 +- .../minecraft/game/core/combat/ClientCombat.java | 16 +++++++++++----- .../game/core/damage/DamageManager.java | 3 --- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/Plugins/BuildFiles/common.xml b/Plugins/BuildFiles/common.xml index 83c66238c..7966c490a 100644 --- a/Plugins/BuildFiles/common.xml +++ b/Plugins/BuildFiles/common.xml @@ -108,7 +108,7 @@ - + diff --git a/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/combat/ClientCombat.java b/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/combat/ClientCombat.java index f87eaed48..311e5d4c4 100644 --- a/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/combat/ClientCombat.java +++ b/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/combat/ClientCombat.java @@ -12,7 +12,7 @@ public class ClientCombat private LinkedList _deaths = new LinkedList(); private WeakHashMap _lastHurt = new WeakHashMap(); - private long _lastHurtByOther = 0; + private WeakHashMap _lastHurtBy = new WeakHashMap(); public LinkedList GetKills() { @@ -31,12 +31,18 @@ public class ClientCombat public boolean CanBeHurtBy(LivingEntity damager) { - if (damager != null) + if (damager == null) return true; - - if (System.currentTimeMillis() - _lastHurtByOther > 250) + + if (!_lastHurtBy.containsKey(damager)) { - _lastHurtByOther = System.currentTimeMillis(); + _lastHurtBy.put(damager, System.currentTimeMillis()); + return true; + } + + if (System.currentTimeMillis() - _lastHurtBy.get(damager) > 400) + { + _lastHurtBy.put(damager, System.currentTimeMillis()); return true; } diff --git a/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/damage/DamageManager.java b/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/damage/DamageManager.java index 842eff340..ba68f406e 100644 --- a/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/damage/DamageManager.java +++ b/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/damage/DamageManager.java @@ -102,7 +102,6 @@ public class DamageManager extends MiniPlugin NewDamageEvent(damagee, damager, projectile, event.getCause(), event.getDamage(), true, false, false, null, null, preCancel); event.setCancelled(true); - System.out.println("Cancelled original"); } /* @@ -332,7 +331,6 @@ public class DamageManager extends MiniPlugin return; } - System.out.println("Applying damage (" + (damage - entityDamagee.lastDamage) + ")"); ApplyDamage(entityDamagee, damage - entityDamagee.lastDamage, ignoreArmor); entityDamagee.lastDamage = damage; } @@ -341,7 +339,6 @@ public class DamageManager extends MiniPlugin entityDamagee.lastDamage = damage; entityDamagee.ax = entityDamagee.getHealth(); //entityDamagee.noDamageTicks = entityDamagee.maxNoDamageTicks; - System.out.println("Applying damage (" + (damage - entityDamagee.lastDamage) + ")"); ApplyDamage(entityDamagee, damage, ignoreArmor); //entityDamagee.hurtTicks = entityDamagee.aW = 10; }