From a1b40c89456d02f0fedc48694170048aa15f2249 Mon Sep 17 00:00:00 2001 From: Justin Aquadro Date: Sun, 6 Dec 2015 21:48:59 -0500 Subject: [PATCH] iron hoops --- resources/assets/gardencore/lang/en_US.lang | 1 + .../gardenstuff/block/BlockCandelabra.java | 5 ++ .../gardenstuff/block/BlockHoop.java | 59 +++++++++++++++++ .../gardenstuff/core/ClientProxy.java | 3 + .../minecraft/gardenstuff/core/ModBlocks.java | 3 + .../gardenstuff/core/ModRecipes.java | 3 + .../gardenstuff/renderer/HoopRenderer.java | 64 +++++++++++++++++++ .../minecraft/gardentrees/GardenTrees.java | 4 +- .../gardentrees/config/ConfigManager.java | 5 ++ 9 files changed, 146 insertions(+), 1 deletion(-) create mode 100644 src/com/jaquadro/minecraft/gardenstuff/block/BlockHoop.java create mode 100644 src/com/jaquadro/minecraft/gardenstuff/renderer/HoopRenderer.java diff --git a/resources/assets/gardencore/lang/en_US.lang b/resources/assets/gardencore/lang/en_US.lang index 904ccfe..25eebe3 100644 --- a/resources/assets/gardencore/lang/en_US.lang +++ b/resources/assets/gardencore/lang/en_US.lang @@ -140,6 +140,7 @@ tile.gardenstuff.mossBrick.cracked_mossy_2.name=Mossy Cracked Stone Bricks tile.gardenstuff.mossBrick.cracked_mossy_3.name=Mossy Cracked Stone Bricks tile.gardenstuff.mossBrick.cracked_mossy_4.name=Mossy Cracked Stone Bricks tile.gardenstuff.candelabra.name=Candelabra +tile.gardenstuff.hoop.name=Wrought Iron Hoop gardenstuff.lanternSource=Contents gardenstuff.lanternSource.none=Empty diff --git a/src/com/jaquadro/minecraft/gardenstuff/block/BlockCandelabra.java b/src/com/jaquadro/minecraft/gardenstuff/block/BlockCandelabra.java index ae6ab21..ccee708 100644 --- a/src/com/jaquadro/minecraft/gardenstuff/block/BlockCandelabra.java +++ b/src/com/jaquadro/minecraft/gardenstuff/block/BlockCandelabra.java @@ -82,6 +82,11 @@ public boolean shouldSideBeRendered (IBlockAccess world, int x, int y, int z, in return true; } + @Override + public int damageDropped (int meta) { + return meta; + } + @Override public void setBlockBoundsBasedOnState (IBlockAccess world, int x, int y, int z) { TileEntityCandelabra tile = getTileEntity(world, x, y, z); diff --git a/src/com/jaquadro/minecraft/gardenstuff/block/BlockHoop.java b/src/com/jaquadro/minecraft/gardenstuff/block/BlockHoop.java new file mode 100644 index 0000000..4db3c44 --- /dev/null +++ b/src/com/jaquadro/minecraft/gardenstuff/block/BlockHoop.java @@ -0,0 +1,59 @@ +package com.jaquadro.minecraft.gardenstuff.block; + +import com.jaquadro.minecraft.gardencore.api.block.IChainAttachable; +import com.jaquadro.minecraft.gardencore.core.ModCreativeTabs; +import com.jaquadro.minecraft.gardenstuff.GardenStuff; +import com.jaquadro.minecraft.gardenstuff.core.ClientProxy; +import com.jaquadro.minecraft.gardenstuff.core.ModBlocks; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.util.IIcon; +import net.minecraft.util.Vec3; + +public class BlockHoop extends Block implements IChainAttachable +{ + public BlockHoop (String name) { + super(Material.iron); + + setBlockName(name); + setHardness(2.5f); + setResistance(5f); + setStepSound(soundTypeMetal); + setBlockBounds(0, .0625f, 0, 1, .375f, 1); + setBlockTextureName(GardenStuff.MOD_ID + "hoop"); + setCreativeTab(ModCreativeTabs.tabGardenCore); + } + + @Override + public boolean isOpaqueCube () { + return false; + } + + @Override + public boolean renderAsNormalBlock () { + return false; + } + + @Override + public int getRenderType () { + return ClientProxy.hoopRenderID; + } + + @Override + public IIcon getIcon (int side, int meta) { + return ModBlocks.metalBlock.getIcon(side, meta); + } + + private Vec3[] attachPoints = new Vec3[] { + Vec3.createVectorHelper(.03125, .375f, .03125), Vec3.createVectorHelper(.03125, .375f, 1 - .03125), + Vec3.createVectorHelper(1 - .03125, .375f, .03125), Vec3.createVectorHelper(1 - .03125, .375f, 1 - .03125), + }; + + @Override + public Vec3[] getChainAttachPoints (int side) { + if (side == 1) + return attachPoints; + + return null; + } +} diff --git a/src/com/jaquadro/minecraft/gardenstuff/core/ClientProxy.java b/src/com/jaquadro/minecraft/gardenstuff/core/ClientProxy.java index 881293e..739a937 100644 --- a/src/com/jaquadro/minecraft/gardenstuff/core/ClientProxy.java +++ b/src/com/jaquadro/minecraft/gardenstuff/core/ClientProxy.java @@ -14,6 +14,7 @@ public class ClientProxy extends CommonProxy public static int lanternRenderID; public static int fenceRenderID; public static int sconceRenderID; + public static int hoopRenderID; public static LanternRenderer lanternRenderer; @@ -25,6 +26,7 @@ public void registerRenderers () { lanternRenderID = RenderingRegistry.getNextAvailableRenderId(); fenceRenderID = RenderingRegistry.getNextAvailableRenderId(); sconceRenderID = RenderingRegistry.getNextAvailableRenderId(); + hoopRenderID = RenderingRegistry.getNextAvailableRenderId(); lanternRenderer = new LanternRenderer(); @@ -34,6 +36,7 @@ public void registerRenderers () { RenderingRegistry.registerBlockHandler(lanternRenderID, lanternRenderer); RenderingRegistry.registerBlockHandler(fenceRenderID, new FenceRenderer()); RenderingRegistry.registerBlockHandler(sconceRenderID, new CandelabraRenderer()); + RenderingRegistry.registerBlockHandler(hoopRenderID, new HoopRenderer()); MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(ModBlocks.lantern), new LanternItemRenderer()); } diff --git a/src/com/jaquadro/minecraft/gardenstuff/core/ModBlocks.java b/src/com/jaquadro/minecraft/gardenstuff/core/ModBlocks.java index 21d501b..395d29c 100644 --- a/src/com/jaquadro/minecraft/gardenstuff/core/ModBlocks.java +++ b/src/com/jaquadro/minecraft/gardenstuff/core/ModBlocks.java @@ -27,6 +27,7 @@ public class ModBlocks public static BlockBloomeryFurnace bloomeryFurnace; public static BlockMossBrick mossBrick; public static BlockCandelabra candelabra; + public static BlockHoop hoop; public void init () { heavyChain = new BlockHeavyChain(makeName("heavyChain")); @@ -42,6 +43,7 @@ public void init () { bloomeryFurnace = new BlockBloomeryFurnace(makeName("bloomeryFurnace")); mossBrick = new BlockMossBrick(makeName("mossBrick")); candelabra = new BlockCandelabra(makeName("candelabra")); + hoop = new BlockHoop(makeName("hoop")); GameRegistry.registerBlock(heavyChain, ItemHeavyChain.class, "heavy_chain"); GameRegistry.registerBlock(lightChain, ItemLightChain.class, "light_chain"); @@ -55,6 +57,7 @@ public void init () { GameRegistry.registerBlock(bloomeryFurnace, "bloomery_furnace"); GameRegistry.registerBlock(mossBrick, ItemMossBrick.class, "moss_brick"); GameRegistry.registerBlock(candelabra, ItemCandelabra.class, "candelabra"); + GameRegistry.registerBlock(hoop, "hoop"); //GameRegistry.registerBlock(largeMountingPlate, "large_mounting_plate"); GameRegistry.registerTileEntity(TileEntityLatticeMetal.class, ModBlocks.getQualifiedName(latticeMetal)); diff --git a/src/com/jaquadro/minecraft/gardenstuff/core/ModRecipes.java b/src/com/jaquadro/minecraft/gardenstuff/core/ModRecipes.java index 3ca5e3f..203a438 100644 --- a/src/com/jaquadro/minecraft/gardenstuff/core/ModRecipes.java +++ b/src/com/jaquadro/minecraft/gardenstuff/core/ModRecipes.java @@ -97,6 +97,9 @@ public void init () { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.candelabra, 4, 2), "xxx", "yyy", " z ", 'x', ModItems.candle, 'y', "nuggetWroughtIron", 'z', "ingotWroughtIron")); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.hoop, 2, 0), "xyx", "y y", "xyx", + 'x', "nuggetWroughtIron", 'y', "ingotWroughtIron")); + GameRegistry.addSmelting(wroughtIronIngot, new ItemStack(Items.iron_ingot), 0); } } diff --git a/src/com/jaquadro/minecraft/gardenstuff/renderer/HoopRenderer.java b/src/com/jaquadro/minecraft/gardenstuff/renderer/HoopRenderer.java new file mode 100644 index 0000000..fd0e44e --- /dev/null +++ b/src/com/jaquadro/minecraft/gardenstuff/renderer/HoopRenderer.java @@ -0,0 +1,64 @@ +package com.jaquadro.minecraft.gardenstuff.renderer; + +import com.jaquadro.minecraft.gardencore.client.renderer.support.ModularBoxRenderer; +import com.jaquadro.minecraft.gardenstuff.block.BlockHoop; +import com.jaquadro.minecraft.gardenstuff.core.ClientProxy; +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.world.IBlockAccess; +import org.lwjgl.opengl.GL11; + +public class HoopRenderer implements ISimpleBlockRenderingHandler +{ + private ModularBoxRenderer boxrender = new ModularBoxRenderer(); + + @Override + public void renderInventoryBlock (Block block, int metadata, int modelId, RenderBlocks renderer) { + if (!(block instanceof BlockHoop)) + return; + + renderInventoryBlock((BlockHoop) block, metadata, modelId, renderer); + } + + private void renderInventoryBlock (BlockHoop block, int metadata, int modelId, RenderBlocks renderer) { + GL11.glRotatef(90, 0, 1, 0); + GL11.glTranslatef(-.5f, -.5f, -.5f); + + boxrender.setUnit(0.0625f); + boxrender.setIcon(block.getIcon(0, 0)); + boxrender.setColor(ModularBoxRenderer.COLOR_WHITE); + + boxrender.renderBox(null, block, 0, 0, 0, 0, .0625f, 0, 1, .375f, 1, 0, ModularBoxRenderer.CUT_YNEG | ModularBoxRenderer.CUT_YPOS); + + GL11.glTranslatef(.5f, .5f, .5f); + } + + @Override + public boolean renderWorldBlock (IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + if (!(block instanceof BlockHoop)) + return false; + + return renderWorldBlock(world, x, y, z, (BlockHoop) block, modelId, renderer); + } + + private boolean renderWorldBlock (IBlockAccess world, int x, int y, int z, BlockHoop block, int modelId, RenderBlocks renderer) { + boxrender.setUnit(0.0625f); + boxrender.setIcon(block.getIcon(0, 0)); + boxrender.setColor(ModularBoxRenderer.COLOR_WHITE); + + boxrender.renderBox(world, block, x, y, z, 0, .0625f, 0, 1, .375f, 1, 0, ModularBoxRenderer.CUT_YNEG | ModularBoxRenderer.CUT_YPOS); + + return true; + } + + @Override + public boolean shouldRender3DInInventory (int modelId) { + return true; + } + + @Override + public int getRenderId () { + return ClientProxy.hoopRenderID; + } +} diff --git a/src/com/jaquadro/minecraft/gardentrees/GardenTrees.java b/src/com/jaquadro/minecraft/gardentrees/GardenTrees.java index c4d5d8b..e141468 100644 --- a/src/com/jaquadro/minecraft/gardentrees/GardenTrees.java +++ b/src/com/jaquadro/minecraft/gardentrees/GardenTrees.java @@ -54,7 +54,9 @@ public void init (FMLInitializationEvent event) { FMLCommonHandler.instance().bus().register(new ForgeEventHandler()); GameRegistry.registerFuelHandler(new FuelHandler()); - GameRegistry.registerWorldGenerator(new WorldGenCandelilla(ModBlocks.candelilla), 10); + + if (config.generateCandelilla) + GameRegistry.registerWorldGenerator(new WorldGenCandelilla(ModBlocks.candelilla), 10); } @Mod.EventHandler diff --git a/src/com/jaquadro/minecraft/gardentrees/config/ConfigManager.java b/src/com/jaquadro/minecraft/gardentrees/config/ConfigManager.java index a4b25f6..2d9bc94 100644 --- a/src/com/jaquadro/minecraft/gardentrees/config/ConfigManager.java +++ b/src/com/jaquadro/minecraft/gardentrees/config/ConfigManager.java @@ -24,6 +24,7 @@ public class ConfigManager public int strangePlantDropMax; public boolean compostGrowsOrnamentalTrees; + public boolean generateCandelilla; public ConfigManager (File file) { config = new Configuration(file); @@ -47,6 +48,10 @@ public ConfigManager (File file) { propCompostGrowsOrnamentalTrees.comment = "Using compost on saplings will grow ornamental (miniature) trees instead of normal trees."; compostGrowsOrnamentalTrees = propCompostGrowsOrnamentalTrees.getBoolean(); + Property propGenerateCandelilla = config.get(Configuration.CATEGORY_GENERAL, "generateCandelilla", true); + propGenerateCandelilla.comment = "Generates clusters of candelilla shrub in warm, sandy biomes."; + generateCandelilla = propGenerateCandelilla.getBoolean(); + config.save(); }