--- a/net/minecraft/world/entity/projectile/EntityEnderSignal.java +++ b/net/minecraft/world/entity/projectile/EntityEnderSignal.java @@ -16,6 +16,10 @@ import net.minecraft.world.level.World; import net.minecraft.world.phys.Vec3D; +// CraftBukkit start +import org.bukkit.event.entity.EntityRemoveEvent; +// CraftBukkit end + public class EntityEnderSignal extends Entity implements ItemSupplier { private static final DataWatcherObject DATA_ITEM_STACK = DataWatcher.defineId(EntityEnderSignal.class, DataWatcherRegistry.ITEM_STACK); @@ -35,7 +39,7 @@ } public void setItem(ItemStack itemstack) { - if (!itemstack.is(Items.ENDER_EYE) || itemstack.hasTag()) { + if (true || !itemstack.is(Items.ENDER_EYE) || itemstack.hasTag()) { // CraftBukkit - always allow item changing this.getEntityData().set(EntityEnderSignal.DATA_ITEM_STACK, itemstack.copyWithCount(1)); } @@ -150,7 +154,7 @@ ++this.life; if (this.life > 80 && !this.level().isClientSide) { this.playSound(SoundEffects.ENDER_EYE_DEATH, 1.0F, 1.0F); - this.discard(); + this.discard(this.surviveAfterDeath ? EntityRemoveEvent.Cause.DROP : EntityRemoveEvent.Cause.DESPAWN); // CraftBukkit - add Bukkit remove cause if (this.surviveAfterDeath) { this.level().addFreshEntity(new EntityItem(this.level(), this.getX(), this.getY(), this.getZ(), this.getItem())); } else { @@ -177,7 +181,7 @@ public void readAdditionalSaveData(NBTTagCompound nbttagcompound) { ItemStack itemstack = ItemStack.of(nbttagcompound.getCompound("Item")); - this.setItem(itemstack); + if (!itemstack.isEmpty()) this.setItem(itemstack); // CraftBukkit - SPIGOT-6103 summon, see also SPIGOT-5474 } @Override