--- a/net/minecraft/world/entity/projectile/EyeOfEnder.java
+++ b/net/minecraft/world/entity/projectile/EyeOfEnder.java
@@ -25,9 +_,9 @@
     private static final float TOO_FAR_DISTANCE = 12.0F;
     private static final EntityDataAccessor<ItemStack> DATA_ITEM_STACK = SynchedEntityData.defineId(EyeOfEnder.class, EntityDataSerializers.ITEM_STACK);
     @Nullable
-    private Vec3 target;
-    private int life;
-    private boolean surviveAfterDeath;
+    public Vec3 target;
+    public int life;
+    public boolean surviveAfterDeath;
 
     public EyeOfEnder(EntityType<? extends EyeOfEnder> entityType, Level level) {
         super(entityType, level);
@@ -72,6 +_,12 @@
     }
 
     public void signalTo(Vec3 pos) {
+        // Paper start - Change EnderEye target without changing other things
+        this.signalTo(pos, true);
+    }
+
+    public void signalTo(Vec3 pos, boolean update) {
+        // Paper end - Change EnderEye target without changing other things
         Vec3 vec3 = pos.subtract(this.position());
         double d = vec3.horizontalDistance();
         if (d > 12.0) {
@@ -80,8 +_,10 @@
             this.target = pos;
         }
 
+        if (update) { // Paper - Change EnderEye target without changing other things
         this.life = 0;
         this.surviveAfterDeath = this.random.nextInt(5) > 0;
+        } // Paper - Change EnderEye target without changing other things
     }
 
     @Override
@@ -102,7 +_,7 @@
             this.life++;
             if (this.life > 80 && !this.level().isClientSide()) {
                 this.playSound(SoundEvents.ENDER_EYE_DEATH, 1.0F, 1.0F);
-                this.discard();
+                this.discard(this.surviveAfterDeath ? org.bukkit.event.entity.EntityRemoveEvent.Cause.DROP : org.bukkit.event.entity.EntityRemoveEvent.Cause.DESPAWN); // CraftBukkit - add Bukkit remove cause
                 if (this.surviveAfterDeath) {
                     this.level().addFreshEntity(new ItemEntity(this.level(), this.getX(), this.getY(), this.getZ(), this.getItem()));
                 } else {
