New Hooks addedf for custom tree/leaves. And better interaction with trees growing and rerplacing certain blocks. Should allow for ExtraBiomes to behave nicer, and RedPower to make there blocks un-breakable by trees.
This commit is contained in:
parent
63453137b3
commit
3b523d57a9
|
@ -80,7 +80,7 @@
|
||||||
{
|
{
|
||||||
ItemStack var8 = this.createStackedBlock(par6);
|
ItemStack var8 = this.createStackedBlock(par6);
|
||||||
|
|
||||||
@@ -1058,6 +1058,512 @@
|
@@ -1058,6 +1058,591 @@
|
||||||
*/
|
*/
|
||||||
public void onFallenUpon(World par1World, int par2, int par3, int par4, Entity par5Entity, float par6) {}
|
public void onFallenUpon(World par1World, int par2, int par3, int par4, Entity par5Entity, float par6) {}
|
||||||
|
|
||||||
|
@ -589,6 +589,85 @@
|
||||||
+ {
|
+ {
|
||||||
+ return BlockBed.isBlockFootOfBed(world.getBlockMetadata(x, y, z));
|
+ return BlockBed.isBlockFootOfBed(world.getBlockMetadata(x, y, z));
|
||||||
+ }
|
+ }
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Called when a leaf should start its decay process.
|
||||||
|
+ *
|
||||||
|
+ * @param world The current world
|
||||||
|
+ * @param x X Position
|
||||||
|
+ * @param y Y Position
|
||||||
|
+ * @param z Z Position
|
||||||
|
+ */
|
||||||
|
+ public void beginLeavesDecay(World world, int x, int y, int z){}
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Determines if this block can prevent leaves connected to it from decaying.
|
||||||
|
+ *
|
||||||
|
+ * @param world The current world
|
||||||
|
+ * @param x X Position
|
||||||
|
+ * @param y Y Position
|
||||||
|
+ * @param z Z Position
|
||||||
|
+ * @return true if the presence this block can prevent leaves from decaying.
|
||||||
|
+ */
|
||||||
|
+ public boolean canSustainLeaves(World world, int x, int y, int z)
|
||||||
|
+ {
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Determines if this block is considered a leaf block, used to apply the leaf decay and generation system.
|
||||||
|
+ *
|
||||||
|
+ * @param world The current world
|
||||||
|
+ * @param x X Position
|
||||||
|
+ * @param y Y Position
|
||||||
|
+ * @param z Z Position
|
||||||
|
+ * @return true if this block is considered leaves.
|
||||||
|
+ */
|
||||||
|
+ public boolean isLeaves(World world, int x, int y, int z)
|
||||||
|
+ {
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Used during tree growth to determine if newly generated leaves can replace this block.
|
||||||
|
+ *
|
||||||
|
+ * @param world The current world
|
||||||
|
+ * @param x X Position
|
||||||
|
+ * @param y Y Position
|
||||||
|
+ * @param z Z Position
|
||||||
|
+ * @return true if this block can be replaced by growing leaves.
|
||||||
|
+ */
|
||||||
|
+ public boolean canBeReplacedByLeaves(World world, int x, int y, int z)
|
||||||
|
+ {
|
||||||
|
+ return !Block.opaqueCubeLookup[this.blockID];
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ *
|
||||||
|
+ * @param world The current world
|
||||||
|
+ * @param x X Position
|
||||||
|
+ * @param y Y Position
|
||||||
|
+ * @param z Z Position
|
||||||
|
+ * @return true if the block is wood (logs)
|
||||||
|
+ */
|
||||||
|
+ public boolean isWood(World world, int x, int y, int z)
|
||||||
|
+ {
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Determines if the current block is replaceable by Ore veins during world generation.
|
||||||
|
+ *
|
||||||
|
+ * @param world The current world
|
||||||
|
+ * @param x X Position
|
||||||
|
+ * @param y Y Position
|
||||||
|
+ * @param z Z Position
|
||||||
|
+ * @return True to allow this block to be replaced by a ore
|
||||||
|
+ */
|
||||||
|
+ public boolean isGenMineableReplaceable(World world, int x, int y, int z)
|
||||||
|
+ {
|
||||||
|
+ return blockID == stone.blockID;
|
||||||
|
+ }
|
||||||
+
|
+
|
||||||
static
|
static
|
||||||
{
|
{
|
||||||
|
|
|
@ -13,7 +13,38 @@
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* The base index in terrain.png corresponding to the fancy version of the leaf texture. This is stored so we can
|
* The base index in terrain.png corresponding to the fancy version of the leaf texture. This is stored so we can
|
||||||
@@ -268,15 +271,7 @@
|
@@ -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)
|
public void harvestBlock(World par1World, EntityPlayer par2EntityPlayer, int par3, int par4, int par5, int par6)
|
||||||
{
|
{
|
||||||
|
@ -30,7 +61,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -320,4 +315,18 @@
|
@@ -320,4 +316,30 @@
|
||||||
{
|
{
|
||||||
super.onEntityWalking(par1World, par2, par3, par4, par5Entity);
|
super.onEntityWalking(par1World, par2, par3, par4, par5Entity);
|
||||||
}
|
}
|
||||||
|
@ -47,5 +78,17 @@
|
||||||
+ ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
|
+ ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
|
||||||
+ ret.add(new ItemStack(this, 1, world.getBlockMetadata(x, y, z) & 3));
|
+ ret.add(new ItemStack(this, 1, world.getBlockMetadata(x, y, z) & 3));
|
||||||
+ return ret;
|
+ 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;
|
||||||
+ }
|
+ }
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
--- ../src_base/minecraft/net/minecraft/src/BlockLog.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft/net/minecraft/src/BlockLog.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -53,14 +53,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);
|
||||||
|
-
|
||||||
|
- if ((var11 & 8) == 0)
|
||||||
|
- {
|
||||||
|
- par1World.setBlockMetadata(par2 + var7, par3 + var8, par4 + var9, var11 | 8);
|
||||||
|
- }
|
||||||
|
+ Block.blocksList[var10].beginLeavesDecay(par1World, par2 + var7, par3 + var8, par4 + var9);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -83,4 +78,16 @@
|
||||||
|
{
|
||||||
|
return par1;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public boolean canSustainLeaves(World world, int x, int y, int z)
|
||||||
|
+ {
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public boolean isWood(World world, int x, int y, int z)
|
||||||
|
+ {
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
}
|
|
@ -1,6 +1,16 @@
|
||||||
--- ../src_base/minecraft/net/minecraft/src/BlockSnow.java 0000-00-00 00:00:00.000000000 -0000
|
--- ../src_base/minecraft/net/minecraft/src/BlockSnow.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
+++ ../src_work/minecraft/net/minecraft/src/BlockSnow.java 0000-00-00 00:00:00.000000000 -0000
|
+++ ../src_work/minecraft/net/minecraft/src/BlockSnow.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
@@ -73,7 +73,6 @@
|
@@ -54,7 +54,8 @@
|
||||||
|
public boolean canPlaceBlockAt(World par1World, int par2, int par3, int par4)
|
||||||
|
{
|
||||||
|
int var5 = par1World.getBlockId(par2, par3 - 1, par4);
|
||||||
|
- return var5 != 0 && (var5 == Block.leaves.blockID || Block.blocksList[var5].isOpaqueCube()) ? par1World.getBlockMaterial(par2, par3 - 1, par4).blocksMovement() : false;
|
||||||
|
+ Block block = Block.blocksList[var5];
|
||||||
|
+ return block != null && (block.isLeaves(par1World, par2, par3 - 1, par4) || Block.blocksList[var5].isOpaqueCube()) ? par1World.getBlockMaterial(par2, par3 - 1, par4).blocksMovement() : false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@@ -73,7 +74,6 @@
|
||||||
{
|
{
|
||||||
if (!this.canPlaceBlockAt(par1World, par2, par3, par4))
|
if (!this.canPlaceBlockAt(par1World, par2, par3, par4))
|
||||||
{
|
{
|
||||||
|
@ -8,7 +18,7 @@
|
||||||
par1World.setBlockWithNotify(par2, par3, par4, 0);
|
par1World.setBlockWithNotify(par2, par3, par4, 0);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -89,15 +88,7 @@
|
@@ -89,15 +89,7 @@
|
||||||
*/
|
*/
|
||||||
public void harvestBlock(World par1World, EntityPlayer par2EntityPlayer, int par3, int par4, int par5, int par6)
|
public void harvestBlock(World par1World, EntityPlayer par2EntityPlayer, int par3, int par4, int par5, int par6)
|
||||||
{
|
{
|
||||||
|
@ -25,7 +35,7 @@
|
||||||
par2EntityPlayer.addStat(StatList.mineBlockStatArray[this.blockID], 1);
|
par2EntityPlayer.addStat(StatList.mineBlockStatArray[this.blockID], 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,7 +105,7 @@
|
@@ -114,7 +106,7 @@
|
||||||
*/
|
*/
|
||||||
public int quantityDropped(Random par1Random)
|
public int quantityDropped(Random par1Random)
|
||||||
{
|
{
|
||||||
|
@ -34,7 +44,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -124,7 +115,6 @@
|
@@ -124,7 +116,6 @@
|
||||||
{
|
{
|
||||||
if (par1World.getSavedLightValue(EnumSkyBlock.Block, par2, par3, par4) > 11)
|
if (par1World.getSavedLightValue(EnumSkyBlock.Block, par2, par3, par4) > 11)
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
--- ../src_base/minecraft/net/minecraft/src/EntityOcelot.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft/net/minecraft/src/EntityOcelot.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -318,7 +318,8 @@
|
||||||
|
|
||||||
|
int var4 = this.worldObj.getBlockId(var1, var2 - 1, var3);
|
||||||
|
|
||||||
|
- if (var4 == Block.grass.blockID || var4 == Block.leaves.blockID)
|
||||||
|
+ Block block = Block.blocksList[var4];
|
||||||
|
+ if (var4 == Block.grass.blockID || (block != null && block.isLeaves(worldObj, var1, var2 - 1, var3)))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
--- ../src_base/minecraft/net/minecraft/src/WorldGenBigMushroom.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft/net/minecraft/src/WorldGenBigMushroom.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -54,7 +54,9 @@
|
||||||
|
{
|
||||||
|
var13 = par1World.getBlockId(var11, var9, var12);
|
||||||
|
|
||||||
|
- if (var13 != 0 && var13 != Block.leaves.blockID)
|
||||||
|
+ Block block = Block.blocksList[var13];
|
||||||
|
+
|
||||||
|
+ if (var13 != 0 && block != null && !block.isLeaves(par1World, var11, var9, var12))
|
||||||
|
{
|
||||||
|
var8 = false;
|
||||||
|
}
|
||||||
|
@@ -186,7 +188,9 @@
|
||||||
|
var15 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if ((var15 != 0 || par4 >= par4 + var7 - 1) && !Block.opaqueCubeLookup[par1World.getBlockId(var13, var11, var14)])
|
||||||
|
+ Block block = Block.blocksList[par1World.getBlockId(var13, var11, var14)];
|
||||||
|
+
|
||||||
|
+ if ((var15 != 0 || par4 >= par4 + var7 - 1) && (block != null && block.canBeReplacedByLeaves(par1World, var13, var11, var14)))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, var13, var11, var14, Block.mushroomCapBrown.blockID + var6, var15);
|
||||||
|
}
|
||||||
|
@@ -198,7 +202,9 @@
|
||||||
|
{
|
||||||
|
var12 = par1World.getBlockId(par3, par4 + var11, par5);
|
||||||
|
|
||||||
|
- if (!Block.opaqueCubeLookup[var12])
|
||||||
|
+ Block block = Block.blocksList[var12];
|
||||||
|
+
|
||||||
|
+ if (block != null && block.canBeReplacedByLeaves(par1World, par3, par4 + var11, par5))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, par3, par4 + var11, par5, Block.mushroomCapBrown.blockID + var6, 10);
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
--- ../src_base/minecraft/net/minecraft/src/WorldGenDeadBush.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft/net/minecraft/src/WorldGenDeadBush.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -16,10 +16,16 @@
|
||||||
|
{
|
||||||
|
int var11;
|
||||||
|
|
||||||
|
- for (boolean var6 = false; ((var11 = par1World.getBlockId(par3, par4, par5)) == 0 || var11 == Block.leaves.blockID) && par4 > 0; --par4)
|
||||||
|
+ Block block = null;
|
||||||
|
+ do
|
||||||
|
{
|
||||||
|
- ;
|
||||||
|
- }
|
||||||
|
+ block = Block.blocksList[par1World.getBlockId(par3, par4, par5)];
|
||||||
|
+ if (block != null && !block.isLeaves(par1World, par3, par4, par5))
|
||||||
|
+ {
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ par4--;
|
||||||
|
+ } while (par4 > 0);
|
||||||
|
|
||||||
|
for (int var7 = 0; var7 < 4; ++var7)
|
||||||
|
{
|
|
@ -0,0 +1,36 @@
|
||||||
|
--- ../src_base/minecraft/net/minecraft/src/WorldGenForest.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft/net/minecraft/src/WorldGenForest.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -43,7 +43,9 @@
|
||||||
|
{
|
||||||
|
var12 = par1World.getBlockId(var10, var8, var11);
|
||||||
|
|
||||||
|
- if (var12 != 0 && var12 != Block.leaves.blockID)
|
||||||
|
+ Block block = Block.blocksList[var12];
|
||||||
|
+
|
||||||
|
+ if (var12 != 0 && (block != null && block.isLeaves(par1World, var10, var8, var11)))
|
||||||
|
{
|
||||||
|
var7 = false;
|
||||||
|
}
|
||||||
|
@@ -82,7 +84,10 @@
|
||||||
|
{
|
||||||
|
int var15 = var14 - par5;
|
||||||
|
|
||||||
|
- if ((Math.abs(var13) != var11 || Math.abs(var15) != var11 || par2Random.nextInt(2) != 0 && var10 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var12, var16, var14)])
|
||||||
|
+ Block block = Block.blocksList[par1World.getBlockId(var12, var16, var14)];
|
||||||
|
+
|
||||||
|
+ if ((Math.abs(var13) != var11 || Math.abs(var15) != var11 || par2Random.nextInt(2) != 0 && var10 != 0) &&
|
||||||
|
+ (block != null && block.canBeReplacedByLeaves(par1World, var12, var16, var14)))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, var12, var16, var14, Block.leaves.blockID, 2);
|
||||||
|
}
|
||||||
|
@@ -94,7 +99,9 @@
|
||||||
|
{
|
||||||
|
var10 = par1World.getBlockId(par3, par4 + var16, par5);
|
||||||
|
|
||||||
|
- if (var10 == 0 || var10 == Block.leaves.blockID)
|
||||||
|
+ Block block = Block.blocksList[var10];
|
||||||
|
+
|
||||||
|
+ if (var10 == 0 || (block != null && block.isLeaves(par1World, par3, par4 + var16, par5)))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Block.wood.blockID, 2);
|
||||||
|
}
|
|
@ -0,0 +1,66 @@
|
||||||
|
--- ../src_base/minecraft/net/minecraft/src/WorldGenHugeTrees.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft/net/minecraft/src/WorldGenHugeTrees.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -54,7 +54,12 @@
|
||||||
|
{
|
||||||
|
var12 = par1World.getBlockId(var10, var8, var11);
|
||||||
|
|
||||||
|
- if (var12 != 0 && var12 != Block.leaves.blockID && var12 != Block.grass.blockID && var12 != Block.dirt.blockID && var12 != Block.wood.blockID && var12 != Block.sapling.blockID)
|
||||||
|
+ if (var12 != 0 &&
|
||||||
|
+ (Block.blocksList[var12] != null && !Block.blocksList[var12].isLeaves(par1World, var10, var8, var11)) &&
|
||||||
|
+ var12 != Block.grass.blockID &&
|
||||||
|
+ var12 != Block.dirt.blockID &&
|
||||||
|
+ (Block.blocksList[var12] != null && !Block.blocksList[var12].isWood(par1World, var10, var8, var11)) &&
|
||||||
|
+ var12 != Block.sapling.blockID)
|
||||||
|
{
|
||||||
|
var7 = false;
|
||||||
|
}
|
||||||
|
@@ -102,7 +107,7 @@
|
||||||
|
{
|
||||||
|
var11 = par1World.getBlockId(par3, par4 + var10, par5);
|
||||||
|
|
||||||
|
- if (var11 == 0 || var11 == Block.leaves.blockID)
|
||||||
|
+ if (var11 == 0 || Block.blocksList[var11] == null || Block.blocksList[var11].isLeaves(par1World, par3, par4 + var10, par5))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, par3, par4 + var10, par5, Block.wood.blockID, this.woodMetadata);
|
||||||
|
|
||||||
|
@@ -124,7 +129,7 @@
|
||||||
|
{
|
||||||
|
var11 = par1World.getBlockId(par3 + 1, par4 + var10, par5);
|
||||||
|
|
||||||
|
- if (var11 == 0 || var11 == Block.leaves.blockID)
|
||||||
|
+ if (var11 == 0 || Block.blocksList[var11] == null || Block.blocksList[var11].isLeaves(par1World, par3 + 1, par4 + var10, par5))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, par3 + 1, par4 + var10, par5, Block.wood.blockID, this.woodMetadata);
|
||||||
|
|
||||||
|
@@ -144,7 +149,7 @@
|
||||||
|
|
||||||
|
var11 = par1World.getBlockId(par3 + 1, par4 + var10, par5 + 1);
|
||||||
|
|
||||||
|
- if (var11 == 0 || var11 == Block.leaves.blockID)
|
||||||
|
+ if (var11 == 0 || Block.blocksList[var11] == null || Block.blocksList[var11].isLeaves(par1World, par3 + 1, par4 + var10, par5 + 1))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, par3 + 1, par4 + var10, par5 + 1, Block.wood.blockID, this.woodMetadata);
|
||||||
|
|
||||||
|
@@ -164,7 +169,7 @@
|
||||||
|
|
||||||
|
var11 = par1World.getBlockId(par3, par4 + var10, par5 + 1);
|
||||||
|
|
||||||
|
- if (var11 == 0 || var11 == Block.leaves.blockID)
|
||||||
|
+ if (var11 == 0 || Block.blocksList[var11] == null || Block.blocksList[var11].isLeaves(par1World, par3, par4 + var10, par5 + 1))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, par3, par4 + var10, par5 + 1, Block.wood.blockID, this.woodMetadata);
|
||||||
|
|
||||||
|
@@ -215,7 +220,12 @@
|
||||||
|
{
|
||||||
|
int var14 = var13 - par3;
|
||||||
|
|
||||||
|
- if ((var12 >= 0 || var14 >= 0 || var12 * var12 + var14 * var14 <= var10 * var10) && (var12 <= 0 && var14 <= 0 || var12 * var12 + var14 * var14 <= (var10 + 1) * (var10 + 1)) && (par6Random.nextInt(4) != 0 || var12 * var12 + var14 * var14 <= (var10 - 1) * (var10 - 1)) && !Block.opaqueCubeLookup[par1World.getBlockId(var11, var8, var13)])
|
||||||
|
+ Block block = Block.blocksList[par1World.getBlockId(var11, var8, var13)];
|
||||||
|
+
|
||||||
|
+ if ((var12 >= 0 || var14 >= 0 || var12 * var12 + var14 * var14 <= var10 * var10) &&
|
||||||
|
+ (var12 <= 0 && var14 <= 0 || var12 * var12 + var14 * var14 <= (var10 + 1) * (var10 + 1)) &&
|
||||||
|
+ (par6Random.nextInt(4) != 0 || var12 * var12 + var14 * var14 <= (var10 - 1) * (var10 - 1)) &&
|
||||||
|
+ (block == null || block.canBeReplacedByLeaves(par1World, var11, var8, var13)))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, var11, var8, var13, Block.leaves.blockID, this.leavesMetadata);
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
--- ../src_base/minecraft/net/minecraft/src/WorldGenMinable.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft/net/minecraft/src/WorldGenMinable.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -57,7 +57,8 @@
|
||||||
|
{
|
||||||
|
double var45 = ((double)var44 + 0.5D - var24) / (var28 / 2.0D);
|
||||||
|
|
||||||
|
- if (var39 * var39 + var42 * var42 + var45 * var45 < 1.0D && par1World.getBlockId(var38, var41, var44) == Block.stone.blockID)
|
||||||
|
+ Block block = Block.blocksList[par1World.getBlockId(var38, var41, var44)];
|
||||||
|
+ if (var39 * var39 + var42 * var42 + var45 * var45 < 1.0D && (block != null && block.isGenMineableReplaceable(par1World, var38, var41, var44)))
|
||||||
|
{
|
||||||
|
par1World.setBlock(var38, var41, var44, this.minableBlockId);
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
--- ../src_base/minecraft/net/minecraft/src/WorldGenShrub.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft/net/minecraft/src/WorldGenShrub.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -17,10 +17,16 @@
|
||||||
|
{
|
||||||
|
int var15;
|
||||||
|
|
||||||
|
- for (boolean var6 = false; ((var15 = par1World.getBlockId(par3, par4, par5)) == 0 || var15 == Block.leaves.blockID) && par4 > 0; --par4)
|
||||||
|
+ Block block = null;
|
||||||
|
+ do
|
||||||
|
{
|
||||||
|
- ;
|
||||||
|
- }
|
||||||
|
+ block = Block.blocksList[par1World.getBlockId(par3, par4, par5)];
|
||||||
|
+ if (block != null && !block.isLeaves(par1World, par3, par4, par5))
|
||||||
|
+ {
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ par4--;
|
||||||
|
+ } while (par4 > 0);
|
||||||
|
|
||||||
|
int var7 = par1World.getBlockId(par3, par4, par5);
|
||||||
|
|
||||||
|
@@ -42,7 +48,9 @@
|
||||||
|
{
|
||||||
|
int var14 = var13 - par5;
|
||||||
|
|
||||||
|
- if ((Math.abs(var12) != var10 || Math.abs(var14) != var10 || par2Random.nextInt(2) != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var11, var8, var13)])
|
||||||
|
+ block = Block.blocksList[par1World.getBlockId(var11, var8, var13)];
|
||||||
|
+
|
||||||
|
+ if ((Math.abs(var12) != var10 || Math.abs(var14) != var10 || par2Random.nextInt(2) != 0) && (block != null && block.canBeReplacedByLeaves(par1World, var11, var8, var13)))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, var11, var8, var13, Block.leaves.blockID, this.field_48197_a);
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
--- ../src_base/minecraft/net/minecraft/src/WorldGenSwamp.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft/net/minecraft/src/WorldGenSwamp.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -44,7 +44,7 @@
|
||||||
|
{
|
||||||
|
var12 = par1World.getBlockId(var10, var8, var11);
|
||||||
|
|
||||||
|
- if (var12 != 0 && var12 != Block.leaves.blockID)
|
||||||
|
+ if (var12 != 0 && (Block.blocksList[var12] != null && Block.blocksList[var12].isLeaves(par1World, var10, var8, var11)))
|
||||||
|
{
|
||||||
|
if (var12 != Block.waterStill.blockID && var12 != Block.waterMoving.blockID)
|
||||||
|
{
|
||||||
|
@@ -91,7 +91,10 @@
|
||||||
|
{
|
||||||
|
int var15 = var14 - par5;
|
||||||
|
|
||||||
|
- if ((Math.abs(var13) != var11 || Math.abs(var15) != var11 || par2Random.nextInt(2) != 0 && var10 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var12, var16, var14)])
|
||||||
|
+ Block block = Block.blocksList[par1World.getBlockId(var12, var16, var14)];
|
||||||
|
+
|
||||||
|
+ if ((Math.abs(var13) != var11 || Math.abs(var15) != var11 || par2Random.nextInt(2) != 0 && var10 != 0) &&
|
||||||
|
+ (block != null && block.canBeReplacedByLeaves(par1World, var12, var16, var14)))
|
||||||
|
{
|
||||||
|
this.setBlock(par1World, var12, var16, var14, Block.leaves.blockID);
|
||||||
|
}
|
||||||
|
@@ -103,7 +106,9 @@
|
||||||
|
{
|
||||||
|
var10 = par1World.getBlockId(par3, par4 + var16, par5);
|
||||||
|
|
||||||
|
- if (var10 == 0 || var10 == Block.leaves.blockID || var10 == Block.waterMoving.blockID || var10 == Block.waterStill.blockID)
|
||||||
|
+ Block block = Block.blocksList[var10];
|
||||||
|
+
|
||||||
|
+ if (var10 == 0 || (block != null && block.isLeaves(par1World, par3, par4 + var16, par5)) || var10 == Block.waterMoving.blockID || var10 == Block.waterStill.blockID)
|
||||||
|
{
|
||||||
|
this.setBlock(par1World, par3, par4 + var16, par5, Block.wood.blockID);
|
||||||
|
}
|
||||||
|
@@ -118,7 +123,8 @@
|
||||||
|
{
|
||||||
|
for (var13 = par5 - var11; var13 <= par5 + var11; ++var13)
|
||||||
|
{
|
||||||
|
- if (par1World.getBlockId(var12, var16, var13) == Block.leaves.blockID)
|
||||||
|
+ Block block = Block.blocksList[par1World.getBlockId(var12, var16, var13)];
|
||||||
|
+ if (block != null && block.isLeaves(par1World, var12, var16, var13))
|
||||||
|
{
|
||||||
|
if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12 - 1, var16, var13) == 0)
|
||||||
|
{
|
|
@ -0,0 +1,36 @@
|
||||||
|
--- ../src_base/minecraft/net/minecraft/src/WorldGenTaiga1.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft/net/minecraft/src/WorldGenTaiga1.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -41,7 +41,9 @@
|
||||||
|
{
|
||||||
|
var15 = par1World.getBlockId(var13, var11, var14);
|
||||||
|
|
||||||
|
- if (var15 != 0 && var15 != Block.leaves.blockID)
|
||||||
|
+ Block block = Block.blocksList[var15];
|
||||||
|
+
|
||||||
|
+ if (var15 != 0 && (block == null || !block.isLeaves(par1World, var13, var11, var14)))
|
||||||
|
{
|
||||||
|
var10 = false;
|
||||||
|
}
|
||||||
|
@@ -77,7 +79,10 @@
|
||||||
|
{
|
||||||
|
int var17 = var16 - par5;
|
||||||
|
|
||||||
|
- if ((Math.abs(var15) != var18 || Math.abs(var17) != var18 || var18 <= 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var14, var13, var16)])
|
||||||
|
+ Block block = Block.blocksList[par1World.getBlockId(var14, var13, var16)];
|
||||||
|
+
|
||||||
|
+ if ((Math.abs(var15) != var18 || Math.abs(var17) != var18 || var18 <= 0) &&
|
||||||
|
+ (block != null && block.canBeReplacedByLeaves(par1World, var14, var13, var16)))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, var14, var13, var16, Block.leaves.blockID, 1);
|
||||||
|
}
|
||||||
|
@@ -98,7 +103,9 @@
|
||||||
|
{
|
||||||
|
var14 = par1World.getBlockId(par3, par4 + var13, par5);
|
||||||
|
|
||||||
|
- if (var14 == 0 || var14 == Block.leaves.blockID)
|
||||||
|
+ Block block = Block.blocksList[var14];
|
||||||
|
+
|
||||||
|
+ if (var14 == 0 || block == null || block.isLeaves(par1World, par3, par4 + var13, par5))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, par3, par4 + var13, par5, Block.wood.blockID, 1);
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
--- ../src_base/minecraft/net/minecraft/src/WorldGenTaiga2.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft/net/minecraft/src/WorldGenTaiga2.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -45,7 +45,9 @@
|
||||||
|
{
|
||||||
|
var15 = par1World.getBlockId(var13, var11, var14);
|
||||||
|
|
||||||
|
- if (var15 != 0 && var15 != Block.leaves.blockID)
|
||||||
|
+ Block block = Block.blocksList[var15];
|
||||||
|
+
|
||||||
|
+ if (var15 != 0 && block != null && !block.isLeaves(par1World, var13, var11, var14))
|
||||||
|
{
|
||||||
|
var10 = false;
|
||||||
|
}
|
||||||
|
@@ -87,7 +89,9 @@
|
||||||
|
{
|
||||||
|
int var20 = var19 - par5;
|
||||||
|
|
||||||
|
- if ((Math.abs(var18) != var21 || Math.abs(var20) != var21 || var21 <= 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var17, var16, var19)])
|
||||||
|
+ Block block = Block.blocksList[par1World.getBlockId(var17, var16, var19)];
|
||||||
|
+
|
||||||
|
+ if ((Math.abs(var18) != var21 || Math.abs(var20) != var21 || var21 <= 0) && (block == null || block.canBeReplacedByLeaves(par1World, var17, var16, var19)))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, var17, var16, var19, Block.leaves.blockID, 1);
|
||||||
|
}
|
||||||
|
@@ -117,7 +121,9 @@
|
||||||
|
{
|
||||||
|
var17 = par1World.getBlockId(par3, par4 + var16, par5);
|
||||||
|
|
||||||
|
- if (var17 == 0 || var17 == Block.leaves.blockID)
|
||||||
|
+ Block block = Block.blocksList[var17];
|
||||||
|
+
|
||||||
|
+ if (var17 == 0 || block == null || block.isLeaves(par1World, par3, par4 + var16, par5))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Block.wood.blockID, 1);
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
--- ../src_base/minecraft/net/minecraft/src/WorldGenTallGrass.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft/net/minecraft/src/WorldGenTallGrass.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -18,10 +18,16 @@
|
||||||
|
{
|
||||||
|
int var11;
|
||||||
|
|
||||||
|
- for (boolean var6 = false; ((var11 = par1World.getBlockId(par3, par4, par5)) == 0 || var11 == Block.leaves.blockID) && par4 > 0; --par4)
|
||||||
|
+ Block block = null;
|
||||||
|
+ do
|
||||||
|
{
|
||||||
|
- ;
|
||||||
|
- }
|
||||||
|
+ block = Block.blocksList[par1World.getBlockId(par3, par4, par5)];
|
||||||
|
+ if (block != null && !block.isLeaves(par1World, par3, par4, par5))
|
||||||
|
+ {
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ par4--;
|
||||||
|
+ } while (par4 > 0);
|
||||||
|
|
||||||
|
for (int var7 = 0; var7 < 128; ++var7)
|
||||||
|
{
|
|
@ -0,0 +1,50 @@
|
||||||
|
--- ../src_base/minecraft/net/minecraft/src/WorldGenTrees.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft/net/minecraft/src/WorldGenTrees.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -64,7 +64,13 @@
|
||||||
|
{
|
||||||
|
var12 = par1World.getBlockId(var10, var8, var11);
|
||||||
|
|
||||||
|
- if (var12 != 0 && var12 != Block.leaves.blockID && var12 != Block.grass.blockID && var12 != Block.dirt.blockID && var12 != Block.wood.blockID)
|
||||||
|
+ Block block = Block.blocksList[var12];
|
||||||
|
+
|
||||||
|
+ if (var12 != 0 &&
|
||||||
|
+ (block == null || !block.isLeaves(par1World, var10, var8, var11)) &&
|
||||||
|
+ var12 != Block.grass.blockID &&
|
||||||
|
+ var12 != Block.dirt.blockID &&
|
||||||
|
+ (block == null || !block.isWood(par1World, var10, var8, var11)))
|
||||||
|
{
|
||||||
|
var7 = false;
|
||||||
|
}
|
||||||
|
@@ -107,7 +113,10 @@
|
||||||
|
{
|
||||||
|
int var17 = var16 - par5;
|
||||||
|
|
||||||
|
- if ((Math.abs(var15) != var13 || Math.abs(var17) != var13 || par2Random.nextInt(2) != 0 && var12 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var14, var11, var16)])
|
||||||
|
+ Block block = Block.blocksList[par1World.getBlockId(var14, var11, var16)];
|
||||||
|
+
|
||||||
|
+ if ((Math.abs(var15) != var13 || Math.abs(var17) != var13 || par2Random.nextInt(2) != 0 && var12 != 0) &&
|
||||||
|
+ (block == null || block.canBeReplacedByLeaves(par1World, var14, var11, var16)))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, var14, var11, var16, Block.leaves.blockID, this.metaLeaves);
|
||||||
|
}
|
||||||
|
@@ -119,7 +128,9 @@
|
||||||
|
{
|
||||||
|
var12 = par1World.getBlockId(par3, par4 + var11, par5);
|
||||||
|
|
||||||
|
- if (var12 == 0 || var12 == Block.leaves.blockID)
|
||||||
|
+ Block block = Block.blocksList[var12];
|
||||||
|
+
|
||||||
|
+ if (var12 == 0 || block == null || block.isLeaves(par1World, par3, par4 + var11, par5))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, par3, par4 + var11, par5, Block.wood.blockID, this.metaWood);
|
||||||
|
|
||||||
|
@@ -159,7 +170,8 @@
|
||||||
|
{
|
||||||
|
for (var15 = par5 - var13; var15 <= par5 + var13; ++var15)
|
||||||
|
{
|
||||||
|
- if (par1World.getBlockId(var14, var11, var15) == Block.leaves.blockID)
|
||||||
|
+ Block block = Block.blocksList[par1World.getBlockId(var14, var11, var15)];
|
||||||
|
+ if (block != null && block.isLeaves(par1World, var14, var11, var15))
|
||||||
|
{
|
||||||
|
if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14 - 1, var11, var15) == 0)
|
||||||
|
{
|
|
@ -68,7 +68,7 @@
|
||||||
{
|
{
|
||||||
ItemStack var8 = this.createStackedBlock(par6);
|
ItemStack var8 = this.createStackedBlock(par6);
|
||||||
|
|
||||||
@@ -974,6 +976,512 @@
|
@@ -974,6 +976,592 @@
|
||||||
*/
|
*/
|
||||||
public void onFallenUpon(World par1World, int par2, int par3, int par4, Entity par5Entity, float par6) {}
|
public void onFallenUpon(World par1World, int par2, int par3, int par4, Entity par5Entity, float par6) {}
|
||||||
|
|
||||||
|
@ -577,6 +577,86 @@
|
||||||
+ {
|
+ {
|
||||||
+ return BlockBed.isBlockFootOfBed(world.getBlockMetadata(x, y, z));
|
+ return BlockBed.isBlockFootOfBed(world.getBlockMetadata(x, y, z));
|
||||||
+ }
|
+ }
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Called when a leaf should start its decay process.
|
||||||
|
+ *
|
||||||
|
+ * @param world The current world
|
||||||
|
+ * @param x X Position
|
||||||
|
+ * @param y Y Position
|
||||||
|
+ * @param z Z Position
|
||||||
|
+ */
|
||||||
|
+ public void beginLeavesDecay(World world, int x, int y, int z){}
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Determines if this block can prevent leaves connected to it from decaying.
|
||||||
|
+ *
|
||||||
|
+ * @param world The current world
|
||||||
|
+ * @param x X Position
|
||||||
|
+ * @param y Y Position
|
||||||
|
+ * @param z Z Position
|
||||||
|
+ * @return true if the presence this block can prevent leaves from decaying.
|
||||||
|
+ */
|
||||||
|
+ public boolean canSustainLeaves(World world, int x, int y, int z)
|
||||||
|
+ {
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Determines if this block is considered a leaf block, used to apply the leaf decay and generation system.
|
||||||
|
+ *
|
||||||
|
+ * @param world The current world
|
||||||
|
+ * @param x X Position
|
||||||
|
+ * @param y Y Position
|
||||||
|
+ * @param z Z Position
|
||||||
|
+ * @return true if this block is considered leaves.
|
||||||
|
+ */
|
||||||
|
+ public boolean isLeaves(World world, int x, int y, int z)
|
||||||
|
+ {
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Used during tree growth to determine if newly generated leaves can replace this block.
|
||||||
|
+ *
|
||||||
|
+ * @param world The current world
|
||||||
|
+ * @param x X Position
|
||||||
|
+ * @param y Y Position
|
||||||
|
+ * @param z Z Position
|
||||||
|
+ * @return true if this block can be replaced by growing leaves.
|
||||||
|
+ */
|
||||||
|
+ public boolean canBeReplacedByLeaves(World world, int x, int y, int z)
|
||||||
|
+ {
|
||||||
|
+ return !Block.opaqueCubeLookup[this.blockID];
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ *
|
||||||
|
+ * @param world The current world
|
||||||
|
+ * @param x X Position
|
||||||
|
+ * @param y Y Position
|
||||||
|
+ * @param z Z Position
|
||||||
|
+ * @return true if the block is wood (logs)
|
||||||
|
+ */
|
||||||
|
+ public boolean isWood(World world, int x, int y, int z)
|
||||||
|
+ {
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Determines if the current block is replaceable by Ore veins during world generation.
|
||||||
|
+ *
|
||||||
|
+ * @param world The current world
|
||||||
|
+ * @param x X Position
|
||||||
|
+ * @param y Y Position
|
||||||
|
+ * @param z Z Position
|
||||||
|
+ * @return True to allow this block to be replaced by a ore
|
||||||
|
+ */
|
||||||
|
+ public boolean isGenMineableReplaceable(World world, int x, int y, int z)
|
||||||
|
+ {
|
||||||
|
+ return blockID == stone.blockID;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
+
|
+
|
||||||
static
|
static
|
||||||
{
|
{
|
||||||
|
|
|
@ -13,7 +13,37 @@
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* The base index in terrain.png corresponding to the fancy version of the leaf texture. This is stored so we can
|
* The base index in terrain.png corresponding to the fancy version of the leaf texture. This is stored so we can
|
||||||
@@ -216,15 +219,7 @@
|
@@ -36,10 +39,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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -84,12 +86,14 @@
|
||||||
|
for (var14 = -var7; var14 <= var7; ++var14)
|
||||||
|
{
|
||||||
|
var15 = par1World.getBlockId(par2 + var12, par3 + var13, par4 + var14);
|
||||||
|
+
|
||||||
|
+ Block block = Block.blocksList[var15];
|
||||||
|
|
||||||
|
- if (var15 == Block.wood.blockID)
|
||||||
|
+ 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;
|
||||||
|
}
|
||||||
|
@@ -216,15 +220,7 @@
|
||||||
*/
|
*/
|
||||||
public void harvestBlock(World par1World, EntityPlayer par2EntityPlayer, int par3, int par4, int par5, int par6)
|
public void harvestBlock(World par1World, EntityPlayer par2EntityPlayer, int par3, int par4, int par5, int par6)
|
||||||
{
|
{
|
||||||
|
@ -30,7 +60,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -259,4 +254,18 @@
|
@@ -259,4 +255,30 @@
|
||||||
{
|
{
|
||||||
super.onEntityWalking(par1World, par2, par3, par4, par5Entity);
|
super.onEntityWalking(par1World, par2, par3, par4, par5Entity);
|
||||||
}
|
}
|
||||||
|
@ -47,5 +77,17 @@
|
||||||
+ ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
|
+ ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
|
||||||
+ ret.add(new ItemStack(this, 1, world.getBlockMetadata(x, y, z) & 3));
|
+ ret.add(new ItemStack(this, 1, world.getBlockMetadata(x, y, z) & 3));
|
||||||
+ return ret;
|
+ 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;
|
||||||
+ }
|
+ }
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
--- ../src_base/minecraft_server/net/minecraft/src/BlockLog.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft_server/net/minecraft/src/BlockLog.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -53,14 +53,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);
|
||||||
|
-
|
||||||
|
- if ((var11 & 8) == 0)
|
||||||
|
- {
|
||||||
|
- par1World.setBlockMetadata(par2 + var7, par3 + var8, par4 + var9, var11 | 8);
|
||||||
|
- }
|
||||||
|
+ Block.blocksList[var10].beginLeavesDecay(par1World, par2 + var7, par3 + var8, par4 + var9);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -83,4 +78,16 @@
|
||||||
|
{
|
||||||
|
return par1;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public boolean canSustainLeaves(World world, int x, int y, int z)
|
||||||
|
+ {
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public boolean isWood(World world, int x, int y, int z)
|
||||||
|
+ {
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
}
|
|
@ -1,6 +1,16 @@
|
||||||
--- ../src_base/minecraft_server/net/minecraft/src/BlockSnow.java 0000-00-00 00:00:00.000000000 -0000
|
--- ../src_base/minecraft_server/net/minecraft/src/BlockSnow.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
+++ ../src_work/minecraft_server/net/minecraft/src/BlockSnow.java 0000-00-00 00:00:00.000000000 -0000
|
+++ ../src_work/minecraft_server/net/minecraft/src/BlockSnow.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
@@ -73,7 +73,6 @@
|
@@ -54,7 +54,8 @@
|
||||||
|
public boolean canPlaceBlockAt(World par1World, int par2, int par3, int par4)
|
||||||
|
{
|
||||||
|
int var5 = par1World.getBlockId(par2, par3 - 1, par4);
|
||||||
|
- return var5 != 0 && (var5 == Block.leaves.blockID || Block.blocksList[var5].isOpaqueCube()) ? par1World.getBlockMaterial(par2, par3 - 1, par4).blocksMovement() : false;
|
||||||
|
+ Block block = Block.blocksList[var5];
|
||||||
|
+ return var5 != 0 && ((block != null && block.isLeaves(par1World, par2, par3 - 1, par4)) || Block.blocksList[var5].isOpaqueCube()) ? par1World.getBlockMaterial(par2, par3 - 1, par4).blocksMovement() : false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@@ -73,7 +74,6 @@
|
||||||
{
|
{
|
||||||
if (!this.canPlaceBlockAt(par1World, par2, par3, par4))
|
if (!this.canPlaceBlockAt(par1World, par2, par3, par4))
|
||||||
{
|
{
|
||||||
|
@ -8,7 +18,7 @@
|
||||||
par1World.setBlockWithNotify(par2, par3, par4, 0);
|
par1World.setBlockWithNotify(par2, par3, par4, 0);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -89,15 +88,7 @@
|
@@ -89,15 +89,7 @@
|
||||||
*/
|
*/
|
||||||
public void harvestBlock(World par1World, EntityPlayer par2EntityPlayer, int par3, int par4, int par5, int par6)
|
public void harvestBlock(World par1World, EntityPlayer par2EntityPlayer, int par3, int par4, int par5, int par6)
|
||||||
{
|
{
|
||||||
|
@ -25,7 +35,7 @@
|
||||||
par2EntityPlayer.addStat(StatList.mineBlockStatArray[this.blockID], 1);
|
par2EntityPlayer.addStat(StatList.mineBlockStatArray[this.blockID], 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,7 +105,7 @@
|
@@ -114,7 +106,7 @@
|
||||||
*/
|
*/
|
||||||
public int quantityDropped(Random par1Random)
|
public int quantityDropped(Random par1Random)
|
||||||
{
|
{
|
||||||
|
@ -34,7 +44,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -124,7 +115,6 @@
|
@@ -124,7 +116,6 @@
|
||||||
{
|
{
|
||||||
if (par1World.getSavedLightValue(EnumSkyBlock.Block, par2, par3, par4) > 11)
|
if (par1World.getSavedLightValue(EnumSkyBlock.Block, par2, par3, par4) > 11)
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
--- ../src_base/minecraft_server/net/minecraft/src/EntityOcelot.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft_server/net/minecraft/src/EntityOcelot.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -298,7 +298,8 @@
|
||||||
|
|
||||||
|
int var4 = this.worldObj.getBlockId(var1, var2 - 1, var3);
|
||||||
|
|
||||||
|
- if (var4 == Block.grass.blockID || var4 == Block.leaves.blockID)
|
||||||
|
+ Block block = Block.blocksList[var4];
|
||||||
|
+ if (var4 == Block.grass.blockID || (block != null && block.isLeaves(worldObj, var1, var2 - 1, var3)))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
--- ../src_base/minecraft_server/net/minecraft/src/WorldGenBigMushroom.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft_server/net/minecraft/src/WorldGenBigMushroom.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -54,7 +54,9 @@
|
||||||
|
{
|
||||||
|
var13 = par1World.getBlockId(var11, var9, var12);
|
||||||
|
|
||||||
|
- if (var13 != 0 && var13 != Block.leaves.blockID)
|
||||||
|
+ Block block = Block.blocksList[var13];
|
||||||
|
+
|
||||||
|
+ if (var13 != 0 && block != null && !block.isLeaves(par1World, var11, var9, var12))
|
||||||
|
{
|
||||||
|
var8 = false;
|
||||||
|
}
|
||||||
|
@@ -186,7 +188,9 @@
|
||||||
|
var15 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if ((var15 != 0 || par4 >= par4 + var7 - 1) && !Block.opaqueCubeLookup[par1World.getBlockId(var13, var11, var14)])
|
||||||
|
+ Block block = Block.blocksList[par1World.getBlockId(var13, var11, var14)];
|
||||||
|
+
|
||||||
|
+ if ((var15 != 0 || par4 >= par4 + var7 - 1) && (block != null && block.canBeReplacedByLeaves(par1World, var13, var11, var14)))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, var13, var11, var14, Block.mushroomCapBrown.blockID + var6, var15);
|
||||||
|
}
|
||||||
|
@@ -198,7 +202,9 @@
|
||||||
|
{
|
||||||
|
var12 = par1World.getBlockId(par3, par4 + var11, par5);
|
||||||
|
|
||||||
|
- if (!Block.opaqueCubeLookup[var12])
|
||||||
|
+ Block block = Block.blocksList[var12];
|
||||||
|
+
|
||||||
|
+ if (block != null && block.canBeReplacedByLeaves(par1World, par3, par4 + var11, par5))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, par3, par4 + var11, par5, Block.mushroomCapBrown.blockID + var6, 10);
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
--- ../src_base/minecraft_server/net/minecraft/src/WorldGenDeadBush.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft_server/net/minecraft/src/WorldGenDeadBush.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -16,10 +16,16 @@
|
||||||
|
{
|
||||||
|
int var11;
|
||||||
|
|
||||||
|
- for (boolean var6 = false; ((var11 = par1World.getBlockId(par3, par4, par5)) == 0 || var11 == Block.leaves.blockID) && par4 > 0; --par4)
|
||||||
|
+ Block block = null;
|
||||||
|
+ do
|
||||||
|
{
|
||||||
|
- ;
|
||||||
|
- }
|
||||||
|
+ block = Block.blocksList[par1World.getBlockId(par3, par4, par5)];
|
||||||
|
+ if (block != null && !block.isLeaves(par1World, par3, par4, par5))
|
||||||
|
+ {
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ par4--;
|
||||||
|
+ } while (par4 > 0);
|
||||||
|
|
||||||
|
for (int var7 = 0; var7 < 4; ++var7)
|
||||||
|
{
|
|
@ -0,0 +1,36 @@
|
||||||
|
--- ../src_base/minecraft_server/net/minecraft/src/WorldGenForest.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft_server/net/minecraft/src/WorldGenForest.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -43,7 +43,9 @@
|
||||||
|
{
|
||||||
|
var12 = par1World.getBlockId(var10, var8, var11);
|
||||||
|
|
||||||
|
- if (var12 != 0 && var12 != Block.leaves.blockID)
|
||||||
|
+ Block block = Block.blocksList[var12];
|
||||||
|
+
|
||||||
|
+ if (var12 != 0 && (block != null && block.isLeaves(par1World, var10, var8, var11)))
|
||||||
|
{
|
||||||
|
var7 = false;
|
||||||
|
}
|
||||||
|
@@ -82,7 +84,10 @@
|
||||||
|
{
|
||||||
|
int var15 = var14 - par5;
|
||||||
|
|
||||||
|
- if ((Math.abs(var13) != var11 || Math.abs(var15) != var11 || par2Random.nextInt(2) != 0 && var10 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var12, var16, var14)])
|
||||||
|
+ Block block = Block.blocksList[par1World.getBlockId(var12, var16, var14)];
|
||||||
|
+
|
||||||
|
+ if ((Math.abs(var13) != var11 || Math.abs(var15) != var11 || par2Random.nextInt(2) != 0 && var10 != 0) &&
|
||||||
|
+ (block != null && block.canBeReplacedByLeaves(par1World, var12, var16, var14)))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, var12, var16, var14, Block.leaves.blockID, 2);
|
||||||
|
}
|
||||||
|
@@ -94,7 +99,9 @@
|
||||||
|
{
|
||||||
|
var10 = par1World.getBlockId(par3, par4 + var16, par5);
|
||||||
|
|
||||||
|
- if (var10 == 0 || var10 == Block.leaves.blockID)
|
||||||
|
+ Block block = Block.blocksList[var10];
|
||||||
|
+
|
||||||
|
+ if (var10 == 0 || (block != null && block.isLeaves(par1World, par3, par4 + var16, par5)))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Block.wood.blockID, 2);
|
||||||
|
}
|
|
@ -0,0 +1,66 @@
|
||||||
|
--- ../src_base/minecraft_server/net/minecraft/src/WorldGenHugeTrees.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft_server/net/minecraft/src/WorldGenHugeTrees.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -54,7 +54,12 @@
|
||||||
|
{
|
||||||
|
var12 = par1World.getBlockId(var10, var8, var11);
|
||||||
|
|
||||||
|
- if (var12 != 0 && var12 != Block.leaves.blockID && var12 != Block.grass.blockID && var12 != Block.dirt.blockID && var12 != Block.wood.blockID && var12 != Block.sapling.blockID)
|
||||||
|
+ if (var12 != 0 &&
|
||||||
|
+ (Block.blocksList[var12] != null && !Block.blocksList[var12].isLeaves(par1World, var10, var8, var11)) &&
|
||||||
|
+ var12 != Block.grass.blockID &&
|
||||||
|
+ var12 != Block.dirt.blockID &&
|
||||||
|
+ (Block.blocksList[var12] != null && !Block.blocksList[var12].isWood(par1World, var10, var8, var11)) &&
|
||||||
|
+ var12 != Block.sapling.blockID)
|
||||||
|
{
|
||||||
|
var7 = false;
|
||||||
|
}
|
||||||
|
@@ -102,7 +107,7 @@
|
||||||
|
{
|
||||||
|
var11 = par1World.getBlockId(par3, par4 + var10, par5);
|
||||||
|
|
||||||
|
- if (var11 == 0 || var11 == Block.leaves.blockID)
|
||||||
|
+ if (var11 == 0 || Block.blocksList[var11] == null || Block.blocksList[var11].isLeaves(par1World, par3, par4 + var10, par5))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, par3, par4 + var10, par5, Block.wood.blockID, this.woodMetadata);
|
||||||
|
|
||||||
|
@@ -124,7 +129,7 @@
|
||||||
|
{
|
||||||
|
var11 = par1World.getBlockId(par3 + 1, par4 + var10, par5);
|
||||||
|
|
||||||
|
- if (var11 == 0 || var11 == Block.leaves.blockID)
|
||||||
|
+ if (var11 == 0 || Block.blocksList[var11] == null || Block.blocksList[var11].isLeaves(par1World, par3 + 1, par4 + var10, par5))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, par3 + 1, par4 + var10, par5, Block.wood.blockID, this.woodMetadata);
|
||||||
|
|
||||||
|
@@ -144,7 +149,7 @@
|
||||||
|
|
||||||
|
var11 = par1World.getBlockId(par3 + 1, par4 + var10, par5 + 1);
|
||||||
|
|
||||||
|
- if (var11 == 0 || var11 == Block.leaves.blockID)
|
||||||
|
+ if (var11 == 0 || Block.blocksList[var11] == null && Block.blocksList[var11].isLeaves(par1World, par3 + 1, par4 + var10, par5 + 1))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, par3 + 1, par4 + var10, par5 + 1, Block.wood.blockID, this.woodMetadata);
|
||||||
|
|
||||||
|
@@ -164,7 +169,7 @@
|
||||||
|
|
||||||
|
var11 = par1World.getBlockId(par3, par4 + var10, par5 + 1);
|
||||||
|
|
||||||
|
- if (var11 == 0 || var11 == Block.leaves.blockID)
|
||||||
|
+ if (var11 == 0 || Block.blocksList[var11] == null || Block.blocksList[var11].isLeaves(par1World, par3, par4 + var10, par5 + 1))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, par3, par4 + var10, par5 + 1, Block.wood.blockID, this.woodMetadata);
|
||||||
|
|
||||||
|
@@ -215,7 +220,12 @@
|
||||||
|
{
|
||||||
|
int var14 = var13 - par3;
|
||||||
|
|
||||||
|
- if ((var12 >= 0 || var14 >= 0 || var12 * var12 + var14 * var14 <= var10 * var10) && (var12 <= 0 && var14 <= 0 || var12 * var12 + var14 * var14 <= (var10 + 1) * (var10 + 1)) && (par6Random.nextInt(4) != 0 || var12 * var12 + var14 * var14 <= (var10 - 1) * (var10 - 1)) && !Block.opaqueCubeLookup[par1World.getBlockId(var11, var8, var13)])
|
||||||
|
+ Block block = Block.blocksList[par1World.getBlockId(var11, var8, var13)];
|
||||||
|
+
|
||||||
|
+ if ((var12 >= 0 || var14 >= 0 || var12 * var12 + var14 * var14 <= var10 * var10) &&
|
||||||
|
+ (var12 <= 0 && var14 <= 0 || var12 * var12 + var14 * var14 <= (var10 + 1) * (var10 + 1)) &&
|
||||||
|
+ (par6Random.nextInt(4) != 0 || var12 * var12 + var14 * var14 <= (var10 - 1) * (var10 - 1)) &&
|
||||||
|
+ (block == null || block.canBeReplacedByLeaves(par1World, var11, var8, var13)))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, var11, var8, var13, Block.leaves.blockID, this.leavesMetadata);
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
--- ../src_base/minecraft_server/net/minecraft/src/WorldGenMinable.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft_server/net/minecraft/src/WorldGenMinable.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -57,7 +57,8 @@
|
||||||
|
{
|
||||||
|
double var45 = ((double)var44 + 0.5D - var24) / (var28 / 2.0D);
|
||||||
|
|
||||||
|
- if (var39 * var39 + var42 * var42 + var45 * var45 < 1.0D && par1World.getBlockId(var38, var41, var44) == Block.stone.blockID)
|
||||||
|
+ Block block = Block.blocksList[par1World.getBlockId(var38, var41, var44)];
|
||||||
|
+ if (var39 * var39 + var42 * var42 + var45 * var45 < 1.0D && (block != null && block.isGenMineableReplaceable(par1World, var38, var41, var44)))
|
||||||
|
{
|
||||||
|
par1World.setBlock(var38, var41, var44, this.minableBlockId);
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
--- ../src_base/minecraft_server/net/minecraft/src/WorldGenShrub.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft_server/net/minecraft/src/WorldGenShrub.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -17,10 +17,16 @@
|
||||||
|
{
|
||||||
|
int var15;
|
||||||
|
|
||||||
|
- for (boolean var6 = false; ((var15 = par1World.getBlockId(par3, par4, par5)) == 0 || var15 == Block.leaves.blockID) && par4 > 0; --par4)
|
||||||
|
+ Block block = null;
|
||||||
|
+ do
|
||||||
|
{
|
||||||
|
- ;
|
||||||
|
- }
|
||||||
|
+ block = Block.blocksList[par1World.getBlockId(par3, par4, par5)];
|
||||||
|
+ if (block != null && !block.isLeaves(par1World, par3, par4, par5))
|
||||||
|
+ {
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ par4--;
|
||||||
|
+ } while (par4 > 0);
|
||||||
|
|
||||||
|
int var7 = par1World.getBlockId(par3, par4, par5);
|
||||||
|
|
||||||
|
@@ -42,7 +48,9 @@
|
||||||
|
{
|
||||||
|
int var14 = var13 - par5;
|
||||||
|
|
||||||
|
- if ((Math.abs(var12) != var10 || Math.abs(var14) != var10 || par2Random.nextInt(2) != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var11, var8, var13)])
|
||||||
|
+ block = Block.blocksList[par1World.getBlockId(var11, var8, var13)];
|
||||||
|
+
|
||||||
|
+ if ((Math.abs(var12) != var10 || Math.abs(var14) != var10 || par2Random.nextInt(2) != 0) && (block != null && block.canBeReplacedByLeaves(par1World, var11, var8, var13)))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, var11, var8, var13, Block.leaves.blockID, this.field_48408_a);
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
--- ../src_base/minecraft_server/net/minecraft/src/WorldGenSwamp.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft_server/net/minecraft/src/WorldGenSwamp.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -44,7 +44,7 @@
|
||||||
|
{
|
||||||
|
var12 = par1World.getBlockId(var10, var8, var11);
|
||||||
|
|
||||||
|
- if (var12 != 0 && var12 != Block.leaves.blockID)
|
||||||
|
+ if (var12 != 0 && (Block.blocksList[var12] != null && Block.blocksList[var12].isLeaves(par1World, var10, var8, var11)))
|
||||||
|
{
|
||||||
|
if (var12 != Block.waterStill.blockID && var12 != Block.waterMoving.blockID)
|
||||||
|
{
|
||||||
|
@@ -91,7 +91,10 @@
|
||||||
|
{
|
||||||
|
int var15 = var14 - par5;
|
||||||
|
|
||||||
|
- if ((Math.abs(var13) != var11 || Math.abs(var15) != var11 || par2Random.nextInt(2) != 0 && var10 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var12, var16, var14)])
|
||||||
|
+ Block block = Block.blocksList[par1World.getBlockId(var12, var16, var14)];
|
||||||
|
+
|
||||||
|
+ if ((Math.abs(var13) != var11 || Math.abs(var15) != var11 || par2Random.nextInt(2) != 0 && var10 != 0) &&
|
||||||
|
+ (block != null && block.canBeReplacedByLeaves(par1World, var12, var16, var14)))
|
||||||
|
{
|
||||||
|
this.setBlock(par1World, var12, var16, var14, Block.leaves.blockID);
|
||||||
|
}
|
||||||
|
@@ -103,7 +106,9 @@
|
||||||
|
{
|
||||||
|
var10 = par1World.getBlockId(par3, par4 + var16, par5);
|
||||||
|
|
||||||
|
- if (var10 == 0 || var10 == Block.leaves.blockID || var10 == Block.waterMoving.blockID || var10 == Block.waterStill.blockID)
|
||||||
|
+ Block block = Block.blocksList[var10];
|
||||||
|
+
|
||||||
|
+ if (var10 == 0 || (block != null && block.isLeaves(par1World, par3, par4 + var16, par5)) || var10 == Block.waterMoving.blockID || var10 == Block.waterStill.blockID)
|
||||||
|
{
|
||||||
|
this.setBlock(par1World, par3, par4 + var16, par5, Block.wood.blockID);
|
||||||
|
}
|
||||||
|
@@ -118,7 +123,8 @@
|
||||||
|
{
|
||||||
|
for (var13 = par5 - var11; var13 <= par5 + var11; ++var13)
|
||||||
|
{
|
||||||
|
- if (par1World.getBlockId(var12, var16, var13) == Block.leaves.blockID)
|
||||||
|
+ Block block = Block.blocksList[par1World.getBlockId(var12, var16, var13)];
|
||||||
|
+ if (block != null && block.isLeaves(par1World, var12, var16, var13))
|
||||||
|
{
|
||||||
|
if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12 - 1, var16, var13) == 0)
|
||||||
|
{
|
|
@ -0,0 +1,36 @@
|
||||||
|
--- ../src_base/minecraft_server/net/minecraft/src/WorldGenTaiga1.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft_server/net/minecraft/src/WorldGenTaiga1.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -41,7 +41,9 @@
|
||||||
|
{
|
||||||
|
var15 = par1World.getBlockId(var13, var11, var14);
|
||||||
|
|
||||||
|
- if (var15 != 0 && var15 != Block.leaves.blockID)
|
||||||
|
+ Block block = Block.blocksList[var15];
|
||||||
|
+
|
||||||
|
+ if (var15 != 0 && (block == null || !block.isLeaves(par1World, var13, var11, var14)))
|
||||||
|
{
|
||||||
|
var10 = false;
|
||||||
|
}
|
||||||
|
@@ -77,7 +79,10 @@
|
||||||
|
{
|
||||||
|
int var17 = var16 - par5;
|
||||||
|
|
||||||
|
- if ((Math.abs(var15) != var18 || Math.abs(var17) != var18 || var18 <= 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var14, var13, var16)])
|
||||||
|
+ Block block = Block.blocksList[par1World.getBlockId(var14, var13, var16)];
|
||||||
|
+
|
||||||
|
+ if ((Math.abs(var15) != var18 || Math.abs(var17) != var18 || var18 <= 0) &&
|
||||||
|
+ (block != null && block.canBeReplacedByLeaves(par1World, var14, var13, var16)))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, var14, var13, var16, Block.leaves.blockID, 1);
|
||||||
|
}
|
||||||
|
@@ -98,7 +103,9 @@
|
||||||
|
{
|
||||||
|
var14 = par1World.getBlockId(par3, par4 + var13, par5);
|
||||||
|
|
||||||
|
- if (var14 == 0 || var14 == Block.leaves.blockID)
|
||||||
|
+ Block block = Block.blocksList[var14];
|
||||||
|
+
|
||||||
|
+ if (var14 == 0 || block == null || block.isLeaves(par1World, par3, par4 + var13, par5))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, par3, par4 + var13, par5, Block.wood.blockID, 1);
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
--- ../src_base/minecraft_server/net/minecraft/src/WorldGenTaiga2.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft_server/net/minecraft/src/WorldGenTaiga2.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -45,7 +45,9 @@
|
||||||
|
{
|
||||||
|
var15 = par1World.getBlockId(var13, var11, var14);
|
||||||
|
|
||||||
|
- if (var15 != 0 && var15 != Block.leaves.blockID)
|
||||||
|
+ Block block = Block.blocksList[var15];
|
||||||
|
+
|
||||||
|
+ if (var15 != 0 && block != null && !block.isLeaves(par1World, var13, var11, var14))
|
||||||
|
{
|
||||||
|
var10 = false;
|
||||||
|
}
|
||||||
|
@@ -87,7 +89,9 @@
|
||||||
|
{
|
||||||
|
int var20 = var19 - par5;
|
||||||
|
|
||||||
|
- if ((Math.abs(var18) != var21 || Math.abs(var20) != var21 || var21 <= 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var17, var16, var19)])
|
||||||
|
+ Block block = Block.blocksList[par1World.getBlockId(var17, var16, var19)];
|
||||||
|
+
|
||||||
|
+ if ((Math.abs(var18) != var21 || Math.abs(var20) != var21 || var21 <= 0) && (block == null || block.canBeReplacedByLeaves(par1World, var17, var16, var19)))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, var17, var16, var19, Block.leaves.blockID, 1);
|
||||||
|
}
|
||||||
|
@@ -117,7 +121,9 @@
|
||||||
|
{
|
||||||
|
var17 = par1World.getBlockId(par3, par4 + var16, par5);
|
||||||
|
|
||||||
|
- if (var17 == 0 || var17 == Block.leaves.blockID)
|
||||||
|
+ Block block = Block.blocksList[var17];
|
||||||
|
+
|
||||||
|
+ if (var17 == 0 || block == null || block.isLeaves(par1World, par3, par4 + var16, par5))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Block.wood.blockID, 1);
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
--- ../src_base/minecraft_server/net/minecraft/src/WorldGenTallGrass.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft_server/net/minecraft/src/WorldGenTallGrass.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -18,10 +18,16 @@
|
||||||
|
{
|
||||||
|
int var11;
|
||||||
|
|
||||||
|
- for (boolean var6 = false; ((var11 = par1World.getBlockId(par3, par4, par5)) == 0 || var11 == Block.leaves.blockID) && par4 > 0; --par4)
|
||||||
|
+ Block block = null;
|
||||||
|
+ do
|
||||||
|
{
|
||||||
|
- ;
|
||||||
|
- }
|
||||||
|
+ block = Block.blocksList[par1World.getBlockId(par3, par4, par5)];
|
||||||
|
+ if (block != null && !block.isLeaves(par1World, par3, par4, par5))
|
||||||
|
+ {
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ par4--;
|
||||||
|
+ } while (par4 > 0);
|
||||||
|
|
||||||
|
for (int var7 = 0; var7 < 128; ++var7)
|
||||||
|
{
|
|
@ -0,0 +1,50 @@
|
||||||
|
--- ../src_base/minecraft_server/net/minecraft/src/WorldGenTrees.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
+++ ../src_work/minecraft_server/net/minecraft/src/WorldGenTrees.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
|
@@ -64,7 +64,13 @@
|
||||||
|
{
|
||||||
|
var12 = par1World.getBlockId(var10, var8, var11);
|
||||||
|
|
||||||
|
- if (var12 != 0 && var12 != Block.leaves.blockID && var12 != Block.grass.blockID && var12 != Block.dirt.blockID && var12 != Block.wood.blockID)
|
||||||
|
+ Block block = Block.blocksList[var12];
|
||||||
|
+
|
||||||
|
+ if (var12 != 0 &&
|
||||||
|
+ (block == null || !block.isLeaves(par1World, var10, var8, var11)) &&
|
||||||
|
+ var12 != Block.grass.blockID &&
|
||||||
|
+ var12 != Block.dirt.blockID &&
|
||||||
|
+ (block == null || !block.isWood(par1World, var10, var8, var11)))
|
||||||
|
{
|
||||||
|
var7 = false;
|
||||||
|
}
|
||||||
|
@@ -107,7 +113,10 @@
|
||||||
|
{
|
||||||
|
int var17 = var16 - par5;
|
||||||
|
|
||||||
|
- if ((Math.abs(var15) != var13 || Math.abs(var17) != var13 || par2Random.nextInt(2) != 0 && var12 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var14, var11, var16)])
|
||||||
|
+ Block block = Block.blocksList[par1World.getBlockId(var14, var11, var16)];
|
||||||
|
+
|
||||||
|
+ if ((Math.abs(var15) != var13 || Math.abs(var17) != var13 || par2Random.nextInt(2) != 0 && var12 != 0) &&
|
||||||
|
+ (block == null || block.canBeReplacedByLeaves(par1World, var14, var11, var16)))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, var14, var11, var16, Block.leaves.blockID, this.metaLeaves);
|
||||||
|
}
|
||||||
|
@@ -119,7 +128,9 @@
|
||||||
|
{
|
||||||
|
var12 = par1World.getBlockId(par3, par4 + var11, par5);
|
||||||
|
|
||||||
|
- if (var12 == 0 || var12 == Block.leaves.blockID)
|
||||||
|
+ Block block = Block.blocksList[var12];
|
||||||
|
+
|
||||||
|
+ if (var12 == 0 || block == null || block.isLeaves(par1World, par3, par4 + var11, par5))
|
||||||
|
{
|
||||||
|
this.setBlockAndMetadata(par1World, par3, par4 + var11, par5, Block.wood.blockID, this.metaWood);
|
||||||
|
|
||||||
|
@@ -159,7 +170,8 @@
|
||||||
|
{
|
||||||
|
for (var15 = par5 - var13; var15 <= par5 + var13; ++var15)
|
||||||
|
{
|
||||||
|
- if (par1World.getBlockId(var14, var11, var15) == Block.leaves.blockID)
|
||||||
|
+ Block block = Block.blocksList[par1World.getBlockId(var14, var11, var15)];
|
||||||
|
+ if (block != null && block.isLeaves(par1World, var14, var11, var15))
|
||||||
|
{
|
||||||
|
if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14 - 1, var11, var15) == 0)
|
||||||
|
{
|
Loading…
Reference in New Issue