--- a/net/minecraft/world/entity/projectile/EyeOfEnder.java
+++ b/net/minecraft/world/entity/projectile/EyeOfEnder.java
@@ -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 {
