SPIGOT-5566: Doused campfires & fires should call EntityChangeBlockEvent

This commit is contained in:
Parker Hawke 2020-04-29 17:26:40 +10:00 committed by md_5
parent 41712eddeb
commit a1a705ee9a

View File

@ -1,6 +1,6 @@
--- a/net/minecraft/server/EntityPotion.java
+++ b/net/minecraft/server/EntityPotion.java
@@ -6,6 +6,12 @@
@@ -6,6 +6,13 @@
import javax.annotation.Nullable;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@ -8,12 +8,13 @@
+import java.util.HashMap;
+import java.util.Map;
+import org.bukkit.craftbukkit.entity.CraftLivingEntity;
+import org.bukkit.craftbukkit.event.CraftEventFactory;
+import org.bukkit.entity.LivingEntity;
+// CraftBukkit end
public class EntityPotion extends EntityProjectile {
@@ -79,7 +85,7 @@
@@ -79,7 +86,7 @@
if (flag) {
this.splash();
@ -22,7 +23,7 @@
if (this.isLingering()) {
this.a(itemstack, potionregistry);
} else {
@@ -116,6 +122,7 @@
@@ -116,6 +123,7 @@
private void a(List<MobEffect> list, @Nullable Entity entity) {
AxisAlignedBB axisalignedbb = this.getBoundingBox().grow(4.0D, 2.0D, 4.0D);
List<EntityLiving> list1 = this.world.a(EntityLiving.class, axisalignedbb);
@ -30,7 +31,7 @@
if (!list1.isEmpty()) {
Iterator iterator = list1.iterator();
@@ -133,21 +140,46 @@
@@ -133,21 +141,46 @@
d1 = 1.0D;
}
@ -48,20 +49,7 @@
+ if (!(victim instanceof CraftLivingEntity)) {
+ continue;
+ }
- while (iterator1.hasNext()) {
- MobEffect mobeffect = (MobEffect) iterator1.next();
- MobEffectList mobeffectlist = mobeffect.getMobEffect();
-
- if (mobeffectlist.isInstant()) {
- mobeffectlist.applyInstantEffect(this, this.getShooter(), entityliving, mobeffect.getAmplifier(), d1);
- } else {
- int i = (int) (d1 * (double) mobeffect.getDuration() + 0.5D);
-
- if (i > 20) {
- entityliving.addEffect(new MobEffect(mobeffectlist, i, mobeffect.getAmplifier(), mobeffect.isAmbient(), mobeffect.isShowParticles()));
- }
- }
+
+ EntityLiving entityliving = ((CraftLivingEntity) victim).getHandle();
+ double d1 = event.getIntensity(victim);
+ // CraftBukkit end
@ -80,7 +68,20 @@
+ }
+ }
+ // CraftBukkit end
+
- while (iterator1.hasNext()) {
- MobEffect mobeffect = (MobEffect) iterator1.next();
- MobEffectList mobeffectlist = mobeffect.getMobEffect();
-
- if (mobeffectlist.isInstant()) {
- mobeffectlist.applyInstantEffect(this, this.getShooter(), entityliving, mobeffect.getAmplifier(), d1);
- } else {
- int i = (int) (d1 * (double) mobeffect.getDuration() + 0.5D);
-
- if (i > 20) {
- entityliving.addEffect(new MobEffect(mobeffectlist, i, mobeffect.getAmplifier(), mobeffect.isAmbient(), mobeffect.isShowParticles()));
- }
- }
+ if (mobeffectlist.isInstant()) {
+ mobeffectlist.applyInstantEffect(this, this.getShooter(), entityliving, mobeffect.getAmplifier(), d1);
+ } else {
@ -91,7 +92,7 @@
}
}
}
@@ -179,7 +211,14 @@
@@ -179,7 +212,14 @@
entityareaeffectcloud.setColor(nbttagcompound.getInt("CustomPotionColor"));
}
@ -107,3 +108,25 @@
}
public boolean isLingering() {
@@ -191,10 +231,18 @@
Block block = iblockdata.getBlock();
if (block == Blocks.FIRE) {
- this.world.douseFire((EntityHuman) null, blockposition.shift(enumdirection), enumdirection.opposite());
+ // CraftBukkit start
+ if (!CraftEventFactory.callEntityChangeBlockEvent(this, blockposition.shift(enumdirection), Blocks.AIR.getBlockData()).isCancelled()) {
+ this.world.douseFire((EntityHuman) null, blockposition.shift(enumdirection), enumdirection.opposite());
+ }
+ // CraftBukkit end
} else if (block == Blocks.CAMPFIRE && (Boolean) iblockdata.get(BlockCampfire.b)) {
- this.world.a((EntityHuman) null, 1009, blockposition, 0);
- this.world.setTypeUpdate(blockposition, (IBlockData) iblockdata.set(BlockCampfire.b, false));
+ // CraftBukkit start
+ if (!CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.set(BlockCampfire.b, false)).isCancelled()) { // PAIL rename LIT
+ this.world.a((EntityHuman) null, 1009, blockposition, 0);
+ this.world.setTypeUpdate(blockposition, (IBlockData) iblockdata.set(BlockCampfire.b, false));
+ }
+ // CraftBukkit end
}
}