package com.jaquadro.minecraft.gardentrees.integration; import com.jaquadro.minecraft.gardencore.api.GardenCoreAPI; import com.jaquadro.minecraft.gardencore.api.IBonemealHandler; import com.jaquadro.minecraft.gardencore.api.SaplingRegistry; import com.jaquadro.minecraft.gardencore.api.WoodRegistry; import com.jaquadro.minecraft.gardencore.block.BlockGarden; import com.jaquadro.minecraft.gardentrees.core.ModBlocks; import com.jaquadro.minecraft.gardentrees.world.gen.WorldGenStandardOrnTree; import cpw.mods.fml.common.Loader; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; import net.minecraftforge.oredict.OreDictionary; import java.util.List; public class GardenCoreIntegration { public static final String MOD_ID = "GardenCore"; public static void init () { if (!Loader.isModLoaded(MOD_ID)) return; SaplingRegistry saplingReg = SaplingRegistry.instance(); Item sapling = Item.getItemFromBlock(Blocks.sapling); saplingReg.putExtendedData(sapling, 0, "sm_generator", WorldGenStandardOrnTree.SmallOakTree.FACTORY.create(Blocks.log, 0, Blocks.leaves, 0)); saplingReg.putExtendedData(sapling, 1, "sm_generator", WorldGenStandardOrnTree.SmallSpruceTree.FACTORY.create(Blocks.log, 1, Blocks.leaves, 1)); saplingReg.putExtendedData(sapling, 2, "sm_generator", WorldGenStandardOrnTree.SmallOakTree.FACTORY.create(Blocks.log, 2, Blocks.leaves, 2)); saplingReg.putExtendedData(sapling, 3, "sm_generator", WorldGenStandardOrnTree.SmallJungleTree.FACTORY.create(Blocks.log, 3, Blocks.leaves, 3)); saplingReg.putExtendedData(sapling, 4, "sm_generator", WorldGenStandardOrnTree.SmallAcaciaTree.FACTORY.create(Blocks.log2, 0, Blocks.leaves2, 0)); saplingReg.putExtendedData(sapling, 5, "sm_generator", WorldGenStandardOrnTree.SmallOakTree.FACTORY.create(Blocks.log2, 1, Blocks.leaves2, 1)); Item extSapling = Item.getItemFromBlock(ModBlocks.sapling); saplingReg.registerSapling(extSapling, 0, Blocks.log, 1, Blocks.leaves, 1); saplingReg.registerSapling(extSapling, 1, Blocks.log, 0, Blocks.leaves, 0); saplingReg.registerSapling(extSapling, 2, Blocks.log, 2, Blocks.leaves, 2); saplingReg.putExtendedData(extSapling, 0, "sm_generator", WorldGenStandardOrnTree.SmallSpruceTree.FACTORY.create(Blocks.log, 1, Blocks.leaves, 1)); saplingReg.putExtendedData(extSapling, 1, "sm_generator", WorldGenStandardOrnTree.SmallOakTree.FACTORY.create(Blocks.log, 0, Blocks.leaves, 0)); saplingReg.putExtendedData(extSapling, 2, "sm_generator", WorldGenStandardOrnTree.SmallOakTree.FACTORY.create(Blocks.log, 2, Blocks.leaves, 2)); GardenCoreAPI.instance().registerBonemealHandler(new GardenBonemealHandler()); WoodRegistry woodRegistry = WoodRegistry.instance(); List<ItemStack> woodList = OreDictionary.getOres("treeWood"); for (ItemStack item : woodList) { if (item == null) continue; Block block = Block.getBlockFromItem(item.getItem()); woodRegistry.registerWoodType(block, item.getItemDamage()); } } private static class GardenBonemealHandler implements IBonemealHandler { @Override public boolean applyBonemeal (World world, int x, int y, int z, BlockGarden hostBlock, int slot) { Block plantBlock = hostBlock.getPlantBlockFromSlot(world, x, y, z, slot); if (plantBlock == null) return false; Item sapling = Item.getItemFromBlock(plantBlock); int saplingMeta = hostBlock.getPlantMetaFromSlot(world, x, y, z, slot); WorldGenerator generator = (WorldGenerator) SaplingRegistry.instance().getExtendedData(sapling, saplingMeta, "sm_generator"); if (generator == null) return false; NBTTagCompound storedTE = hostBlock.saveAndClearPlantedContents(world, x, y, z); if (!generator.generate(world, world.rand, x, y + 1, z)) hostBlock.restorePlantedContents(world, x, y, z, storedTE); return true; } } }