From 775c5664893fa1ab65ea11d8bb636ece0c0a485f Mon Sep 17 00:00:00 2001 From: Alexander Date: Sat, 9 Jan 2016 00:29:22 -0500 Subject: [PATCH] Fix Saplings when you use bonemeal. --- build.properties | 8 +- .../models/blocks/NaturaBlockModels.java | 3 + .../client/models/items/NaturaItemModels.java | 15 +- .../natura/common/blocks/BlocksNatura.java | 5 +- .../natural/plants/BlockNaturaSapling.java | 3 +- .../natural/plants/BlockNaturaSapling2.java | 285 ++++++++++++++++++ .../itemblocks/ItemBlockNaturaSaplings2.java | 19 ++ .../common/plugins/jei/NaturaJEIPlugin.java | 6 - .../features/tree/WorldGenEucalyptusTree.java | 148 +++++++++ .../assets/natura/blockstates/saplings.json | 7 +- .../assets/natura/blockstates/saplings2.json | 9 + .../resources/assets/natura/lang/en_US.lang | 116 ++++--- 12 files changed, 554 insertions(+), 70 deletions(-) create mode 100644 src/main/java/com/progwml6/natura/common/blocks/natural/plants/BlockNaturaSapling2.java create mode 100644 src/main/java/com/progwml6/natura/common/items/itemblocks/ItemBlockNaturaSaplings2.java create mode 100644 src/main/java/com/progwml6/natura/common/world/features/tree/WorldGenEucalyptusTree.java create mode 100644 src/main/resources/assets/natura/blockstates/saplings2.json diff --git a/build.properties b/build.properties index 42f6e908..9c307473 100644 --- a/build.properties +++ b/build.properties @@ -1,14 +1,14 @@ minecraft_version=1.8.9 -forge_version=11.15.0.1674 -mappings=snapshot_20151231 +forge_version=11.15.0.1690 +mappings=snapshot_20160108 -mantle_version=0.6.jenkins64 +mantle_version=0.6.jenkins69 tconstruct_version=1.6.0.build603 -jei_version=2.13.5.61 +jei_version=2.15.0.70 CCLIB_version=1.1.2.133 diff --git a/src/main/java/com/progwml6/natura/client/models/blocks/NaturaBlockModels.java b/src/main/java/com/progwml6/natura/client/models/blocks/NaturaBlockModels.java index 255dfa34..7d88e062 100644 --- a/src/main/java/com/progwml6/natura/client/models/blocks/NaturaBlockModels.java +++ b/src/main/java/com/progwml6/natura/client/models/blocks/NaturaBlockModels.java @@ -2,6 +2,7 @@ import com.progwml6.natura.common.blocks.BlocksNatura; import com.progwml6.natura.common.blocks.natural.plants.BlockNaturaSapling; +import com.progwml6.natura.common.blocks.natural.plants.BlockNaturaSapling2; import com.progwml6.natura.common.blocks.natural.trees.BlockNaturaLeaves; import net.minecraft.client.renderer.block.statemap.StateMap; @@ -21,9 +22,11 @@ private static void registerStateMappers() { StateMap leavesMapper = new StateMap.Builder().ignore(BlockNaturaLeaves.PROPERTY_CHECK_DECAY, BlockNaturaLeaves.PROPERTY_DECAYABLE).build(); StateMap saplingMapper = new StateMap.Builder().ignore(BlockNaturaSapling.STAGE).build(); + StateMap saplingMapper2 = new StateMap.Builder().ignore(BlockNaturaSapling2.STAGE).build(); ModelLoader.setCustomStateMapper(BlocksNatura.leaves, leavesMapper); ModelLoader.setCustomStateMapper(BlocksNatura.sapling, saplingMapper); + ModelLoader.setCustomStateMapper(BlocksNatura.sapling2, saplingMapper2); } } diff --git a/src/main/java/com/progwml6/natura/client/models/items/NaturaItemModels.java b/src/main/java/com/progwml6/natura/client/models/items/NaturaItemModels.java index 5da44582..08d6e123 100644 --- a/src/main/java/com/progwml6/natura/client/models/items/NaturaItemModels.java +++ b/src/main/java/com/progwml6/natura/client/models/items/NaturaItemModels.java @@ -10,6 +10,7 @@ import com.progwml6.natura.common.blocks.natural.BlockClouds; import com.progwml6.natura.common.blocks.natural.BlockNaturaPlanks; import com.progwml6.natura.common.blocks.natural.plants.BlockNaturaSapling; +import com.progwml6.natura.common.blocks.natural.plants.BlockNaturaSapling2; import com.progwml6.natura.common.blocks.natural.trees.BlockNaturaLeaves; import com.progwml6.natura.common.blocks.natural.trees.BlockNaturaLogs; import com.progwml6.natura.common.items.ItemsNatura; @@ -64,12 +65,14 @@ private static void defineItemModels() .add(BlockNaturaSapling.EnumType.BLOODWOOD_SAPLING.getMetadata(), "bloodwood_sapling") .add(BlockNaturaSapling.EnumType.HOPSEED_SAPLING.getMetadata(), "hopseed_sapling") .add(BlockNaturaSapling.EnumType.MAPLE_SAPLING.getMetadata(), "maple_sapling") - .add(BlockNaturaSapling.EnumType.SILVERBELL_SAPLING.getMetadata(), "silverbell_sapling") - .add(BlockNaturaSapling.EnumType.PURPLEHEART_SAPLING.getMetadata(), "purpleheart_sapling") - .add(BlockNaturaSapling.EnumType.TIGER_SAPLING.getMetadata(), "tiger_sapling") - .add(BlockNaturaSapling.EnumType.WILLOW_SAPLING.getMetadata(), "willow_sapling") - .add(BlockNaturaSapling.EnumType.DARKWOOD_SAPLING.getMetadata(), "darkwood_sapling") - .add(BlockNaturaSapling.EnumType.FUSEWOOD_SAPLING.getMetadata(), "fusewood_sapling")); + .add(BlockNaturaSapling.EnumType.SILVERBELL_SAPLING.getMetadata(), "silverbell_sapling")); + + registerItemModels(getItem(BlocksNatura.sapling2), new ItemModelList("saplings/") + .add(BlockNaturaSapling2.EnumType.PURPLEHEART_SAPLING.getMetadata(), "purpleheart_sapling") + .add(BlockNaturaSapling2.EnumType.TIGER_SAPLING.getMetadata(), "tiger_sapling") + .add(BlockNaturaSapling2.EnumType.WILLOW_SAPLING.getMetadata(), "willow_sapling") + .add(BlockNaturaSapling2.EnumType.DARKWOOD_SAPLING.getMetadata(), "darkwood_sapling") + .add(BlockNaturaSapling2.EnumType.FUSEWOOD_SAPLING.getMetadata(), "fusewood_sapling")); registerItemModels(getItem(BlocksNatura.planks), new ItemModelList("planks/") .add(BlockNaturaPlanks.EUCALYPTUS_PLANKS.getMeta(), "eucalyptus_planks") diff --git a/src/main/java/com/progwml6/natura/common/blocks/BlocksNatura.java b/src/main/java/com/progwml6/natura/common/blocks/BlocksNatura.java index 98f997a7..8494ed91 100644 --- a/src/main/java/com/progwml6/natura/common/blocks/BlocksNatura.java +++ b/src/main/java/com/progwml6/natura/common/blocks/BlocksNatura.java @@ -6,6 +6,7 @@ import com.progwml6.natura.common.blocks.natural.plants.BlockNaturaBarleyCrop; import com.progwml6.natura.common.blocks.natural.plants.BlockNaturaCottonCrop; import com.progwml6.natura.common.blocks.natural.plants.BlockNaturaSapling; +import com.progwml6.natura.common.blocks.natural.plants.BlockNaturaSapling2; import com.progwml6.natura.common.blocks.natural.trees.BlockNaturaLeaves; import com.progwml6.natura.common.blocks.natural.trees.BlockNaturaLogs; import com.progwml6.natura.common.blocks.util.CloudMaterial; @@ -14,6 +15,7 @@ import com.progwml6.natura.common.items.itemblocks.ItemBlockNaturaLogs; import com.progwml6.natura.common.items.itemblocks.ItemBlockNaturaPlanks; import com.progwml6.natura.common.items.itemblocks.ItemBlockNaturaSaplings; +import com.progwml6.natura.common.items.itemblocks.ItemBlockNaturaSaplings2; import com.progwml6.natura.common.items.itemblocks.ItemBlockVariants; import com.progwml6.natura.common.items.itemblocks.ItemBlockWorkbench; @@ -26,7 +28,7 @@ public class BlocksNatura { public static Material cloud = new CloudMaterial(); - public static Block clouds, logs, planks, cotton_crop, barley_crop, fence, crafting_table, leaves, sapling; + public static Block clouds, logs, planks, cotton_crop, barley_crop, fence, crafting_table, leaves, sapling, sapling2; public static void preInit() { @@ -38,6 +40,7 @@ public static void preInit() crafting_table = registerBlock("crafting_table", ItemBlockWorkbench.class, new BlockNaturaWorkbench()); leaves = registerBlock("leaves", ItemBlockVariants.class, new BlockNaturaLeaves(0)); sapling = registerBlock("saplings", ItemBlockNaturaSaplings.class, new BlockNaturaSapling()); + sapling2 = registerBlock("saplings2", ItemBlockNaturaSaplings2.class, new BlockNaturaSapling2()); // this.fence = this.registerBlock("fence", ItemBlockVariants.class, new BlockNaturaFence()); } diff --git a/src/main/java/com/progwml6/natura/common/blocks/natural/plants/BlockNaturaSapling.java b/src/main/java/com/progwml6/natura/common/blocks/natural/plants/BlockNaturaSapling.java index dbe16548..396544f7 100644 --- a/src/main/java/com/progwml6/natura/common/blocks/natural/plants/BlockNaturaSapling.java +++ b/src/main/java/com/progwml6/natura/common/blocks/natural/plants/BlockNaturaSapling.java @@ -92,6 +92,7 @@ public void generateTree(World worldIn, BlockPos pos, IBlockState state, Random switch (state.getValue(TYPE)) { case EUCALYPTUS_SAPLING: + case SILVERBELL_SAPLING: } IBlockState iblockstate2 = Blocks.air.getDefaultState(); @@ -217,7 +218,7 @@ public String getVariantUnlocalizedName(ItemStack stack) public static enum EnumType implements IStringSerializable { - EUCALYPTUS_SAPLING(0, "eucalyptus_sapling"), SAKURA_SAPLING(1, "sakura_sapling"), GHOSTWOOD_SAPLING(2, "ghostwood_sapling"), REDWOOD_SAPLING(3, "redwood_sapling"), BLOODWOOD_SAPLING(4, "bloodwood_sapling"), HOPSEED_SAPLING(5, "hopseed_sapling"), MAPLE_SAPLING(6, "maple_sapling"), SILVERBELL_SAPLING(7, "silverbell_sapling"), PURPLEHEART_SAPLING(8, "purpleheart_sapling"), TIGER_SAPLING(9, "tiger_sapling"), WILLOW_SAPLING(10, "willow_sapling"), DARKWOOD_SAPLING(11, "darkwood_sapling"), FUSEWOOD_SAPLING(12, "fusewood_sapling"); + EUCALYPTUS_SAPLING(0, "eucalyptus_sapling"), SAKURA_SAPLING(1, "sakura_sapling"), GHOSTWOOD_SAPLING(2, "ghostwood_sapling"), REDWOOD_SAPLING(3, "redwood_sapling"), BLOODWOOD_SAPLING(4, "bloodwood_sapling"), HOPSEED_SAPLING(5, "hopseed_sapling"), MAPLE_SAPLING(6, "maple_sapling"), SILVERBELL_SAPLING(7, "silverbell_sapling"); private static final BlockNaturaSapling.EnumType[] META_LOOKUP = new BlockNaturaSapling.EnumType[values().length]; diff --git a/src/main/java/com/progwml6/natura/common/blocks/natural/plants/BlockNaturaSapling2.java b/src/main/java/com/progwml6/natura/common/blocks/natural/plants/BlockNaturaSapling2.java new file mode 100644 index 00000000..c8e2f82c --- /dev/null +++ b/src/main/java/com/progwml6/natura/common/blocks/natural/plants/BlockNaturaSapling2.java @@ -0,0 +1,285 @@ +package com.progwml6.natura.common.blocks.natural.plants; + +import java.util.List; +import java.util.Random; + +import com.progwml6.natura.common.blocks.util.variants.IBlockWithVariants; +import com.progwml6.natura.common.util.NaturaCreativeTabs; +import com.progwml6.natura.common.world.features.tree.EucalyptusTreeGenShort; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockPlanks; +import net.minecraft.block.IGrowable; +import net.minecraft.block.material.Material; +import net.minecraft.block.properties.IProperty; +import net.minecraft.block.properties.PropertyEnum; +import net.minecraft.block.properties.PropertyInteger; +import net.minecraft.block.state.BlockState; +import net.minecraft.block.state.IBlockState; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.BlockPos; +import net.minecraft.util.IStringSerializable; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; +import net.minecraft.world.gen.feature.WorldGenerator; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +public class BlockNaturaSapling2 extends BlockNaturaPlant implements IGrowable, IBlockWithVariants +{ + public static final PropertyEnum TYPE = PropertyEnum. create("type", BlockNaturaSapling2.EnumType.class); + + public static final PropertyInteger STAGE = PropertyInteger.create("stage", 0, 1); + + public BlockNaturaSapling2() + { + super(Material.plants); + this.setDefaultState(this.blockState.getBaseState().withProperty(TYPE, BlockNaturaSapling2.EnumType.TIGER_SAPLING).withProperty(STAGE, Integer.valueOf(0))); + float f = 0.4F; + this.setBlockBounds(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, f * 2.0F, 0.5F + f); + this.setCreativeTab(NaturaCreativeTabs.tabMisc); + this.setStepSound(Block.soundTypeGrass); + this.setHardness(0.0F); + } + + /** + * Gets the localized name of this block. Used for the statistics page. + */ + @Override + public String getLocalizedName() + { + return StatCollector.translateToLocal(this.getUnlocalizedName() + "." + BlockPlanks.EnumType.OAK.getUnlocalizedName() + ".name"); + } + + @Override + public void updateTick(World worldIn, BlockPos pos, IBlockState state, Random rand) + { + if (!worldIn.isRemote) + { + super.updateTick(worldIn, pos, state, rand); + + if (worldIn.getLightFromNeighbors(pos.up()) >= 9 && rand.nextInt(7) == 0) + { + this.grow(worldIn, pos, state, rand); + } + } + } + + public void grow(World worldIn, BlockPos pos, IBlockState state, Random rand) + { + if (state.getValue(STAGE).intValue() == 0) + { + worldIn.setBlockState(pos, state.cycleProperty(STAGE), 4); + } + else + { + this.generateTree(worldIn, pos, state, rand); + } + } + + public void generateTree(World worldIn, BlockPos pos, IBlockState state, Random rand) + { + if (!net.minecraftforge.event.terraingen.TerrainGen.saplingGrowTree(worldIn, rand, pos)) + return; + WorldGenerator worldgenerator = rand.nextInt(10) == 0 ? new EucalyptusTreeGenShort() : new EucalyptusTreeGenShort(); + int i = 0; + int j = 0; + boolean flag = false; + + switch (state.getValue(TYPE)) + { + case PURPLEHEART_SAPLING: + System.out.println("hi"); + case WILLOW_SAPLING: + System.out.println("hi0"); + } + + IBlockState iblockstate2 = Blocks.air.getDefaultState(); + + if (flag) + { + worldIn.setBlockState(pos.add(i, 0, j), iblockstate2, 4); + worldIn.setBlockState(pos.add(i + 1, 0, j), iblockstate2, 4); + worldIn.setBlockState(pos.add(i, 0, j + 1), iblockstate2, 4); + worldIn.setBlockState(pos.add(i + 1, 0, j + 1), iblockstate2, 4); + } + else + { + worldIn.setBlockState(pos, iblockstate2, 4); + } + + if (!worldgenerator.generate(worldIn, rand, pos.add(i, 0, j))) + { + if (flag) + { + worldIn.setBlockState(pos.add(i, 0, j), state, 4); + worldIn.setBlockState(pos.add(i + 1, 0, j), state, 4); + worldIn.setBlockState(pos.add(i, 0, j + 1), state, 4); + worldIn.setBlockState(pos.add(i + 1, 0, j + 1), state, 4); + } + else + { + worldIn.setBlockState(pos, state, 4); + } + } + } + + private boolean func_181624_a(World p_181624_1_, BlockPos p_181624_2_, int p_181624_3_, int p_181624_4_, BlockNaturaSapling2.EnumType p_181624_5_) + { + return this.isTypeAt(p_181624_1_, p_181624_2_.add(p_181624_3_, 0, p_181624_4_), p_181624_5_) && this.isTypeAt(p_181624_1_, p_181624_2_.add(p_181624_3_ + 1, 0, p_181624_4_), p_181624_5_) && this.isTypeAt(p_181624_1_, p_181624_2_.add(p_181624_3_, 0, p_181624_4_ + 1), p_181624_5_) && this.isTypeAt(p_181624_1_, p_181624_2_.add(p_181624_3_ + 1, 0, p_181624_4_ + 1), p_181624_5_); + } + + /** + * Check whether the given BlockPos has a Sapling of the given type + */ + public boolean isTypeAt(World worldIn, BlockPos pos, BlockNaturaSapling2.EnumType type) + { + IBlockState iblockstate = worldIn.getBlockState(pos); + return iblockstate.getBlock() == this && iblockstate.getValue(TYPE) == type; + } + + /** + * Gets the metadata of the item this Block can drop. This method is called when the block gets destroyed. It + * returns the metadata of the dropped item based on the old metadata of the block. + */ + @Override + public int damageDropped(IBlockState state) + { + return state.getValue(TYPE).getMetadata(); + } + + /** + * returns a list of blocks with the same ID, but different meta (eg: wood returns 4 blocks) + */ + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item itemIn, CreativeTabs tab, List list) + { + for (BlockNaturaSapling2.EnumType blockplanks$enumtype : BlockNaturaSapling2.EnumType.values()) + { + list.add(new ItemStack(itemIn, 1, blockplanks$enumtype.getMetadata())); + } + } + + /** + * Whether this IGrowable can grow + */ + @Override + public boolean canGrow(World worldIn, BlockPos pos, IBlockState state, boolean isClient) + { + return true; + } + + @Override + public boolean canUseBonemeal(World worldIn, Random rand, BlockPos pos, IBlockState state) + { + return worldIn.rand.nextFloat() < 0.45D; + } + + @Override + public void grow(World worldIn, Random rand, BlockPos pos, IBlockState state) + { + this.grow(worldIn, pos, state, rand); + } + + /** + * Convert the given metadata into a BlockState for this Block + */ + @Override + public IBlockState getStateFromMeta(int meta) + { + return this.getDefaultState().withProperty(TYPE, BlockNaturaSapling2.EnumType.byMetadata(meta & 7)).withProperty(STAGE, Integer.valueOf((meta & 8) >> 3)); + } + + /** + * Convert the BlockState into the correct metadata value + */ + @Override + public int getMetaFromState(IBlockState state) + { + int i = 0; + i = i | state.getValue(TYPE).getMetadata(); + i = i | state.getValue(STAGE).intValue() << 3; + return i; + } + + @Override + protected BlockState createBlockState() + { + return new BlockState(this, new IProperty[] { TYPE, STAGE }); + } + + @Override + public String getVariantUnlocalizedName(ItemStack stack) + { + return BlockNaturaSapling2.EnumType.byMetadata(stack.getMetadata()).getUnlocalizedName(); + } + + public static enum EnumType implements IStringSerializable + { + PURPLEHEART_SAPLING(0, "purpleheart_sapling"), TIGER_SAPLING(1, "tiger_sapling"), WILLOW_SAPLING(2, "willow_sapling"), DARKWOOD_SAPLING(3, "darkwood_sapling"), FUSEWOOD_SAPLING(4, "fusewood_sapling"); + + private static final BlockNaturaSapling2.EnumType[] META_LOOKUP = new BlockNaturaSapling2.EnumType[values().length]; + + private final int meta; + + private final String name; + + private final String unlocalizedName; + + private EnumType(int meta, String name) + { + this(meta, name, name); + } + + private EnumType(int meta, String name, String unlocalizedName) + { + this.meta = meta; + this.name = name; + this.unlocalizedName = unlocalizedName; + } + + public int getMetadata() + { + return this.meta; + } + + @Override + public String toString() + { + return this.name; + } + + public static BlockNaturaSapling2.EnumType byMetadata(int meta) + { + if (meta < 0 || meta >= META_LOOKUP.length) + { + meta = 0; + } + + return META_LOOKUP[meta]; + } + + @Override + public String getName() + { + return this.name; + } + + public String getUnlocalizedName() + { + return this.unlocalizedName; + } + + static + { + for (BlockNaturaSapling2.EnumType blockplanks$enumtype : values()) + { + META_LOOKUP[blockplanks$enumtype.getMetadata()] = blockplanks$enumtype; + } + } + } +} diff --git a/src/main/java/com/progwml6/natura/common/items/itemblocks/ItemBlockNaturaSaplings2.java b/src/main/java/com/progwml6/natura/common/items/itemblocks/ItemBlockNaturaSaplings2.java new file mode 100644 index 00000000..f35d117a --- /dev/null +++ b/src/main/java/com/progwml6/natura/common/items/itemblocks/ItemBlockNaturaSaplings2.java @@ -0,0 +1,19 @@ +package com.progwml6.natura.common.items.itemblocks; + +import net.minecraft.block.Block; +import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; + +public class ItemBlockNaturaSaplings2 extends ItemBlockVariants +{ + public ItemBlockNaturaSaplings2(Block block) + { + super(block); + } + + @Override + public String getItemStackDisplayName(ItemStack stack) + { + return ("" + StatCollector.translateToLocal("natura." + this.getUnlocalizedNameInefficiently(stack) + ".name")).trim(); + } +} diff --git a/src/main/java/com/progwml6/natura/common/plugins/jei/NaturaJEIPlugin.java b/src/main/java/com/progwml6/natura/common/plugins/jei/NaturaJEIPlugin.java index 47609f8a..d0d4ea3d 100644 --- a/src/main/java/com/progwml6/natura/common/plugins/jei/NaturaJEIPlugin.java +++ b/src/main/java/com/progwml6/natura/common/plugins/jei/NaturaJEIPlugin.java @@ -18,12 +18,6 @@ public class NaturaJEIPlugin implements IModPlugin { private IJeiHelpers jeiHelpers; - @Override - public boolean isModLoaded() - { - return true; - } - @Override public void onJeiHelpersAvailable(IJeiHelpers jeiHelpers) { diff --git a/src/main/java/com/progwml6/natura/common/world/features/tree/WorldGenEucalyptusTree.java b/src/main/java/com/progwml6/natura/common/world/features/tree/WorldGenEucalyptusTree.java new file mode 100644 index 00000000..da3c7864 --- /dev/null +++ b/src/main/java/com/progwml6/natura/common/world/features/tree/WorldGenEucalyptusTree.java @@ -0,0 +1,148 @@ +package com.progwml6.natura.common.world.features.tree; + +import java.util.Random; + +import com.progwml6.natura.common.blocks.BlocksNatura; +import com.progwml6.natura.common.blocks.natural.plants.BlockNaturaPlant; +import com.progwml6.natura.common.blocks.natural.trees.BlockNaturaLeaves; +import com.progwml6.natura.common.blocks.natural.trees.BlockNaturaLogs; + +import net.minecraft.block.Block; +import net.minecraft.util.BlockPos; +import net.minecraft.world.World; +import net.minecraft.world.gen.feature.WorldGenAbstractTree; + +public class WorldGenEucalyptusTree extends WorldGenAbstractTree +{ + private final Block logBlock, leavesBlock; + + private final int logMeta, leavesMeta; + + public WorldGenEucalyptusTree(Block logBlock, Block leavesBlock, int logMeta, int leavesMeta) + { + super(true); + + this.logBlock = logBlock; + this.leavesBlock = leavesBlock; + + this.logMeta = logMeta; + this.leavesMeta = leavesMeta; + } + + @Override + public boolean generate(World worldIn, Random rand, BlockPos position) + { + int i = rand.nextInt(3) + 4; + + boolean canCreateTree = true; + + if (position.getY() >= 1 && position.getY() + i + 1 <= 256) + { + byte b0; + int l; + + for (int y = position.getY(); y <= position.getY() + 1 + i; ++y) + { + b0 = 1; + + if (y == position.getY()) + { + b0 = 0; + } + + if (y >= position.getY() + 1 + i - 2) + { + b0 = 2; + } + + for (int k = position.getX() - b0; k <= position.getX() + b0 && canCreateTree; ++k) + { + for (l = position.getZ() - b0; l <= position.getZ() + b0 && canCreateTree; ++l) + { + if (y >= 0 && y < 256) + { + if (!worldIn.isAirBlock(new BlockPos(k, y, l))) + { + canCreateTree = false; + } + } + else + { + canCreateTree = false; + } + } + } + } + + if (canCreateTree) + { + BlockPos rootBlockPos = position.down(); + + Block rootBlock = worldIn.getBlockState(rootBlockPos).getBlock(); + + boolean isSoil = ((BlockNaturaPlant) BlocksNatura.sapling).isSuitableSoilBlock(rootBlock); + + if (isSoil && position.getY() < 256 - i - 1) + { + rootBlock.onPlantGrow(worldIn, rootBlockPos, position); + + b0 = 3; + byte b1 = 0; + int i1; + int j1; + int k1; + int l1; + BlockPos pos; + + for (l = position.getY() - b0 + i; l <= position.getY() + i; ++l) + { + i1 = l - (position.getY() + i); + j1 = b1 + 1 - i1 / 2; + + for (k1 = position.getX() - j1; k1 <= position.getX() + j1; ++k1) + { + l1 = k1 - position.getX(); + + for (int i2 = position.getZ() - j1; i2 <= position.getZ() + j1; ++i2) + { + int j2 = i2 - position.getZ(); + + if (Math.abs(l1) != j1 || Math.abs(j2) != j1 || rand.nextInt(2) != 0 && i1 != 0) + { + pos = new BlockPos(k1, l, i2); + Block block = worldIn.getBlockState(pos).getBlock(); + + if (block.isAir(worldIn, pos) || block.isLeaves(worldIn, pos)) + { + this.setBlockAndNotifyAdequately(worldIn, pos, this.leavesBlock.getDefaultState().withProperty(BlockNaturaLeaves.PROPERTY_CHECK_DECAY, Boolean.valueOf(false)).withProperty(BlockNaturaLeaves.PROPERTY_VARIANT, BlockNaturaLeaves.EnumType.byMetadata(this.leavesMeta))); + } + } + } + } + } + + for (l = 0; l < i; ++l) + { + BlockPos upN = position.up(l); + Block block2 = worldIn.getBlockState(upN).getBlock(); + + if (block2.isAir(worldIn, upN) || block2.isLeaves(worldIn, upN)) + { + this.setBlockAndNotifyAdequately(worldIn, position.up(l), this.logBlock.getDefaultState().withProperty(BlockNaturaLogs.LOG_TYPE, BlockNaturaLogs.LOG_TYPE.fromMeta(this.logMeta))); + } + } + + return true; + } + } + } + + return false; + } + + @Override + protected boolean func_150523_a(Block block) + { + return super.func_150523_a(block) || block == BlocksNatura.sapling; + } +} diff --git a/src/main/resources/assets/natura/blockstates/saplings.json b/src/main/resources/assets/natura/blockstates/saplings.json index 89a37f3b..8093aa07 100644 --- a/src/main/resources/assets/natura/blockstates/saplings.json +++ b/src/main/resources/assets/natura/blockstates/saplings.json @@ -7,11 +7,6 @@ "type=bloodwood_sapling": { "model": "natura:saplings/bloodwood_sapling" }, "type=hopseed_sapling": { "model": "natura:saplings/hopseed_sapling" }, "type=maple_sapling": { "model": "natura:saplings/maple_sapling" }, - "type=silverbell_sapling": { "model": "natura:saplings/silverbell_sapling" }, - "type=purpleheart_sapling": { "model": "natura:saplings/purpleheart_sapling" }, - "type=tiger_sapling": { "model": "natura:saplings/tiger_sapling" }, - "type=willow_sapling": { "model": "natura:saplings/willow_sapling" }, - "type=darkwood_sapling": { "model": "natura:saplings/darkwood_sapling" }, - "type=fusewood_sapling": { "model": "natura:saplings/fusewood_sapling" } + "type=silverbell_sapling": { "model": "natura:saplings/silverbell_sapling" } } } diff --git a/src/main/resources/assets/natura/blockstates/saplings2.json b/src/main/resources/assets/natura/blockstates/saplings2.json new file mode 100644 index 00000000..2109fd73 --- /dev/null +++ b/src/main/resources/assets/natura/blockstates/saplings2.json @@ -0,0 +1,9 @@ +{ + "variants": { + "type=purpleheart_sapling": { "model": "natura:saplings/purpleheart_sapling" }, + "type=tiger_sapling": { "model": "natura:saplings/tiger_sapling" }, + "type=willow_sapling": { "model": "natura:saplings/willow_sapling" }, + "type=darkwood_sapling": { "model": "natura:saplings/darkwood_sapling" }, + "type=fusewood_sapling": { "model": "natura:saplings/fusewood_sapling" } + } +} diff --git a/src/main/resources/assets/natura/lang/en_US.lang b/src/main/resources/assets/natura/lang/en_US.lang index 5a11fd97..7c1023cf 100644 --- a/src/main/resources/assets/natura/lang/en_US.lang +++ b/src/main/resources/assets/natura/lang/en_US.lang @@ -1,19 +1,60 @@ itemGroup.naturaMisc=Natura +#Blocks + tile.cotton_crops.name=Cotton Crops tile.barley_crops.name=Barley Crops +natura.tile.saplings.eucalyptus_sapling.name=Eucalyptus Sapling +natura.tile.saplings.sakura_sapling.name=Sakura Sapling +natura.tile.saplings.ghostwood_sapling.name=Ghostwood Sapling +natura.tile.saplings.redwood_sapling.name=Redwood Sapling +natura.tile.saplings.bloodwood_sapling.name=Blood Sapling +natura.tile.saplings.hopseed_sapling.name=Hopseed Sapling +natura.tile.saplings.maple_sapling.name=Maple Sapling +natura.tile.saplings.silverbell_sapling.name=Silverbell Sapling + +natura.tile.saplings2.purpleheart_sapling.name=Amaranth Sapling +natura.tile.saplings2.tiger_sapling.name=Tigerwood Sapling +natura.tile.saplings2.willow_sapling.name=Willow Sapling +natura.tile.saplings2.darkwood_sapling.name=Darkwood Sapling +natura.tile.saplings2.fusewood_sapling.name=Fusewood Sapling + +natura.tile.logs.eucalyptus_log.name=Eucalyptus Wood +natura.tile.logs.sakura_log.name=Sakura Wood +natura.tile.logs.ghostwood_log.name=Ghostwood +natura.tile.logs.hopseed_log.name=Hopseed Wood + +natura.tile.planks.eucalyptus_planks.name=Eucalyptus Planks +natura.tile.planks.sakura_planks.name=Sakura Planks +natura.tile.planks.ghostwood_planks.name=Ghostwood Planks +natura.tile.planks.redwood_planks.name=Redwood Planks +natura.tile.planks.bloodwood_planks.name=Bloodwood Planks +natura.tile.planks.hopseed_planks.name=Hopseed Planks +natura.tile.planks.maple_planks.name=Maple Planks +natura.tile.planks.silverbell_planks.name=Silverbell Planks +natura.tile.planks.purpleheart_planks.name=Amaranth Planks +natura.tile.planks.tiger_planks.name=Tigerwood Planks +natura.tile.planks.willow_planks.name=Willow Planks +natura.tile.planks.darkwood_planks.name=Darkwood Planks +natura.tile.planks.fusewood_planks.name=Fusewood Planks +natura.tile.planks.redwood_bark.name=Redwood Bark +natura.tile.planks.redwood_heart.name=Redwood +natura.tile.planks.redwood_root.name=Redwood Root + +natura.tile.clouds.cloud_white.name=Cloud +natura.tile.clouds.cloud_gray.name=Dark Cloud +natura.tile.clouds.cloud_dark.name=Ash Cloud +natura.tile.clouds.cloud_sulfur.name=Sulfur Cloud + +#Items + natura.item.cotton_seeds.name=Cotton Seeds natura.item.barley_seeds.name=Barley Seeds -tooltip.barley=Similar to wheat, it grows in the wild -tooltip.cotton=The source of all string and wool natura.item.impmeat.raw.name=Raw Imphide natura.item.impmeat.cooked.name=Cooked Imphide -tooltip.impmeat1=Eating this probably isn't good for you -tooltip.impmeat2=It's warm to the touch - item.bowl.mushroom.name=Mushroom Stew item.bowl.glowshroom.name=Glowshroom Stew @@ -27,13 +68,6 @@ item.materials.imp_leather.name=Imp Leather item.materials.flame_string.name=Flamestring item.materials.blue_dye.name=Blue Dye -tooltip.flour1=Bake me to make bread -tooltip.flour2=Also used in baking cake -tooltip.sulfur=2x2 converts into gunpowder -tooltip.fletching=Arrow crafting component -tooltip.imp=Resist the heat of the Nether -tooltip.string=Somewhat more durable than string - natura.item.ghostwood_axe.name=Ghostwood Hatchet natura.item.ghostwood_pickaxe.name=Ghostwood Pickaxe natura.item.ghostwood_shovel.name=Ghostwood Shovel @@ -68,46 +102,28 @@ natura.item.netherquartz_shovel.name=Quartz Shovel natura.item.netherquartz_sword.name=Quartz Sword natura.item.netherquartz_kama.name=Quartz Sword -natura.tile.clouds.cloud_white.name=Cloud -natura.tile.clouds.cloud_gray.name=Dark Cloud -natura.tile.clouds.cloud_dark.name=Ash Cloud -natura.tile.clouds.cloud_sulfur.name=Sulfur Cloud +item.natura.spawn_egg.name=Spawn + +#Tool Tips + +tooltip.impmeat1=Eating this probably isn't good for you +tooltip.impmeat2=It's warm to the touch +tooltip.barley=Similar to wheat, it grows in the wild +tooltip.cotton=The source of all string and wool + +tooltip.flour1=Bake me to make bread +tooltip.flour2=Also used in baking cake +tooltip.sulfur=2x2 converts into gunpowder +tooltip.fletching=Arrow crafting component +tooltip.imp=Resist the heat of the Nether +tooltip.string=Somewhat more durable than string + tooltip.cloud1=So light and fluffy! tooltip.cloud2=Saves you when you fall tooltip.cloud3=Causes lightning strikes tooltip.cloud4=3x3 Converts into charcoal tooltip.cloud5=2x2 Converts into sulfur -natura.tile.logs.eucalyptus_log.name=Eucalyptus Wood -natura.tile.logs.sakura_log.name=Sakura Wood -natura.tile.logs.ghostwood_log.name=Ghostwood -natura.tile.logs.hopseed_log.name=Hopseed Wood - -item.natura.spawn_egg.name=Spawn -entity.natura.Imp.name=Imp -entity.natura.HeatscarSpider.name=Heatscar Spider -entity.natura.BabyHeatscarSpider.name=Baby Heatscar Spider -entity.natura.FlameSpider.name=Heatscar Spider -entity.natura.FlameSpiderBaby.name=Baby Heatscar Spider -entity.natura.NitroCreeper.name=Nitro Creeper - -natura.tile.planks.eucalyptus_planks.name=Eucalyptus Planks -natura.tile.planks.sakura_planks.name=Sakura Planks -natura.tile.planks.ghostwood_planks.name=Ghostwood Planks -natura.tile.planks.redwood_planks.name=Redwood Planks -natura.tile.planks.bloodwood_planks.name=Bloodwood Planks -natura.tile.planks.hopseed_planks.name=Hopseed Planks -natura.tile.planks.maple_planks.name=Maple Planks -natura.tile.planks.silverbell_planks.name=Silverbell Planks -natura.tile.planks.purpleheart_planks.name=Amaranth Planks -natura.tile.planks.tiger_planks.name=Tigerwood Planks -natura.tile.planks.willow_planks.name=Willow Planks -natura.tile.planks.darkwood_planks.name=Darkwood Planks -natura.tile.planks.fusewood_planks.name=Fusewood Planks -natura.tile.planks.redwood_bark.name=Redwood Bark -natura.tile.planks.redwood_heart.name=Redwood -natura.tile.planks.redwood_root.name=Redwood Root - tooltip.tree1=The pink wood tooltip.tree2=Flowering Cherry tooltip.tree3=Pale as a ghost @@ -129,3 +145,11 @@ tooltip.redwood1=Burn it for charcoal tooltip.redwood2=or make a hidden tree door tooltip.redwood3=Heart of the tree tooltip.redwood4=Root of the tree + +#Entities +entity.natura.Imp.name=Imp +entity.natura.HeatscarSpider.name=Heatscar Spider +entity.natura.BabyHeatscarSpider.name=Baby Heatscar Spider +entity.natura.FlameSpider.name=Heatscar Spider +entity.natura.FlameSpiderBaby.name=Baby Heatscar Spider +entity.natura.NitroCreeper.name=Nitro Creeper