From aca35c75719a2bed016f529658afc89c2d615163 Mon Sep 17 00:00:00 2001 From: Christian Date: Tue, 18 Dec 2012 22:10:15 -0500 Subject: [PATCH 1/2] Fix up block drops for skulls and cocoa --- .../net/minecraft/block/BlockCocoa.java.patch | 50 ++++++++++++ .../net/minecraft/block/BlockSkull.java.patch | 76 +++++++++++++++++++ 2 files changed, 126 insertions(+) create mode 100644 patches/minecraft/net/minecraft/block/BlockCocoa.java.patch create mode 100644 patches/minecraft/net/minecraft/block/BlockSkull.java.patch diff --git a/patches/minecraft/net/minecraft/block/BlockCocoa.java.patch b/patches/minecraft/net/minecraft/block/BlockCocoa.java.patch new file mode 100644 index 000000000..2426adf23 --- /dev/null +++ b/patches/minecraft/net/minecraft/block/BlockCocoa.java.patch @@ -0,0 +1,50 @@ +--- ../src_base/minecraft/net/minecraft/block/BlockCocoa.java ++++ ../src_work/minecraft/net/minecraft/block/BlockCocoa.java +@@ -2,6 +2,8 @@ + + import cpw.mods.fml.relauncher.Side; + import cpw.mods.fml.relauncher.SideOnly; ++ ++import java.util.ArrayList; + import java.util.Random; + import net.minecraft.block.material.Material; + import net.minecraft.entity.EntityLiving; +@@ -172,7 +174,14 @@ + */ + public void dropBlockAsItemWithChance(World par1World, int par2, int par3, int par4, int par5, float par6, int par7) + { +- int var8 = func_72219_c(par5); ++ super.dropBlockAsItemWithChance(par1World, par2, par3, par4, par5, par6, 0); ++ } ++ ++ @Override ++ public ArrayList getBlockDropped(World world, int x, int y, int z, int metadata, int fortune) ++ { ++ ArrayList dropped = super.getBlockDropped(world, x, y, z, metadata, fortune); ++ int var8 = func_72219_c(metadata); + byte var9 = 1; + + if (var8 >= 2) +@@ -182,8 +191,9 @@ + + for (int var10 = 0; var10 < var9; ++var10) + { +- this.dropBlockAsItem_do(par1World, par2, par3, par4, new ItemStack(Item.dyePowder, 1, 3)); +- } ++ dropped.add(new ItemStack(Item.dyePowder, 1, 3)); ++ } ++ return dropped; + } + + @SideOnly(Side.CLIENT) +@@ -203,4 +213,10 @@ + { + return 3; + } ++ ++ @Override ++ public int idDropped(int par1, Random par2Random, int par3) ++ { ++ return 0; ++ } + } diff --git a/patches/minecraft/net/minecraft/block/BlockSkull.java.patch b/patches/minecraft/net/minecraft/block/BlockSkull.java.patch new file mode 100644 index 000000000..d7fd52031 --- /dev/null +++ b/patches/minecraft/net/minecraft/block/BlockSkull.java.patch @@ -0,0 +1,76 @@ +--- ../src_base/minecraft/net/minecraft/block/BlockSkull.java ++++ ../src_work/minecraft/net/minecraft/block/BlockSkull.java +@@ -2,6 +2,8 @@ + + import cpw.mods.fml.relauncher.Side; + import cpw.mods.fml.relauncher.SideOnly; ++ ++import java.util.ArrayList; + import java.util.Random; + import net.minecraft.block.material.Material; + import net.minecraft.entity.EntityLiving; +@@ -133,11 +135,6 @@ + } + + /** +- * Drops the block items with a specified chance of dropping the specified items +- */ +- public void dropBlockAsItemWithChance(World par1World, int par2, int par3, int par4, int par5, float par6, int par7) {} +- +- /** + * Called when the block is attempted to be harvested + */ + public void onBlockHarvested(World par1World, int par2, int par3, int par4, int par5, EntityPlayer par6EntityPlayer) +@@ -156,26 +153,32 @@ + */ + public void breakBlock(World par1World, int par2, int par3, int par4, int par5, int par6) + { +- if (!par1World.isRemote) +- { +- if ((par6 & 8) == 0) +- { +- ItemStack var7 = new ItemStack(Item.skull.shiftedIndex, 1, this.getDamageValue(par1World, par2, par3, par4)); +- TileEntitySkull var8 = (TileEntitySkull)par1World.getBlockTileEntity(par2, par3, par4); +- +- if (var8.func_82117_a() == 3 && var8.func_82120_c() != null && var8.func_82120_c().length() > 0) +- { +- var7.setTagCompound(new NBTTagCompound()); +- var7.getTagCompound().setString("SkullOwner", var8.func_82120_c()); +- } +- +- this.dropBlockAsItem_do(par1World, par2, par3, par4, var7); +- } +- +- super.breakBlock(par1World, par2, par3, par4, par5, par6); +- } +- } +- ++ dropBlockAsItem(par1World, par2, par3, par4, par5, par6); ++ super.breakBlock(par1World, par2, par3, par4, par5, par6); ++ } ++ ++ @Override ++ public ArrayList getBlockDropped(World world, int x, int y, int z, int metadata, int fortune) ++ { ++ ArrayList drops = new ArrayList(); ++ if ((metadata & 8) == 0) ++ { ++ ItemStack var7 = new ItemStack(Item.skull.shiftedIndex, 1, this.getDamageValue(world, x, y, z)); ++ TileEntitySkull var8 = (TileEntitySkull)world.getBlockTileEntity(x, y, z); ++ ++ if (var8 == null) ++ { ++ return drops; ++ } ++ if (var8.func_82117_a() == 3 && var8.func_82120_c() != null && var8.func_82120_c().length() > 0) ++ { ++ var7.setTagCompound(new NBTTagCompound()); ++ var7.getTagCompound().setString("SkullOwner", var8.func_82120_c()); ++ } ++ drops.add(var7); ++ } ++ return drops; ++ } + /** + * Returns the ID of the items to drop on destruction. + */ From aed532636a6ecd0638c48c445a62316cffb60237 Mon Sep 17 00:00:00 2001 From: Christian Date: Tue, 18 Dec 2012 22:17:02 -0500 Subject: [PATCH 2/2] Drop the item in onBlockHarvested, not breakBlock --- .../net/minecraft/block/BlockSkull.java.patch | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/patches/minecraft/net/minecraft/block/BlockSkull.java.patch b/patches/minecraft/net/minecraft/block/BlockSkull.java.patch index d7fd52031..ca0ef13ca 100644 --- a/patches/minecraft/net/minecraft/block/BlockSkull.java.patch +++ b/patches/minecraft/net/minecraft/block/BlockSkull.java.patch @@ -21,7 +21,16 @@ * Called when the block is attempted to be harvested */ public void onBlockHarvested(World par1World, int par2, int par3, int par4, int par5, EntityPlayer par6EntityPlayer) -@@ -156,26 +153,32 @@ +@@ -148,6 +145,8 @@ + par1World.setBlockMetadataWithNotify(par2, par3, par4, par5); + } + ++ dropBlockAsItem(par1World, par2, par3, par4, par5, 0); ++ + super.onBlockHarvested(par1World, par2, par3, par4, par5, par6EntityPlayer); + } + +@@ -156,26 +155,31 @@ */ public void breakBlock(World par1World, int par2, int par3, int par4, int par5, int par6) { @@ -45,7 +54,6 @@ - } - } - -+ dropBlockAsItem(par1World, par2, par3, par4, par5, par6); + super.breakBlock(par1World, par2, par3, par4, par5, par6); + } +