--- a/net/minecraft/server/EntityAreaEffectCloud.java +++ b/net/minecraft/server/EntityAreaEffectCloud.java @@ -8,6 +8,10 @@ import java.util.List; import java.util.Map; import java.util.UUID; + +import org.bukkit.craftbukkit.entity.CraftLivingEntity; // CraftBukkit +import org.bukkit.entity.LivingEntity; // CraftBukkit + import java.util.Map.Entry; import javax.annotation.Nullable; @@ -101,6 +105,22 @@ } + // CraftBukkit start accessor methods + public void refreshEffects() { + if (!this.hasColor) { + this.getDataWatcher().set(EntityAreaEffectCloud.b, Integer.valueOf(PotionUtil.a((Collection) PotionUtil.a(this.potionRegistry, (Collection) this.effects)))); // PAIL: rename + } + } + + public String getType() { + return ((MinecraftKey) PotionRegistry.a.b(this.potionRegistry)).toString(); // PAIL: rename + } + + public void setType(String string) { + a(PotionRegistry.a.get(new MinecraftKey(string))); // PAIL: rename + } + // CraftBukkit end + public int getColor() { return ((Integer) this.getDataWatcher().get(EntityAreaEffectCloud.b)).intValue(); } @@ -270,6 +290,7 @@ if (!list.isEmpty()) { Iterator iterator2 = list.iterator(); + List<LivingEntity> entities = new ArrayList<LivingEntity>(); // CraftBukkit while (iterator2.hasNext()) { EntityLiving entityliving = (EntityLiving) iterator2.next(); @@ -279,6 +300,17 @@ double d2 = d0 * d0 + d1 * d1; if (d2 <= (double) (f * f)) { + // CraftBukkit start + entities.add((LivingEntity) entityliving.getBukkitEntity()); + } + } + } + org.bukkit.event.entity.AreaEffectCloudApplyEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callAreaEffectCloudApplyEvent(this, entities); + if (true) { // Preserve NMS spacing and bracket count for smallest diff + for (LivingEntity entity : event.getAffectedEntities()) { + if (entity instanceof CraftLivingEntity) { + EntityLiving entityliving = ((CraftLivingEntity) entity).getHandle(); + // CraftBukkit end this.at.put(entityliving, Integer.valueOf(this.ticksLived + this.reapplicationDelay)); Iterator iterator3 = arraylist.iterator();