--- a/net/minecraft/world/entity/EntityAreaEffectCloud.java +++ b/net/minecraft/world/entity/EntityAreaEffectCloud.java @@ -31,6 +31,12 @@ import net.minecraft.world.level.material.EnumPistonReaction; import org.slf4j.Logger; +// CraftBukkit start +import net.minecraft.resources.MinecraftKey; +import org.bukkit.craftbukkit.entity.CraftLivingEntity; +import org.bukkit.entity.LivingEntity; +// CraftBukkit end + public class EntityAreaEffectCloud extends Entity implements TraceableEntity { private static final Logger LOGGER = LogUtils.getLogger(); @@ -44,7 +50,7 @@ private static final float DEFAULT_RADIUS = 3.0F; public static final float DEFAULT_WIDTH = 6.0F; public static final float HEIGHT = 0.5F; - private PotionRegistry potion; + public PotionRegistry potion; // CraftBukkit - private -> public public List effects; private final Map victims; private int duration; @@ -112,7 +118,7 @@ } - private void updateColor() { + public void updateColor() { // Craftbukkit - private -> public if (this.potion == Potions.EMPTY && this.effects.isEmpty()) { this.getEntityData().set(EntityAreaEffectCloud.DATA_COLOR, 0); } else { @@ -263,6 +269,7 @@ if (!list1.isEmpty()) { Iterator iterator1 = list1.iterator(); + List entities = new java.util.ArrayList(); // CraftBukkit while (iterator1.hasNext()) { EntityLiving entityliving = (EntityLiving) iterator1.next(); @@ -272,6 +279,17 @@ double d8 = d6 * d6 + d7 * d7; if (d8 <= (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 (!event.isCancelled()) { + for (LivingEntity entity : event.getAffectedEntities()) { + if (entity instanceof CraftLivingEntity) { + EntityLiving entityliving = ((CraftLivingEntity) entity).getHandle(); + // CraftBukkit end this.victims.put(entityliving, this.tickCount + this.reapplicationDelay); Iterator iterator2 = list.iterator(); @@ -281,7 +299,7 @@ if (mobeffect1.getEffect().isInstantenous()) { mobeffect1.getEffect().applyInstantenousEffect(this, this.getOwner(), entityliving, mobeffect1.getAmplifier(), 0.5D); } else { - entityliving.addEffect(new MobEffect(mobeffect1), this); + entityliving.addEffect(new MobEffect(mobeffect1), this, org.bukkit.event.entity.EntityPotionEffectEvent.Cause.AREA_EFFECT_CLOUD); // CraftBukkit } }