--- a/net/minecraft/entity/projectile/EntityThrowable.java
+++ b/net/minecraft/entity/projectile/EntityThrowable.java
@@ -3,6 +3,9 @@
 import java.util. List;
 import java.util. UUID;
 import javax.annotation. Nullable;
+
+import carpet.logging. LoggerRegistry;
+import carpet.logging.logHelpers. TrajectoryLogHelper;
 import net.minecraft.entity. Entity;
 import net.minecraft.entity. EntityLivingBase;
 import net.minecraft.entity. EntityType;
@@ -32,10 +35,19 @@
     public Entity ignoreEntity;
     private int ignoreTime;
 
+    //CM
+    private TrajectoryLogHelper logHelper = null;
+
+
     protected EntityThrowable(EntityType<? > type, World p_i48540_2_)
     {
         super(type, p_i48540_2_);
         this.setSize(0.25F, 0.25F);
+        //CM
+        if (LoggerRegistry.__projectiles)
+        {
+            logHelper = new TrajectoryLogHelper("projectiles");
+        }
     }
 
     protected EntityThrowable(EntityType<? > type, double p_i48541_2_, double p_i48541_4_, double p_i48541_6_, World p_i48541_8_)
@@ -274,9 +286,27 @@
             this.motionY -= (double)f2;
         }
 
+        /// ----- Carpet Start ----- //
+        if (LoggerRegistry.__projectiles && logHelper ! = null)
+        {
+            logHelper.onTick(posX, posY, posZ, motionX, motionY, motionZ);
+        }
+        // ----- Carpet End ----- //
         this.setPosition(this.posX, this.posY, this.posZ);
     }
 
+    /**
+     * Will get destroyed next tick. 
+     */
+    @Override
+    public void remove() {
+        super.remove();
+        // ----- Carpet Start ----- //
+        if (LoggerRegistry.__projectiles && logHelper ! = null)
+            logHelper.onFinish();
+        // ----- Carpet End ----- //
+    }
+
     protected float getGravityVelocity()
     {
         return 0.03F;
