package net.tropicraft.registry; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import net.minecraft.block.Block; import net.minecraft.block.BlockDoor; import net.minecraft.block.BlockFalling; import net.minecraft.block.BlockSlab; import net.minecraft.block.material.Material; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemSlab; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidRegistry; import net.tropicraft.block.BlockBambooChest; import net.tropicraft.block.BlockBambooShoot; import net.tropicraft.block.BlockBambooDoor; import net.tropicraft.block.BlockBambooMug; import net.tropicraft.block.BlockBongoDrum; import net.tropicraft.block.BlockBundle; import net.tropicraft.block.BlockChunkOHead; import net.tropicraft.block.BlockCoconut; import net.tropicraft.block.BlockCoffeePlant; import net.tropicraft.block.BlockCoral; import net.tropicraft.block.BlockCurareBowl; import net.tropicraft.block.BlockEIHMixer; import net.tropicraft.block.BlockFirePit; import net.tropicraft.block.BlockFruitLeaves; import net.tropicraft.block.BlockKoaChest; import net.tropicraft.block.BlockMineralSands; import net.tropicraft.block.BlockPalmLeaves; import net.tropicraft.block.BlockPineapple; import net.tropicraft.block.BlockPortalWall; import net.tropicraft.block.BlockPurchasePlate; import net.tropicraft.block.BlockPurifiedSand; import net.tropicraft.block.BlockRainStopper; import net.tropicraft.block.BlockRainforestLeaves; import net.tropicraft.block.BlockSifter; import net.tropicraft.block.BlockTallFlowers; import net.tropicraft.block.BlockTikiTorch; import net.tropicraft.block.BlockTropicraft; import net.tropicraft.block.BlockTropicraftFence; import net.tropicraft.block.BlockTropicraftFenceGate; import net.tropicraft.block.BlockTropicraftFlower; import net.tropicraft.block.BlockTropicraftFlowerPot; import net.tropicraft.block.BlockTropicraftLog; import net.tropicraft.block.BlockTropicraftMulti; import net.tropicraft.block.BlockTropicraftOre; import net.tropicraft.block.BlockTropicraftPlank; import net.tropicraft.block.BlockTropicraftSapling; import net.tropicraft.block.BlockTropicraftSlab; import net.tropicraft.block.BlockTropicraftStairs; import net.tropicraft.block.BlockTropicsPortal; import net.tropicraft.block.BlockTropicsWater; import net.tropicraft.info.TCNames; import net.tropicraft.item.ItemBlockTropicraft; import net.tropicraft.item.ItemPineapple; import net.tropicraft.item.ItemTallFlowers; import net.tropicraft.item.ItemTropicraftSlab; import cpw.mods.fml.common.registry.GameRegistry; public class TCBlockRegistry { private static final Map<String, Class<? extends ItemBlock>> multiBlockMap = new HashMap<String, Class<? extends ItemBlock>>(); static { multiBlockMap.put(TCNames.pineapple, ItemPineapple.class); multiBlockMap.put(TCNames.tallFlower, ItemTallFlowers.class); multiBlockMap.put(TCNames.singleSlabs, ItemSlab.class); multiBlockMap.put(TCNames.doubleSlabs, ItemSlab.class); } public static final BlockTropicraft chunkOHead = new BlockChunkOHead(); public static final BlockTropicraftStairs chunkStairs = new BlockTropicraftStairs(TCNames.chunkStairs, chunkOHead, 0); public static final Block eudialyteOre = new BlockTropicraftOre().setHardness(3.0F).setResistance(5.0F); public static final Block zirconOre = new BlockTropicraftOre().setHardness(4.0F).setResistance(5.0F); public static final Block azuriteOre = new BlockTropicraftOre().setHardness(3.0F).setResistance(5.0F); public static final BlockTropicraft oreBlocks = new BlockTropicraftMulti(TCNames.oreBlockNames); public static final BlockTropicraft thatchBundle = new BlockBundle(TCNames.thatchBundle); public static final BlockTropicraft coral = new BlockCoral(TCNames.coralNames); public static final BlockTropicraft bambooBundle = (BlockTropicraft) new BlockBundle(TCNames.bambooBundle).setHardness(1.0F).setResistance(0.1F); public static final BlockTropicraft logs = new BlockTropicraftLog(TCNames.logNames); public static final BlockTropicraft planks = new BlockTropicraftPlank(TCNames.plankNames); public static final BlockTropicraftStairs bambooStairs = new BlockTropicraftStairs(TCNames.bambooStairs, bambooBundle, 0); public static final BlockTropicraftStairs thatchStairs = new BlockTropicraftStairs(TCNames.thatchStairs, thatchBundle, 0); public static final BlockTropicraftStairs palmStairs = new BlockTropicraftStairs(TCNames.palmStairs, planks, 0); public static final BlockTropicraftStairs mahoganyStairs = new BlockTropicraftStairs(TCNames.mahoganyStairs, planks, 3); public static final BlockPineapple pineapple = new BlockPineapple(TCNames.pineappleNames); public static final BlockTallFlowers tallFlowers = new BlockTallFlowers(TCNames.tallFlowerNames); public static final BlockTropicraftFenceGate bambooFenceGate = new BlockTropicraftFenceGate(bambooBundle, 0, TCNames.bambooFenceGate, Material.wood); public static final BlockTropicraftFenceGate palmFenceGate = new BlockTropicraftFenceGate(planks, 1, TCNames.palmFenceGate, Material.wood); public static final BlockTropicraftFence bambooFence = new BlockTropicraftFence(TCNames.bambooFence, TCNames.bambooBundle + "_Side", bambooFenceGate, Material.wood); // public static final BlockTropicraftFence chunkFence = new BlockTropicraftFence(TCNames.chunkFence, TCNames.chunkOHead, Material.rock); public static final BlockTropicraftFence palmFence = new BlockTropicraftFence(TCNames.palmFence, TCNames.plank + "_" + TCNames.plankNames[0], palmFenceGate, Material.wood); // public static final BlockTropicraftFence thatchFence = new BlockTropicraftFence(TCNames.thatchFence, TCNames.thatchBundle + "_Side", Material.plants); // public static final BlockTropicraftFence mahoganyFence = new BlockTropicraftFence(TCNames.mahoganyFence, TCNames.plank + "_" + TCNames.plankNames[1], Material.wood); public static final BlockTropicraftSapling saplings = new BlockTropicraftSapling(TCNames.saplingNames); public static final BlockTropicraft coffeePlant = new BlockCoffeePlant(); public static final BlockTropicraft tikiTorch = new BlockTikiTorch(); public static final BlockDoor bambooDoor = new BlockBambooDoor(); public static final BlockSlab singleSlabs = new BlockTropicraftSlab(false); public static final BlockSlab doubleSlabs = new BlockTropicraftSlab(true); public static final BlockTropicsWater tropicsWater = new BlockTropicsWater(TCFluidRegistry.tropicsWater, Material.water); public static final BlockTropicraft rainStopper = new BlockRainStopper(); public static final BlockTropicraftFlower flowers = new BlockTropicraftFlower(TCNames.flowerIndices); public static final BlockTropicraftFlowerPot flowerPot = new BlockTropicraftFlowerPot(); public static final Block firePit = new BlockFirePit(); public static final BlockCoconut coconut = new BlockCoconut(); public static final BlockPortalWall tropicsPortalWall = new BlockPortalWall(); public static final BlockTropicsPortal tropicsPortal = new BlockTropicsPortal(TCFluidRegistry.tropicsPortal, Material.water); //TODO SCUBA public static final BlockAirCompressor airCompressor = new BlockAirCompressor(); public static final BlockBambooChest bambooChest = new BlockBambooChest(); public static final BlockFruitLeaves fruitLeaves = new BlockFruitLeaves(); public static final BlockPalmLeaves palmLeaves = new BlockPalmLeaves(); public static final BlockRainforestLeaves rainforestLeaves = new BlockRainforestLeaves(); public static final BlockBambooShoot bambooShoot = new BlockBambooShoot(); public static final BlockFalling purifiedSand = new BlockPurifiedSand(); public static final BlockMineralSands mineralSands = new BlockMineralSands(); public static final BlockSifter sifter = new BlockSifter(); public static final BlockCurareBowl curareBowl = new BlockCurareBowl(); public static final BlockBongoDrum bongoDrum = new BlockBongoDrum(TCNames.bongoDrumNames); public static final BlockKoaChest koaChest = new BlockKoaChest(); public static final BlockPurchasePlate purchasePlate = new BlockPurchasePlate(); public static final BlockBambooMug bambooMug = new BlockBambooMug(); public static final BlockEIHMixer eihMixer = new BlockEIHMixer();; /** * Register all the blocks */ public static void init() { registerBlock(chunkOHead, TCNames.chunkOHead); registerBlock(chunkStairs, TCNames.chunkStairs); registerBlock(eudialyteOre, TCNames.eudialyteOre); registerBlock(zirconOre, TCNames.zirconOre); registerBlock(azuriteOre, TCNames.azuriteOre); registerMultiBlock(oreBlocks, TCNames.oreBlock, TCNames.oreBlockNames); registerBlock(thatchBundle, TCNames.thatchBundle); registerMultiBlock(coral, TCNames.coral, TCNames.coralNames); registerBlock(bambooBundle, TCNames.bambooBundle); registerMultiBlock(logs, TCNames.log, TCNames.logNames); Blocks.fire.setFireInfo(TCBlockRegistry.logs, 5, 5); registerMultiBlock(planks, TCNames.plank, TCNames.plankNames); Blocks.fire.setFireInfo(TCBlockRegistry.planks, 5, 5); registerBlock(bambooStairs, TCNames.bambooStairs); registerBlock(thatchStairs, TCNames.thatchStairs); registerBlock(palmStairs, TCNames.palmStairs); registerBlock(mahoganyStairs, TCNames.mahoganyStairs); registerMultiBlock(tallFlowers, TCNames.tallFlower, TCNames.tallFlowerNames); registerMultiBlock(pineapple, TCNames.pineapple, TCNames.pineappleNames); registerBlockNoName(bambooFence, TCNames.bambooFence); // registerBlockNoName(chunkFence, TCNames.chunkFence); // registerBlockNoName(thatchFence, TCNames.thatchFence); registerBlockNoName(palmFence, TCNames.palmFence); // registerBlockNoName(mahoganyFence, TCNames.mahoganyFence); registerMultiBlock(saplings, TCNames.sapling, TCNames.saplingNames); registerBlock(coffeePlant, TCNames.coffeePlant); registerBlock(bambooFenceGate, TCNames.bambooFenceGate); registerBlock(palmFenceGate, TCNames.palmFenceGate); Blocks.fire.setFireInfo(palmFenceGate, 5, 5); registerBlock(tikiTorch, TCNames.tikiTorch); registerBlock(bambooDoor, TCNames.bambooDoor); registerMultiBlock(singleSlabs, TCNames.singleSlabs, ItemTropicraftSlab.class, new Object[]{singleSlabs, doubleSlabs, false}); registerMultiBlock(doubleSlabs, TCNames.doubleSlabs, ItemTropicraftSlab.class, new Object[]{doubleSlabs, singleSlabs, true}); registerBlock(tropicsWater, TCNames.stillWater); registerBlock(rainStopper, TCNames.rainStopper); registerMultiBlock(flowers, TCNames.flower, TCNames.flowerIndices); registerBlock(flowerPot, TCNames.flowerPot); registerBlock(coconut, TCNames.coconut); registerBlock(firePit, TCNames.firePit); //TODO SCUBA registerBlock(airCompressor, TCNames.airCompressor); registerBlock(bambooChest, TCNames.bambooChest); registerBlock(tropicsPortal, TCNames.portal); registerBlock(tropicsPortalWall, TCNames.portalWall); registerMultiBlock(fruitLeaves, TCNames.leaf, TCNames.fruitLeafNames); Blocks.fire.setFireInfo(TCBlockRegistry.fruitLeaves, 30, 60); registerBlock(palmLeaves, TCNames.palmLeaves); Blocks.fire.setFireInfo(TCBlockRegistry.palmLeaves, 30, 60); registerMultiBlock(rainforestLeaves, TCNames.leafRainforest, TCNames.rainforestLeafNames); registerBlock(bambooShoot, TCNames.bambooShoot); registerBlock(purifiedSand, TCNames.purifiedSand); registerMultiBlock(mineralSands, TCNames.mineralSand, TCNames.mineralSandNames); registerBlock(sifter, TCNames.sifter); registerBlock(curareBowl, TCNames.curareBowl); registerMultiBlock(bongoDrum, TCNames.bongoDrum, TCNames.bongoDrumNames); registerBlock(koaChest, TCNames.koaChest); registerBlock(purchasePlate, TCNames.purchasePlate); registerBlock(bambooMug, TCNames.bambooMug); registerBlock(eihMixer, TCNames.eihMixer); } private static void registerMultiBlock(Block block, String name, Class<? extends ItemBlock> c, Object[] params) { GameRegistry.registerBlock(block, c, "tile." + name, params); block.setBlockName(name); } /** * Register a block with metadata * @param block Block being registered * @param name Name of the image prefix * @param names Names of the images */ private static void registerMultiBlock(Block block, String name, String[] names) { List<String> namesList = new ArrayList<String>(); Collections.addAll(namesList, names); Class<? extends ItemBlock> clazz; clazz = multiBlockMap.containsKey(name) ? multiBlockMap.get(name) : ItemBlockTropicraft.class; GameRegistry.registerBlock(block, clazz, "tile." + name, namesList); block.setBlockName(name); } /** * Helper method for registering a block with Forge * @param block Block instance * @param name Name of the block */ private static void registerBlock(Block block, String name) { GameRegistry.registerBlock(block, "tile." + name); block.setBlockName(name); } /** * Helper method for registering a block with Forge w/o setting the block name * @param block Block instance * @param name Name of the block */ private static void registerBlockNoName(Block block, String name) { GameRegistry.registerBlock(block, "tile." + name); //block.setBlockName(name); } }