52 lines
3 KiB
Diff
52 lines
3 KiB
Diff
|
@@ -53,9 +53,9 @@
|
||
|
BlockPos blockpos = p_180663_2_.func_177982_a(j1, k1, l1);
|
||
|
IBlockState iblockstate = p_180663_1_.func_180495_p(blockpos);
|
||
|
|
||
|
- if (iblockstate.func_185904_a() == Material.field_151584_j && !((Boolean)iblockstate.func_177229_b(field_176236_b)).booleanValue())
|
||
|
+ if (iblockstate.func_177230_c().isLeaves(iblockstate, p_180663_1_, blockpos))
|
||
|
{
|
||
|
- p_180663_1_.func_180501_a(blockpos, iblockstate.func_177226_a(field_176236_b, Boolean.valueOf(true)), 4);
|
||
|
+ iblockstate.func_177230_c().beginLeavesDecay(iblockstate, p_180663_1_, blockpos);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
@@ -83,7 +83,8 @@
|
||
|
this.field_150128_a = new int[32768];
|
||
|
}
|
||
|
|
||
|
- if (p_180650_1_.func_175707_a(new BlockPos(k - 5, l - 5, i1 - 5), new BlockPos(k + 5, l + 5, i1 + 5)))
|
||
|
+ if (!p_180650_1_.func_175697_a(p_180650_2_, 1)) return; // Forge: prevent decaying leaves from updating neighbors and loading unloaded chunks
|
||
|
+ if (p_180650_1_.func_175697_a(p_180650_2_, 6)) // Forge: extend range from 5 to 6 to account for neighbor checks in world.markAndNotifyBlock -> world.updateObservingBlocksAt
|
||
|
{
|
||
|
BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos();
|
||
|
|
||
|
@@ -96,9 +97,9 @@
|
||
|
IBlockState iblockstate = p_180650_1_.func_180495_p(blockpos$mutableblockpos.func_181079_c(k + i2, l + j2, i1 + k2));
|
||
|
Block block = iblockstate.func_177230_c();
|
||
|
|
||
|
- if (block != Blocks.field_150364_r && block != Blocks.field_150363_s)
|
||
|
+ if (!block.canSustainLeaves(iblockstate, p_180650_1_, blockpos$mutableblockpos.func_181079_c(k + i2, l + j2, i1 + k2)))
|
||
|
{
|
||
|
- if (iblockstate.func_185904_a() == Material.field_151584_j)
|
||
|
+ if (block.isLeaves(iblockstate, p_180650_1_, blockpos$mutableblockpos.func_181079_c(k + i2, l + j2, i1 + k2)))
|
||
|
{
|
||
|
this.field_150128_a[(i2 + 16) * 1024 + (j2 + 16) * 32 + k2 + 16] = -2;
|
||
|
}
|
||
|
|
||
|
protected void func_176234_a(World p_176234_1_, BlockPos p_176234_2_, IBlockState p_176234_3_, int p_176234_4_)
|
||
|
@@ -274,6 +242,51 @@
|
||
|
|
||
|
public abstract BlockPlanks.EnumType func_176233_b(int p_176233_1_);
|
||
|
|
||
|
+ @Override public boolean isLeaves(IBlockState state, IBlockAccess world, BlockPos pos){ return true; }
|
||
|
+
|
||
|
+ @Override
|
||
|
+ public void beginLeavesDecay(IBlockState state, World world, BlockPos pos)
|
||
|
+ {
|
||
|
+ if (!(Boolean)state.func_177229_b(field_176236_b))
|
||
|
+ {
|
||
|
+ world.func_180501_a(pos, state.func_177226_a(field_176236_b, true), 4);
|
||
|
+ }
|
||
|
+ }
|
||
|
+
|