95 lines
4.0 KiB
Diff
95 lines
4.0 KiB
Diff
--- ../src_base/minecraft/net/minecraft/src/BlockLeaves.java 0000-00-00 00:00:00.000000000 -0000
|
|
+++ ../src_work/minecraft/net/minecraft/src/BlockLeaves.java 0000-00-00 00:00:00.000000000 -0000
|
|
@@ -1,8 +1,11 @@
|
|
package net.minecraft.src;
|
|
|
|
+import java.util.ArrayList;
|
|
import java.util.Random;
|
|
|
|
-public class BlockLeaves extends BlockLeavesBase
|
|
+import net.minecraft.src.forge.IShearable;
|
|
+
|
|
+public class BlockLeaves extends BlockLeavesBase implements IShearable
|
|
{
|
|
/**
|
|
* The base index in terrain.png corresponding to the fancy version of the leaf texture. This is stored so we can
|
|
@@ -88,10 +91,9 @@
|
|
{
|
|
int var10 = par1World.getBlockId(par2 + var7, par3 + var8, par4 + var9);
|
|
|
|
- if (var10 == Block.leaves.blockID)
|
|
+ if (Block.blocksList[var10] != null)
|
|
{
|
|
- int var11 = par1World.getBlockMetadata(par2 + var7, par3 + var8, par4 + var9);
|
|
- par1World.setBlockMetadata(par2 + var7, par3 + var8, par4 + var9, var11 | 8);
|
|
+ Block.blocksList[var10].beginLeavesDecay(par1World, par2 + var7, par3 + var8, par4 + var9);
|
|
}
|
|
}
|
|
}
|
|
@@ -136,12 +138,14 @@
|
|
for (var14 = -var7; var14 <= var7; ++var14)
|
|
{
|
|
var15 = par1World.getBlockId(par2 + var12, par3 + var13, par4 + var14);
|
|
-
|
|
- if (var15 == Block.wood.blockID)
|
|
+
|
|
+ Block block = Block.blocksList[var15];
|
|
+
|
|
+ if (block != null && block.canSustainLeaves(par1World, par2 + var12, par3 + var13, par4 + var14))
|
|
{
|
|
this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = 0;
|
|
}
|
|
- else if (var15 == Block.leaves.blockID)
|
|
+ else if (block != null && block.isLeaves(par1World, par2 + var12, par3 + var13, par4 + var14))
|
|
{
|
|
this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = -2;
|
|
}
|
|
@@ -268,15 +272,7 @@
|
|
*/
|
|
public void harvestBlock(World par1World, EntityPlayer par2EntityPlayer, int par3, int par4, int par5, int par6)
|
|
{
|
|
- if (!par1World.isRemote && par2EntityPlayer.getCurrentEquippedItem() != null && par2EntityPlayer.getCurrentEquippedItem().itemID == Item.shears.shiftedIndex)
|
|
- {
|
|
- par2EntityPlayer.addStat(StatList.mineBlockStatArray[this.blockID], 1);
|
|
- this.dropBlockAsItem_do(par1World, par3, par4, par5, new ItemStack(Block.leaves.blockID, 1, par6 & 3));
|
|
- }
|
|
- else
|
|
- {
|
|
- super.harvestBlock(par1World, par2EntityPlayer, par3, par4, par5, par6);
|
|
- }
|
|
+ super.harvestBlock(par1World, par2EntityPlayer, par3, par4, par5, par6);
|
|
}
|
|
|
|
/**
|
|
@@ -320,4 +316,30 @@
|
|
{
|
|
super.onEntityWalking(par1World, par2, par3, par4, par5Entity);
|
|
}
|
|
+
|
|
+ @Override
|
|
+ public boolean isShearable(ItemStack item, World world, int x, int y, int z)
|
|
+ {
|
|
+ return true;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public ArrayList<ItemStack> onSheared(ItemStack item, World world, int x, int y, int z, int fortune)
|
|
+ {
|
|
+ ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
|
|
+ ret.add(new ItemStack(this, 1, world.getBlockMetadata(x, y, z) & 3));
|
|
+ return ret;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void beginLeavesDecay(World world, int x, int y, int z)
|
|
+ {
|
|
+ world.setBlockMetadata(x, y, z, world.getBlockMetadata(x, y, z) | 8);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public boolean isLeaves(World world, int x, int y, int z)
|
|
+ {
|
|
+ return true;
|
|
+ }
|
|
}
|