From 828dd63acd8bb8688a04047ff09c4dbd916de55d Mon Sep 17 00:00:00 2001 From: mezz Date: Sun, 7 May 2017 17:40:31 -0700 Subject: [PATCH] Fix #1681 Worldgen leaves are not decaying --- .../java/forestry/arboriculture/LeafDecayHelper.java | 10 +++++++++- .../blocks/BlockRegistryArboriculture.java | 8 +++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/java/forestry/arboriculture/LeafDecayHelper.java b/src/main/java/forestry/arboriculture/LeafDecayHelper.java index 197d95d590..b9f9488984 100644 --- a/src/main/java/forestry/arboriculture/LeafDecayHelper.java +++ b/src/main/java/forestry/arboriculture/LeafDecayHelper.java @@ -2,6 +2,7 @@ import java.util.Random; +import forestry.arboriculture.blocks.BlockAbstractLeaves; import net.minecraft.block.Block; import net.minecraft.block.BlockLeaves; import net.minecraft.block.state.IBlockState; @@ -23,12 +24,19 @@ public class LeafDecayHelper { leafDecayValues = new byte[ARRAY_SIZE][ARRAY_SIZE][ARRAY_SIZE]; } - public static void leafDecay(BlockLeaves leaves, World world, BlockPos pos) { + public static void leafDecay(BlockAbstractLeaves leaves, World world, BlockPos pos) { if (world.isRemote) { return; } IBlockState state = world.getBlockState(pos); + // Fix a bug where Forestry leaves were not decayable. + // The non-decayable Forestry leaves are all BlockDecorativeLeaves. + if (!state.getValue(BlockLeaves.DECAYABLE)) { + state = state.withProperty(BlockLeaves.DECAYABLE, true); + world.setBlockState(pos, state); + } + if (state.getValue(BlockLeaves.CHECK_DECAY) && state.getValue(BlockLeaves.DECAYABLE)) { byte radius = 4; int arrayOffset = ARRAY_SIZE / 2; diff --git a/src/main/java/forestry/arboriculture/blocks/BlockRegistryArboriculture.java b/src/main/java/forestry/arboriculture/blocks/BlockRegistryArboriculture.java index f69293775c..1da338455e 100644 --- a/src/main/java/forestry/arboriculture/blocks/BlockRegistryArboriculture.java +++ b/src/main/java/forestry/arboriculture/blocks/BlockRegistryArboriculture.java @@ -32,6 +32,7 @@ import forestry.core.items.ItemBlockForestry; import forestry.core.utils.OreDictUtil; import net.minecraft.block.Block; +import net.minecraft.block.BlockLeaves; import net.minecraft.block.state.IBlockState; import net.minecraft.item.ItemStack; import net.minecraftforge.common.MinecraftForge; @@ -246,11 +247,12 @@ public BlockRegistryArboriculture() { registerBlock(leaves, new ItemBlockLeaves(leaves), "leaves.default." + leaves.getBlockNumber()); registerOreDictWildcard(OreDictUtil.TREE_LEAVES, leaves); - for (IBlockState state : leaves.getBlockState().getValidStates()) { - TreeDefinition treeDefinition = leaves.getTreeDefinition(state); + PropertyTreeType treeType = leaves.getVariant(); + for (TreeDefinition treeDefinition : treeType.getAllowedValues()) { Preconditions.checkNotNull(treeDefinition); String speciesUid = treeDefinition.getUID(); - speciesToLeavesDefault.put(speciesUid, state); + IBlockState blockState = leaves.getDefaultState().withProperty(treeType, treeDefinition); + speciesToLeavesDefault.put(speciesUid, blockState); } }