--- a/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/net/minecraft/world/entity/animal/frog/Tadpole.java @@ -38,6 +38,10 @@ import net.minecraft.world.item.component.CustomData; import net.minecraft.world.level.World; +// CraftBukkit start +import org.bukkit.event.entity.EntityRemoveEvent; +// CraftBukkit end + public class Tadpole extends EntityFish { @VisibleForTesting @@ -71,7 +75,7 @@ @Override public BehaviorController getBrain() { - return super.getBrain(); + return (BehaviorController) super.getBrain(); // CraftBukkit - decompile error } @Override @@ -232,10 +236,16 @@ } frog.setPersistenceRequired(); + // CraftBukkit start + if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTransformEvent(this, frog, org.bukkit.event.entity.EntityTransformEvent.TransformReason.METAMORPHOSIS).isCancelled()) { + this.setAge(0); // Sets the age to 0 for avoid a loop if the event is canceled + return; + } + // CraftBukkit end frog.fudgePositionAfterSizeChange(this.getDimensions(this.getPose())); this.playSound(SoundEffects.TADPOLE_GROW_UP, 0.15F, 1.0F); - worldserver.addFreshEntityWithPassengers(frog); - this.discard(); + worldserver.addFreshEntityWithPassengers(frog, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.METAMORPHOSIS); // CraftBukkit - add SpawnReason + this.discard(EntityRemoveEvent.Cause.TRANSFORMATION); // CraftBukkit - add Bukkit remove cause } }