<commit_before>--- ../src_base/minecraft/net/minecraft/item/Item.java
+++ ../src_work/minecraft/net/minecraft/item/Item.java
@@ -11,13 +11,18 @@
 import java.util.UUID;
 import net.minecraft.block.Block;
 import net.minecraft.block.material.Material;
+import net.minecraft.client.gui.FontRenderer;
+import net.minecraft.client.gui.ScaledResolution;
+import net.minecraft.client.model.ModelBiped;
 import net.minecraft.client.renderer.texture.IconRegister;
 import net.minecraft.creativetab.CreativeTabs;
 import net.minecraft.entity.Entity;
 import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.item.EntityItem;
 import net.minecraft.entity.item.EntityItemFrame;
 import net.minecraft.entity.item.EntityPainting;
 import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
 import net.minecraft.potion.Potion;
 import net.minecraft.potion.PotionHelper;
 import net.minecraft.stats.StatList;
@@ -26,7 +31,9 @@
 import net.minecraft.util.MovingObjectPosition;
 import net.minecraft.util.StatCollector;
 import net.minecraft.util.Vec3;
+import net.minecraft.util.WeightedRandomChestContent;
 import net.minecraft.world.World;
+import net.minecraftforge.common.ChestGenHooks;
 
 public class Item
 {
@@ -250,13 +257,16 @@
     /** The string associated with this Item's Icon. */
     protected String iconString;
 
+    /** FORGE: To disable repair recipes. */
+    protected boolean canRepair = true;
+
     public Item(int par1)
     {
         this.itemID = 256 + par1;
 
         if (itemsList[256 + par1] != null)
         {
-            System.out.println("CONFLICT @ " + par1);
+            System.out.println("CONFLICT @ " + par1 + " item slot already occupied by " + itemsList[256 + par1] + " while adding " + this);
         }
 
         itemsList[256 + par1] = this;
@@ -606,6 +616,7 @@
     }
 
     @SideOnly(Side.CLIENT)
+    @Deprecated //Render pass sensitive version below.
     public boolean hasEffect(ItemStack par1ItemStack)
     {
         return par1ItemStack.isItemEnchanted();
@@ -645,6 +656,10 @@
         float f7 = f4 * f5;
         float f8 = f3 * f5;
         double d3 = 5.0D;
+        if (par2EntityPlayer instanceof EntityPlayerMP)
+        {
+            d3 = ((EntityPlayerMP)par2EntityPlayer).theItemInWorldManager.getBlockReachDistance();
+        }
         Vec3 vec31 = vec3.addVector((double)f7 * d3, (double)f6 * d3, (double)f8 * d3);
         return par1World.rayTraceBlocks_do_do(vec3, vec31, par3, !par3);
     }
@@ -753,4 +768,534 @@
     {
         StatList.initStats();
     }
+
+    /* =========================================================== FORGE START ===============================================================*/
+    /**
+     * Called when a player drops the item into the world,<commit_msg>Allows proper raytracing from actual player eye position rather than hardcoded eye heights.<commit_after>--- ../src_base/minecraft/net/minecraft/item/Item.java
+++ ../src_work/minecraft/net/minecraft/item/Item.java
@@ -11,13 +11,18 @@
 import java.util.UUID;
 import net.minecraft.block.Block;
 import net.minecraft.block.material.Material;
+import net.minecraft.client.gui.FontRenderer;
+import net.minecraft.client.gui.ScaledResolution;
+import net.minecraft.client.model.ModelBiped;
 import net.minecraft.client.renderer.texture.IconRegister;
 import net.minecraft.creativetab.CreativeTabs;
 import net.minecraft.entity.Entity;
 import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.item.EntityItem;
 import net.minecraft.entity.item.EntityItemFrame;
 import net.minecraft.entity.item.EntityPainting;
 import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
 import net.minecraft.potion.Potion;
 import net.minecraft.potion.PotionHelper;
 import net.minecraft.stats.StatList;
@@ -26,7 +31,9 @@
 import net.minecraft.util.MovingObjectPosition;
 import net.minecraft.util.StatCollector;
 import net.minecraft.util.Vec3;
+import net.minecraft.util.WeightedRandomChestContent;
 import net.minecraft.world.World;
+import net.minecraftforge.common.ChestGenHooks;
 
 public class Item
 {
@@ -250,13 +257,16 @@
     /** The string associated with this Item's Icon. */
     protected String iconString;
 
+    /** FORGE: To disable repair recipes. */
+    protected boolean canRepair = true;
+
     public Item(int par1)
     {
         this.itemID = 256 + par1;
 
         if (itemsList[256 + par1] != null)
         {
-            System.out.println("CONFLICT @ " + par1);
+            System.out.println("CONFLICT @ " + par1 + " item slot already occupied by " + itemsList[256 + par1] + " while adding " + this);
         }
 
         itemsList[256 + par1] = this;
@@ -606,6 +616,7 @@
     }
 
     @SideOnly(Side.CLIENT)
+    @Deprecated //Render pass sensitive version below.
     public boolean hasEffect(ItemStack par1ItemStack)
     {
         return par1ItemStack.isItemEnchanted();
@@ -635,7 +646,7 @@
         float f1 = par2EntityPlayer.prevRotationPitch + (par2EntityPlayer.rotationPitch - par2EntityPlayer.prevRotationPitch) * f;
         float f2 = par2EntityPlayer.prevRotationYaw + (par2EntityPlayer.rotationYaw - par2EntityPlayer.prevRotationYaw) * f;
         double d0 = par2EntityPlayer.prevPosX + (par2EntityPlayer.posX - par2EntityPlayer.prevPosX) * (double)f;
-        double d1 = par2EntityPlayer.prevPosY + (par2EntityPlayer.posY - par2EntityPlayer.prevPosY) * (double)f + 1.62D - (double)par2EntityPlayer.yOffset;
+        double d1 = par2EntityPlayer.prevPosY + (par2EntityPlayer.posY - par2EntityPlayer.prevPosY) * (double)f + (double)(par1World.isRemote ? par2EntityPlayer.getEyeHeight() - par2EntityPlayer.getDefaultEyeHeight() : par2EntityPlayer.getEyeHeight()); // isRemote check to revert changes to ray trace position due to adding the eye height clientside and player yOffset differences
         double d2 = par2EntityPlayer.prevPosZ + (par2EntityPlayer.posZ - par2EntityPlayer.prevPosZ) * (double)f;
         Vec3 vec3 = par1World.getWorldVec3Pool().getVecFromPool(d0, d1, d2);
         float f3 = MathHelper.cos(-f2 * 0.017453292F - (float)Math.PI);
@@ -645,6 +656,10 @@
         float f7 = f4 * f5;
         float f8 = f3 * f5;
         double d3 = 5.0D;
+        if (par2EntityPlayer instanceof EntityPlayerMP)
+        {
+            d3 = ((EntityPlayerMP)par2EntityPlayer).theItemInWorldManager.getBlockReachDistance();
+        }
         Vec3 vec31 = vec3.addVector((double)f7 * d3, (double)f6 * d3, (double)f8 * d3);
         return par1World.rayTraceBlocks_do_do(vec3, vec31, par3, !par3);
     }
@@ -753,4 +768,534 @@
     {
         StatList.initStats();
     }
+
+    /* =========================================================== FORGE START ===============================================================*/
+    /**
+     * Called when a player drops the item into the world,
{'fraction_non_alphanumeric': 0.15494999275257285, 'fraction_numerical': 0.037831569792723584, 'mean_word_length': 3.5098039215686274, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5320309', 'n_tokens_mistral': 2268, 'n_tokens_neox': 2171, 'n_words': 421}