SPIGOT-5208: Reset state on cancelled EntityTransformEvent to prevent event spam

This commit is contained in:
md_5
2019-07-26 09:58:18 +10:00
parent f744c09c02
commit c88867e4fc
4 changed files with 24 additions and 19 deletions

View File

@@ -1,17 +1,18 @@
--- a/net/minecraft/server/EntityZombieVillager.java
+++ b/net/minecraft/server/EntityZombieVillager.java
@@ -3,6 +3,10 @@
@@ -3,6 +3,11 @@
import com.mojang.datafixers.Dynamic;
import java.util.UUID;
import javax.annotation.Nullable;
+// CraftBukkit start
+import org.bukkit.craftbukkit.event.CraftEventFactory;
+import org.bukkit.entity.ZombieVillager;
+import org.bukkit.event.entity.EntityTransformEvent;
+// CraftBukkit end
public class EntityZombieVillager extends EntityZombie implements VillagerDataHolder {
@@ -13,6 +17,7 @@
@@ -13,6 +18,7 @@
private NBTBase bB;
private NBTTagCompound bC;
private int bD;
@@ -19,7 +20,7 @@
public EntityZombieVillager(EntityTypes<? extends EntityZombieVillager> entitytypes, World world) {
super(entitytypes, world);
@@ -75,6 +80,11 @@
@@ -75,6 +81,11 @@
public void tick() {
if (!this.world.isClientSide && this.isAlive() && this.isConverting()) {
int i = this.getConversionProgress();
@@ -31,7 +32,7 @@
this.conversionTime -= i;
if (this.conversionTime <= 0) {
@@ -122,8 +132,11 @@
@@ -122,8 +133,11 @@
this.conversionPlayer = uuid;
this.conversionTime = i;
this.getDataWatcher().set(EntityZombieVillager.CONVERTING, true);
@@ -45,7 +46,7 @@
this.world.broadcastEntityEffect(this, (byte) 16);
}
@@ -146,14 +159,20 @@
@@ -146,14 +160,21 @@
entityvillager.setAgeRaw(-24000);
}
@@ -60,6 +61,7 @@
- worldserver.addEntity(entityvillager);
+ // CraftBukkit start
+ if (CraftEventFactory.callEntityTransformEvent(this, entityvillager, EntityTransformEvent.TransformReason.CURED).isCancelled()) {
+ ((ZombieVillager) getBukkitEntity()).setConversionTime(-1); // SPIGOT-5208: End conversion to stop event spam
+ return;
+ }
+ this.die(); // CraftBukkit - from above
@@ -68,7 +70,7 @@
if (this.conversionPlayer != null) {
EntityHuman entityhuman = worldserver.b(this.conversionPlayer);
@@ -163,7 +182,7 @@
@@ -163,7 +184,7 @@
}
}