mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-08 19:34:09 +01:00
65bc2541a3
By: md_5 <git@md-5.net>
85 lines
4.4 KiB
Diff
85 lines
4.4 KiB
Diff
--- a/net/minecraft/world/entity/EntityAreaEffectCloud.java
|
|
+++ b/net/minecraft/world/entity/EntityAreaEffectCloud.java
|
|
@@ -30,6 +30,12 @@
|
|
import net.minecraft.world.level.material.EnumPistonReaction;
|
|
import org.slf4j.Logger;
|
|
|
|
+// CraftBukkit start
|
|
+import org.bukkit.craftbukkit.entity.CraftLivingEntity;
|
|
+import org.bukkit.entity.LivingEntity;
|
|
+import org.bukkit.event.entity.EntityRemoveEvent;
|
|
+// CraftBukkit end
|
|
+
|
|
public class EntityAreaEffectCloud extends Entity implements TraceableEntity {
|
|
|
|
private static final Logger LOGGER = LogUtils.getLogger();
|
|
@@ -186,7 +192,7 @@
|
|
}
|
|
} else {
|
|
if (this.tickCount >= this.waitTime + this.duration) {
|
|
- this.discard();
|
|
+ this.discard(EntityRemoveEvent.Cause.DESPAWN); // CraftBukkit - add Bukkit remove cause
|
|
return;
|
|
}
|
|
|
|
@@ -203,7 +209,7 @@
|
|
if (this.radiusPerTick != 0.0F) {
|
|
f += this.radiusPerTick;
|
|
if (f < 0.5F) {
|
|
- this.discard();
|
|
+ this.discard(EntityRemoveEvent.Cause.DESPAWN); // CraftBukkit - add Bukkit remove cause
|
|
return;
|
|
}
|
|
|
|
@@ -237,6 +243,7 @@
|
|
if (!list1.isEmpty()) {
|
|
Iterator iterator1 = list1.iterator();
|
|
|
|
+ List<LivingEntity> entities = new java.util.ArrayList<LivingEntity>(); // CraftBukkit
|
|
while (iterator1.hasNext()) {
|
|
EntityLiving entityliving = (EntityLiving) iterator1.next();
|
|
|
|
@@ -246,6 +253,17 @@
|
|
double d5 = d3 * d3 + d4 * d4;
|
|
|
|
if (d5 <= (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();
|
|
|
|
@@ -255,14 +273,14 @@
|
|
if (((MobEffectList) mobeffect1.getEffect().value()).isInstantenous()) {
|
|
((MobEffectList) mobeffect1.getEffect().value()).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
|
|
}
|
|
}
|
|
|
|
if (this.radiusOnUse != 0.0F) {
|
|
f += this.radiusOnUse;
|
|
if (f < 0.5F) {
|
|
- this.discard();
|
|
+ this.discard(EntityRemoveEvent.Cause.DESPAWN); // CraftBukkit - add Bukkit remove cause
|
|
return;
|
|
}
|
|
|
|
@@ -272,7 +290,7 @@
|
|
if (this.durationOnUse != 0) {
|
|
this.duration += this.durationOnUse;
|
|
if (this.duration <= 0) {
|
|
- this.discard();
|
|
+ this.discard(EntityRemoveEvent.Cause.DESPAWN); // CraftBukkit - add Bukkit remove cause
|
|
return;
|
|
}
|
|
}
|