From 158091519f98da8d56e72435c344b4e8410e689c Mon Sep 17 00:00:00 2001 From: Calclavia Date: Thu, 30 Jan 2014 00:15:54 +0800 Subject: [PATCH] Added tiers for gears: stone and iron gear --- .../core/render/RenderRIItem.java | 4 +-- .../mechanical/Mechanical.java | 4 ++- ...andler.java => GearMultiBlockHandler.java} | 9 ++++-- .../mechanical/gear/ItemGear.java | 13 +++++++++ .../mechanical/gear/PartGear.java | 25 +++++++++++++---- .../mechanical/gear/RenderGear.java | 28 +++++++++++++++++-- .../mechanical/network/PartMechanical.java | 11 ++++++-- 7 files changed, 77 insertions(+), 17 deletions(-) rename src/main/java/resonantinduction/mechanical/gear/{MultiPartMultiBlockHandler.java => GearMultiBlockHandler.java} (78%) diff --git a/src/main/java/resonantinduction/core/render/RenderRIItem.java b/src/main/java/resonantinduction/core/render/RenderRIItem.java index 5192006d..d093de03 100644 --- a/src/main/java/resonantinduction/core/render/RenderRIItem.java +++ b/src/main/java/resonantinduction/core/render/RenderRIItem.java @@ -51,11 +51,11 @@ public class RenderRIItem implements IItemRenderer } else if (item.getItem() instanceof ItemGear) { - RenderGear.INSTANCE.renderInventory(null, 0, 0, null); + RenderGear.INSTANCE.renderInventory(null, item.getItemDamage(), 0, null); } else if (item.getItem() instanceof ItemGearShaft) { - RenderGearShaft.INSTANCE.renderInventory(null, 0, 0, null); + RenderGearShaft.INSTANCE.renderInventory(null, item.getItemDamage(), 0, null); } else if (item.getItem() instanceof ItemMultimeter) { diff --git a/src/main/java/resonantinduction/mechanical/Mechanical.java b/src/main/java/resonantinduction/mechanical/Mechanical.java index 35d39990..880ee0db 100644 --- a/src/main/java/resonantinduction/mechanical/Mechanical.java +++ b/src/main/java/resonantinduction/mechanical/Mechanical.java @@ -137,7 +137,9 @@ public class Mechanical public void postInit(FMLPostInitializationEvent evt) { // Add recipes - GameRegistry.addRecipe(new ShapedOreRecipe(itemGear, "SWS", "W W", "SWS", 'W', "plankWood", 'S', Item.stick)); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(itemGear, 1, 0), "SWS", "W W", "SWS", 'W', "plankWood", 'S', Item.stick)); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(itemGear, 1, 1), " W ", "WGW", " W ", 'G', new ItemStack(itemGear, 1, 0), 'W', Block.cobblestone)); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(itemGear, 1, 2), " W ", "WGW", " W ", 'G', new ItemStack(itemGear, 1, 1), 'W', Item.ingotIron)); GameRegistry.addRecipe(new ShapedOreRecipe(itemGearShaft, "S", "S", "S", 'S', Item.stick)); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockConveyorBelt, 4), "III", "GGG", 'I', Item.ingotIron, 'G', itemGear)); GameRegistry.addRecipe(new ShapedOreRecipe(blockManipulator, "SSS", "SRS", "SCS", 'S', Item.ingotIron, 'C', blockConveyorBelt, 'R', Block.blockRedstone)); diff --git a/src/main/java/resonantinduction/mechanical/gear/MultiPartMultiBlockHandler.java b/src/main/java/resonantinduction/mechanical/gear/GearMultiBlockHandler.java similarity index 78% rename from src/main/java/resonantinduction/mechanical/gear/MultiPartMultiBlockHandler.java rename to src/main/java/resonantinduction/mechanical/gear/GearMultiBlockHandler.java index 1da58982..44575fc5 100644 --- a/src/main/java/resonantinduction/mechanical/gear/MultiPartMultiBlockHandler.java +++ b/src/main/java/resonantinduction/mechanical/gear/GearMultiBlockHandler.java @@ -7,9 +7,9 @@ import calclavia.lib.multiblock.reference.MultiBlockHandler; import codechicken.multipart.TMultiPart; import codechicken.multipart.TileMultipart; -public class MultiPartMultiBlockHandler extends MultiBlockHandler +public class GearMultiBlockHandler extends MultiBlockHandler { - public MultiPartMultiBlockHandler(PartGear wrapper) + public GearMultiBlockHandler(PartGear wrapper) { super(wrapper); } @@ -24,7 +24,10 @@ public class MultiPartMultiBlockHandler extends MultiBlockHandler if (part instanceof PartGear) { - return (PartGear) part; + if (((PartGear) part).tier == self.tier) + { + return (PartGear) part; + } } } diff --git a/src/main/java/resonantinduction/mechanical/gear/ItemGear.java b/src/main/java/resonantinduction/mechanical/gear/ItemGear.java index bc1b0876..73add854 100644 --- a/src/main/java/resonantinduction/mechanical/gear/ItemGear.java +++ b/src/main/java/resonantinduction/mechanical/gear/ItemGear.java @@ -1,10 +1,14 @@ package resonantinduction.mechanical.gear; +import java.util.List; + +import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import resonantinduction.core.Settings; import resonantinduction.core.prefab.part.ItemMultipartBase; +import resonantinduction.electrical.wire.EnumWireMaterial; import codechicken.lib.vec.BlockCoord; import codechicken.lib.vec.Vector3; import codechicken.multipart.MultiPartRegistry; @@ -29,4 +33,13 @@ public class ItemGear extends ItemMultipartBase return part; } + + @Override + public void getSubItems(int itemID, CreativeTabs tab, List listToAddTo) + { + for (int i = 0; i < 3; i++) + { + listToAddTo.add(new ItemStack(itemID, 1, i)); + } + } } diff --git a/src/main/java/resonantinduction/mechanical/gear/PartGear.java b/src/main/java/resonantinduction/mechanical/gear/PartGear.java index b62a3916..9e654114 100644 --- a/src/main/java/resonantinduction/mechanical/gear/PartGear.java +++ b/src/main/java/resonantinduction/mechanical/gear/PartGear.java @@ -77,9 +77,22 @@ public class PartGear extends PartMechanical implements IMechanical, IMultiBlock if (getMultiBlock().isPrimary()) { - // Decelerate the gear. - torque *= 0.95f; - angularVelocity *= 0.95f; + // Decelerate the gear based on tier. + switch (tier) + { + default: + torque *= 0.9f; + angularVelocity *= 0.95f; + break; + case 1: + torque *= 0.95f; + angularVelocity *= 0.9f; + break; + case 2: + torque *= 0.99f; + angularVelocity *= 0.99f; + break; + } } else { @@ -270,7 +283,7 @@ public class PartGear extends PartMechanical implements IMechanical, IMultiBlock { if (pass == 0) { - RenderGear.INSTANCE.renderDynamic(this, pos.x, pos.y, pos.z, frame); + RenderGear.INSTANCE.renderDynamic(this, pos.x, pos.y, pos.z, tier); } } @@ -297,7 +310,7 @@ public class PartGear extends PartMechanical implements IMechanical, IMultiBlock /** * Multiblock */ - private MultiPartMultiBlockHandler multiBlock; + private GearMultiBlockHandler multiBlock; @Override public universalelectricity.api.vector.Vector3[] getMultiBlockVectors() @@ -354,7 +367,7 @@ public class PartGear extends PartMechanical implements IMechanical, IMultiBlock public MultiBlockHandler getMultiBlock() { if (multiBlock == null) - multiBlock = new MultiPartMultiBlockHandler(this); + multiBlock = new GearMultiBlockHandler(this); return multiBlock; } diff --git a/src/main/java/resonantinduction/mechanical/gear/RenderGear.java b/src/main/java/resonantinduction/mechanical/gear/RenderGear.java index 2dbc6fed..6552e6e7 100644 --- a/src/main/java/resonantinduction/mechanical/gear/RenderGear.java +++ b/src/main/java/resonantinduction/mechanical/gear/RenderGear.java @@ -23,11 +23,22 @@ public class RenderGear public void renderInventory(Block block, int metadata, int modelID, RenderBlocks renderer) { GL11.glRotatef(90, 1, 0, 0); - RenderUtility.bind(Reference.BLOCK_TEXTURE_DIRECTORY + "planks_oak.png"); + switch (metadata) + { + default: + RenderUtility.bind(Reference.BLOCK_TEXTURE_DIRECTORY + "planks_oak.png"); + break; + case 1: + RenderUtility.bind(Reference.BLOCK_TEXTURE_DIRECTORY + "cobblestone.png"); + break; + case 2: + RenderUtility.bind(Reference.BLOCK_TEXTURE_DIRECTORY + "iron_block.png"); + break; + } MODEL.renderOnly("SmallGear"); } - public void renderDynamic(PartGear part, double x, double y, double z, float frame) + public void renderDynamic(PartGear part, double x, double y, double z, int tier) { if (part.getMultiBlock().isPrimary()) { @@ -40,7 +51,18 @@ public class RenderGear GL11.glRotatef((float) Math.toDegrees(part.angle), 0, 1, 0); - RenderUtility.bind(Reference.BLOCK_TEXTURE_DIRECTORY + "planks_oak.png"); + switch (tier) + { + default: + RenderUtility.bind(Reference.BLOCK_TEXTURE_DIRECTORY + "planks_oak.png"); + break; + case 1: + RenderUtility.bind(Reference.BLOCK_TEXTURE_DIRECTORY + "cobblestone.png"); + break; + case 2: + RenderUtility.bind(Reference.BLOCK_TEXTURE_DIRECTORY + "iron_block.png"); + break; + } if (part.getMultiBlock().isConstructed()) { diff --git a/src/main/java/resonantinduction/mechanical/network/PartMechanical.java b/src/main/java/resonantinduction/mechanical/network/PartMechanical.java index 0e8b9f6c..baa232a1 100644 --- a/src/main/java/resonantinduction/mechanical/network/PartMechanical.java +++ b/src/main/java/resonantinduction/mechanical/network/PartMechanical.java @@ -51,9 +51,12 @@ public abstract class PartMechanical extends JCuboidPart implements JNormalOcclu /** The current angle the gear is on. In radians. */ public float angle = 0; + public int tier; + public void preparePlacement(int side, int itemDamage) { this.placementSide = ForgeDirection.getOrientation((byte) (side ^ 1)); + this.tier = itemDamage; } @Override @@ -62,8 +65,10 @@ public abstract class PartMechanical extends JCuboidPart implements JNormalOcclu if (!world().isRemote) { System.out.println(this + ":" + getNetwork()); - /*for (Object obj : connections) - System.out.println(obj);*/ + /* + * for (Object obj : connections) + * System.out.println(obj); + */ } return false; @@ -195,6 +200,7 @@ public abstract class PartMechanical extends JCuboidPart implements JNormalOcclu { placementSide = ForgeDirection.getOrientation(nbt.getByte("side")); angularVelocity = nbt.getFloat("angularVelocity"); + tier = nbt.getByte("tier"); } @Override @@ -202,6 +208,7 @@ public abstract class PartMechanical extends JCuboidPart implements JNormalOcclu { nbt.setByte("side", (byte) placementSide.ordinal()); nbt.setFloat("angularVelocity", angularVelocity); + nbt.setByte("tier", (byte) tier); } protected abstract ItemStack getItem();