From 883c0458da19c548ff2fc9880fd681f35fba3d9a Mon Sep 17 00:00:00 2001 From: Calclavia Date: Wed, 9 Oct 2013 14:02:46 +0800 Subject: [PATCH] Added recipes for multipart wires --- .../BlockAdvancedFurnace.java | 1 + src/resonantinduction/MultipartRI.java | 4 +- src/resonantinduction/ResonantInduction.java | 79 +++++++++---- .../TileEntityAdvancedFurnace.java | 11 +- .../battery/TileEntityBattery.java | 2 +- .../render/BlockRenderingHandler.java | 6 +- src/resonantinduction/render/InvertX.java | 32 ++--- .../render/RenderPartWire.java | 111 +++++++++--------- .../wire/EnumWireMaterial.java | 41 ++++++- src/resonantinduction/wire/IInsulation.java | 4 +- .../wire/TileEntityWire.java | 9 +- .../wire/multipart/ItemPartWire.java | 12 +- .../wire/multipart/PartAdvanced.java | 6 +- .../wire/multipart/PartConductor.java | 61 +++++----- .../multipart/PartUniversalConductor.java | 37 +++--- .../wire/multipart/PartWire.java | 30 ++--- .../multipart/javatraits/TEnergySink.java | 72 ++++++------ 17 files changed, 293 insertions(+), 225 deletions(-) diff --git a/src/resonantinduction/BlockAdvancedFurnace.java b/src/resonantinduction/BlockAdvancedFurnace.java index 393f52642..4f8762c2c 100644 --- a/src/resonantinduction/BlockAdvancedFurnace.java +++ b/src/resonantinduction/BlockAdvancedFurnace.java @@ -15,6 +15,7 @@ public class BlockAdvancedFurnace extends BlockFurnace super(par1, par2); } + @Override public TileEntity createNewTileEntity(World par1World) { return new TileEntityAdvancedFurnace(); diff --git a/src/resonantinduction/MultipartRI.java b/src/resonantinduction/MultipartRI.java index 389e79b77..f2654e7a2 100644 --- a/src/resonantinduction/MultipartRI.java +++ b/src/resonantinduction/MultipartRI.java @@ -16,10 +16,10 @@ public class MultipartRI implements IPartFactory return new PartWire(EnumWireMaterial.COPPER.ordinal()); return null; } - + public void init() { - MultiPartRegistry.registerParts(this, new String[]{"resonant_induction_wire"}); + MultiPartRegistry.registerParts(this, new String[] { "resonant_induction_wire" }); MultipartGenerator.registerPassThroughInterface("universalelectricity.core.block.IConductor"); MultipartGenerator.registerPassThroughInterface("buildcraft.api.power.IPowerReceptor"); MultipartGenerator.registerPassThroughInterface("resonantinduction.wire.IInsulatedMaterial"); diff --git a/src/resonantinduction/ResonantInduction.java b/src/resonantinduction/ResonantInduction.java index f896178fe..07fd1a57f 100644 --- a/src/resonantinduction/ResonantInduction.java +++ b/src/resonantinduction/ResonantInduction.java @@ -145,14 +145,16 @@ public class ResonantInduction public static Item itemCapacitor; public static Item itemInfiniteCapacitor; public static Item itemLinker; - public static Item itemPartWire; + /** With Forge Multipart; Use EnumWireMaterial reference. **/ + private static Item itemPartWire; // Blocks public static Block blockTesla; public static Block blockMultimeter; public static Block blockEMContractor; public static Block blockBattery; - public static Block blockWire; + /** Without Forge Multipart **/ + private static Block blockWire; public static Block blockAdvancedFurnaceIdle, blockAdvancedFurnaceBurning; @@ -185,14 +187,22 @@ public class ResonantInduction itemLinker = new ItemLinker(getNextItemID()); itemInfiniteCapacitor = new ItemInfiniteCapacitor(getNextItemID()); - itemPartWire = new ItemPartWire(getNextItemID()); + if (Loader.isModLoaded("ForgeMultipart")) + { + itemPartWire = new ItemPartWire(getNextItemID()); + } // Blocks blockTesla = new BlockTesla(getNextBlockID()); blockMultimeter = new BlockMultimeter(getNextBlockID()); blockEMContractor = new BlockEMContractor(getNextBlockID()); blockBattery = new BlockBattery(getNextBlockID()); - blockWire = new BlockWire(getNextBlockID()); + + if (itemPartWire == null) + { + blockWire = new BlockWire(getNextBlockID()); + } + blockAdvancedFurnaceIdle = new BlockAdvancedFurnace(getNextBlockID(), false); blockAdvancedFurnaceBurning = new BlockAdvancedFurnace(getNextBlockID(), true); @@ -207,22 +217,48 @@ public class ResonantInduction GameRegistry.registerBlock(blockMultimeter, ItemBlockMultimeter.class, blockMultimeter.getUnlocalizedName()); GameRegistry.registerBlock(blockEMContractor, ItemBlockContractor.class, blockEMContractor.getUnlocalizedName()); GameRegistry.registerBlock(blockBattery, blockBattery.getUnlocalizedName()); - GameRegistry.registerBlock(blockWire, ItemBlockWire.class, blockWire.getUnlocalizedName()); + + if (blockWire != null) + { + GameRegistry.registerBlock(blockWire, ItemBlockWire.class, blockWire.getUnlocalizedName()); + } // Tiles GameRegistry.registerTileEntity(TileEntityTesla.class, blockTesla.getUnlocalizedName()); GameRegistry.registerTileEntity(TileEntityMultimeter.class, blockMultimeter.getUnlocalizedName()); GameRegistry.registerTileEntity(TileEntityEMContractor.class, blockEMContractor.getUnlocalizedName()); GameRegistry.registerTileEntity(TileEntityBattery.class, blockBattery.getUnlocalizedName()); - GameRegistry.registerTileEntity(TileEntityWire.class, blockWire.getUnlocalizedName()); - GameRegistry.registerTileEntity(TileEntityTickWire.class, blockWire.getUnlocalizedName() + "2"); + + if (blockWire != null) + { + GameRegistry.registerTileEntity(TileEntityWire.class, blockWire.getUnlocalizedName()); + GameRegistry.registerTileEntity(TileEntityTickWire.class, blockWire.getUnlocalizedName() + "2"); + } ResonantInduction.proxy.registerRenderers(); + /** + * Set reference itemstacks + */ TabRI.ITEMSTACK = new ItemStack(blockBattery); - OreDictionary.registerOre("copperWire", new ItemStack(blockWire)); + + if (itemPartWire != null) + { + for (EnumWireMaterial material : EnumWireMaterial.values()) + { + material.setWire(itemPartWire); + } + } + else + { + for (EnumWireMaterial material : EnumWireMaterial.values()) + { + material.setWire(blockWire); + } + } // Basic Components + BasicRegistry.register("itemIngotCopper"); BasicRegistry.register("itemIngotSteel"); BasicRegistry.register("itemPlateSteel"); BasicRegistry.register("itemIngotBronze"); @@ -244,7 +280,7 @@ public class ResonantInduction metadata.autogenerated = false; new MultipartRI().init(); - + Compatibility.initiate(); } @@ -257,7 +293,7 @@ public class ResonantInduction ItemStack emptyCapacitor = new ItemStack(itemCapacitor); ((IItemElectric) itemCapacitor).setElectricity(emptyCapacitor, 0); - final ItemStack defaultWire = new ItemStack(blockWire, 1, EnumWireMaterial.IRON.ordinal()); + final ItemStack defaultWire = EnumWireMaterial.IRON.getWire(); /** Capacitor **/ GameRegistry.addRecipe(new ShapedOreRecipe(emptyCapacitor, "RRR", "RIR", "RRR", 'R', Item.redstone, 'I', UniversalRecipes.PRIMARY_METAL)); @@ -281,25 +317,26 @@ public class ResonantInduction GameRegistry.addRecipe(new ShapedOreRecipe(blockEMContractor, " I ", "GCG", "WWW", 'W', UniversalRecipes.PRIMARY_METAL, 'C', emptyCapacitor, 'G', UniversalRecipes.SECONDARY_METAL, 'I', UniversalRecipes.PRIMARY_METAL)); /** Wires **/ - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockWire, 3, EnumWireMaterial.COPPER.ordinal()), "MMM", 'M', "ingotCopper")); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockWire, 3, EnumWireMaterial.TIN.ordinal()), "MMM", 'M', "ingotTin")); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockWire, 3, EnumWireMaterial.IRON.ordinal()), "MMM", 'M', Item.ingotIron)); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockWire, 3, EnumWireMaterial.ALUMINUM.ordinal()), "MMM", 'M', "ingotAluminum")); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockWire, 3, EnumWireMaterial.SILVER.ordinal()), "MMM", 'M', "ingotSilver")); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockWire, 3, EnumWireMaterial.SUPERCONDUCTOR.ordinal()), "MMM", 'M', "ingotSuperconductor")); + GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.COPPER.getWire(3), "MMM", 'M', "ingotCopper")); + GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.TIN.getWire(3), "MMM", 'M', "ingotTin")); + GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.IRON.getWire(3), "MMM", 'M', Item.ingotIron)); + GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.ALUMINUM.getWire(3), "MMM", 'M', "ingotAluminum")); + GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.SILVER.getWire(), "MMM", 'M', "ingotSilver")); + GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.SUPERCONDUCTOR.getWire(3), "MMM", 'M', "ingotSuperconductor")); + GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.SUPERCONDUCTOR.getWire(3), "MMM", "MEM", "MMM", 'M', Item.ingotGold, "E", Item.eyeOfEnder)); /** Wire Compatiblity **/ if (Loader.isModLoaded("IC2")) { - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(blockWire, 1, EnumWireMaterial.COPPER.ordinal()), Items.getItem("copperCableItem"))); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(blockWire, 1, EnumWireMaterial.TIN.ordinal()), Items.getItem("tinCableItem"))); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(blockWire, 1, EnumWireMaterial.IRON.ordinal()), Items.getItem("ironCableItem"))); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(blockWire, 2, EnumWireMaterial.SUPERCONDUCTOR.ordinal()), Items.getItem("glassFiberCableItem"))); + GameRegistry.addRecipe(new ShapelessOreRecipe(EnumWireMaterial.COPPER.getWire(), Items.getItem("copperCableItem"))); + GameRegistry.addRecipe(new ShapelessOreRecipe(EnumWireMaterial.TIN.getWire(), Items.getItem("tinCableItem"))); + GameRegistry.addRecipe(new ShapelessOreRecipe(EnumWireMaterial.IRON.getWire(), Items.getItem("ironCableItem"))); + GameRegistry.addRecipe(new ShapelessOreRecipe(EnumWireMaterial.SUPERCONDUCTOR.getWire(), Items.getItem("glassFiberCableItem"))); } if (Loader.isModLoaded("Mekanism")) { - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(blockWire, 1, EnumWireMaterial.COPPER.ordinal()), "universalCable")); + GameRegistry.addRecipe(new ShapelessOreRecipe(EnumWireMaterial.COPPER.getWire(), "universalCable")); } /** Inject new furnace tile class */ diff --git a/src/resonantinduction/TileEntityAdvancedFurnace.java b/src/resonantinduction/TileEntityAdvancedFurnace.java index 0315b2664..a4c875263 100644 --- a/src/resonantinduction/TileEntityAdvancedFurnace.java +++ b/src/resonantinduction/TileEntityAdvancedFurnace.java @@ -10,9 +10,10 @@ import net.minecraft.tileentity.TileEntityFurnace; */ public class TileEntityAdvancedFurnace extends TileEntityFurnace { - public void updateEntity() - { - super.updateEntity(); - System.out.println("WOR"); - } + @Override + public void updateEntity() + { + super.updateEntity(); + System.out.println("WOR"); + } } diff --git a/src/resonantinduction/battery/TileEntityBattery.java b/src/resonantinduction/battery/TileEntityBattery.java index 79c86e23d..08567dece 100644 --- a/src/resonantinduction/battery/TileEntityBattery.java +++ b/src/resonantinduction/battery/TileEntityBattery.java @@ -123,7 +123,7 @@ public class TileEntityBattery extends TileEntityUniversalElectrical implements { PacketDispatcher.sendPacketToPlayer(PacketHandler.getTileEntityPacket(this, this.getNetworkedData(new ArrayList()).toArray()), (Player) player); } - + this.produce(); } } diff --git a/src/resonantinduction/render/BlockRenderingHandler.java b/src/resonantinduction/render/BlockRenderingHandler.java index b3a3c4b65..800332055 100644 --- a/src/resonantinduction/render/BlockRenderingHandler.java +++ b/src/resonantinduction/render/BlockRenderingHandler.java @@ -75,11 +75,11 @@ public class BlockRenderingHandler implements ISimpleBlockRenderingHandler { if (block instanceof BlockBattery) { -// FMLClientHandler.instance().getClient().renderEngine.bindTexture(RenderBattery.TEXTURE); - + // FMLClientHandler.instance().getClient().renderEngine.bindTexture(RenderBattery.TEXTURE); + return true; } - + return false; } diff --git a/src/resonantinduction/render/InvertX.java b/src/resonantinduction/render/InvertX.java index 279f3a433..d5297bbbd 100644 --- a/src/resonantinduction/render/InvertX.java +++ b/src/resonantinduction/render/InvertX.java @@ -5,22 +5,22 @@ import codechicken.lib.vec.Transformation; import codechicken.lib.vec.VariableTransformation; import codechicken.lib.vec.Vector3; -public class InvertX extends VariableTransformation { - public InvertX() { - super(new Matrix4( - -1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1)); - } +public class InvertX extends VariableTransformation +{ + public InvertX() + { + super(new Matrix4(-1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)); + } - @Override - public void apply(Vector3 vec) { - this.mat.apply(vec); - } + @Override + public void apply(Vector3 vec) + { + this.mat.apply(vec); + } - @Override - public Transformation inverse() { - return this; - } + @Override + public Transformation inverse() + { + return this; + } } \ No newline at end of file diff --git a/src/resonantinduction/render/RenderPartWire.java b/src/resonantinduction/render/RenderPartWire.java index d9d0a4ade..8e154643c 100644 --- a/src/resonantinduction/render/RenderPartWire.java +++ b/src/resonantinduction/render/RenderPartWire.java @@ -11,6 +11,10 @@ import net.minecraftforge.common.ForgeDirection; import org.lwjgl.BufferUtils; import org.lwjgl.opengl.GL11; +import resonantinduction.ResonantInduction; +import resonantinduction.wire.multipart.PartConductor; +import resonantinduction.wire.multipart.PartWire; +import universalelectricity.core.vector.Vector3; import codechicken.lib.colour.Colour; import codechicken.lib.colour.ColourRGBA; import codechicken.lib.lighting.LightModel; @@ -21,9 +25,6 @@ import codechicken.lib.render.IconTransformation; import codechicken.lib.render.TextureUtils; import codechicken.lib.vec.Rotation; import codechicken.lib.vec.Translation; -import resonantinduction.ResonantInduction; -import resonantinduction.wire.multipart.PartWire; -import universalelectricity.core.vector.Vector3; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -46,46 +47,48 @@ public class RenderPartWire public static FloatBuffer zero = BufferUtils.createFloatBuffer(4); public static FloatBuffer defaultAmbient = BufferUtils.createFloatBuffer(4); - static - { - models = CCModel.parseObjModels(new ResourceLocation("resonantinduction", "models/wire.obj"), 7, new InvertX()); - for (CCModel c : models.values()) { - c.apply(new Translation(.5, 0, .5)); - c.computeLighting(LightModel.standardLightModel); - c.shrinkUVs(0.0005); - } - - shinyModels = CCModel.parseObjModels(new ResourceLocation("resonantinduction", "models/wireShine.obj"), 7, new InvertX()); - for (CCModel c : shinyModels.values()) { - c.apply(new Translation(.5, 0, .5)); - c.computeLighting(LightModel.standardLightModel); - c.shrinkUVs(0.0005); - } - - loadBuffer(location, 0,0,0,1); - loadBuffer(specular, 1,1,1,1); - loadBuffer(zero, 0,0,0,0); - loadBuffer(defaultAmbient, 0.4F,0.4F,0.4F,1); - + static + { + models = CCModel.parseObjModels(new ResourceLocation("resonantinduction", "models/wire.obj"), 7, new InvertX()); + for (CCModel c : models.values()) + { + c.apply(new Translation(.5, 0, .5)); + c.computeLighting(LightModel.standardLightModel); + c.shrinkUVs(0.0005); + } + + shinyModels = CCModel.parseObjModels(new ResourceLocation("resonantinduction", "models/wireShine.obj"), 7, new InvertX()); + for (CCModel c : shinyModels.values()) + { + c.apply(new Translation(.5, 0, .5)); + c.computeLighting(LightModel.standardLightModel); + c.shrinkUVs(0.0005); + } + + loadBuffer(location, 0, 0, 0, 1); + loadBuffer(specular, 1, 1, 1, 1); + loadBuffer(zero, 0, 0, 0, 0); + loadBuffer(defaultAmbient, 0.4F, 0.4F, 0.4F, 1); + GL11.glLightModel(GL11.GL_LIGHT_MODEL_AMBIENT, zero); - + GL11.glLight(GL11.GL_LIGHT3, GL11.GL_SPECULAR, specular); - + GL11.glMaterial(GL11.GL_FRONT, GL11.GL_SPECULAR, specular); GL11.glMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT, zero); GL11.glMaterial(GL11.GL_FRONT, GL11.GL_DIFFUSE, zero); GL11.glMaterialf(GL11.GL_FRONT, GL11.GL_SHININESS, 128f); - } + } - public static void loadBuffer(FloatBuffer buffer, float... src) - { - buffer.clear(); - buffer.put(src); - buffer.flip(); - } + public static void loadBuffer(FloatBuffer buffer, float... src) + { + buffer.clear(); + buffer.put(src); + buffer.flip(); + } - public void renderShine(PartWire wire, double x, double y, double z, float f) + public void renderShine(PartWire wire, double x, double y, double z, float f) { if (wire != null) { @@ -97,7 +100,7 @@ public class RenderPartWire GL11.glDisable(GL11.GL_LIGHT1); GL11.glEnable(GL11.GL_LIGHT3); GL11.glLight(GL11.GL_LIGHT3, GL11.GL_POSITION, location); - + GL11.glTranslatef((float) x, (float) y, (float) z); GL11.glLightModel(GL11.GL_LIGHT_MODEL_AMBIENT, zero); @@ -109,7 +112,7 @@ public class RenderPartWire byte renderSides = wire.getAllCurrentConnections(); for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { - if (PartWire.connectionMapContainsSide(renderSides, side)) + if (PartConductor.connectionMapContainsSide(renderSides, side)) renderSideShine(side, wire); } CCRenderState.draw(); @@ -119,21 +122,21 @@ public class RenderPartWire GL11.glEnable(GL11.GL_LIGHT1); GL11.glDisable(GL11.GL_LIGHT3); - GL11.glLightModel(GL11.GL_LIGHT_MODEL_AMBIENT, defaultAmbient); + GL11.glLightModel(GL11.GL_LIGHT_MODEL_AMBIENT, defaultAmbient); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GL11.glPopMatrix(); } } - + public static void registerIcons(IconRegister iconReg) { wireIcon = iconReg.registerIcon("resonantinduction:models/wire"); insulationIcon = iconReg.registerIcon("resonantinduction:models/insulation" + (ResonantInduction.LO_FI_INSULATION ? "tiny" : "")); breakIcon = iconReg.registerIcon("resonantinduction:wire"); } - + public void renderStatic(PartWire wire) { TextureUtils.bindAtlas(0); @@ -144,11 +147,11 @@ public class RenderPartWire byte renderSides = wire.getAllCurrentConnections(); for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { - if (PartWire.connectionMapContainsSide(renderSides, side)) - renderSide(side, wire); + if (PartConductor.connectionMapContainsSide(renderSides, side)) + renderSide(side, wire); } } - + public void renderSide(ForgeDirection side, PartWire wire) { String name = side.name().toLowerCase(); @@ -158,12 +161,12 @@ public class RenderPartWire renderPart(wireIcon, models.get(name), wire.x(), wire.y(), wire.z(), colour); if (wire.isInsulated()) { - Vector3 vecColour = ResonantInduction.DYE_COLORS[wire.dyeID]; + Vector3 vecColour = ResonantInduction.DYE_COLORS[wire.dyeID]; Colour insulationColour = new ColourRGBA(vecColour.x, vecColour.y, vecColour.z, 1); - renderPart(insulationIcon, models.get(name+"Insulation"), wire.x(), wire.y(), wire.z(), insulationColour); + renderPart(insulationIcon, models.get(name + "Insulation"), wire.x(), wire.y(), wire.z(), insulationColour); } } - + public void renderSideShine(ForgeDirection side, PartWire wire) { String name = side.name().toLowerCase(); @@ -171,14 +174,14 @@ public class RenderPartWire Vector3 materialColour = wire.getMaterial().color; renderPartShine(shinyModels.get(name)); } - - public void renderPart(Icon icon, CCModel cc, double x, double y, double z, Colour colour) { - cc.render(0, cc.verts.length, - Rotation.sideOrientation(0, Rotation.rotationTo(0, 2)).at(codechicken.lib.vec.Vector3.center) - .with(new Translation(x, y, z)), new IconTransformation(icon), new ColourMultiplier(colour)); - } - public void renderPartShine(CCModel cc) { - cc.render(null, 0, 0); - } + public void renderPart(Icon icon, CCModel cc, double x, double y, double z, Colour colour) + { + cc.render(0, cc.verts.length, Rotation.sideOrientation(0, Rotation.rotationTo(0, 2)).at(codechicken.lib.vec.Vector3.center).with(new Translation(x, y, z)), new IconTransformation(icon), new ColourMultiplier(colour)); + } + + public void renderPartShine(CCModel cc) + { + cc.render(null, 0, 0); + } } \ No newline at end of file diff --git a/src/resonantinduction/wire/EnumWireMaterial.java b/src/resonantinduction/wire/EnumWireMaterial.java index 861a04bdd..c13d11fc2 100644 --- a/src/resonantinduction/wire/EnumWireMaterial.java +++ b/src/resonantinduction/wire/EnumWireMaterial.java @@ -1,5 +1,9 @@ package resonantinduction.wire; +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; import universalelectricity.core.vector.Vector3; /** @@ -12,8 +16,7 @@ import universalelectricity.core.vector.Vector3; public enum EnumWireMaterial { - COPPER(12.5f, 3, 2, new Vector3(184, 115, 51)), - TIN(13, 2, 0.5f, new Vector3(132, 132, 130)), + COPPER(12.5f, 3, 2, new Vector3(184, 115, 51)), TIN(13, 2, 0.5f, new Vector3(132, 132, 130)), IRON(0.1f, 2, 4, new Vector3(97, 102, 105)), ALUMINUM(0.025f, 6, 0.15f, new Vector3(215, 205, 181)), SILVER(0.005f, 1, 2, new Vector3(192, 192, 192)), @@ -23,12 +26,44 @@ public enum EnumWireMaterial public final float damage; public final float maxAmps; public final Vector3 color; + private ItemStack wire; EnumWireMaterial(float resistance, float electrocutionDamage, float maxAmps, Vector3 color) { this.resistance = resistance; this.damage = electrocutionDamage; this.maxAmps = maxAmps; - this.color = color.scale(1D/255D); + this.color = color.scale(1D / 255D); + } + + public ItemStack getWire() + { + return this.getWire(1); + } + + public ItemStack getWire(int amount) + { + ItemStack returnStack = this.wire.copy(); + returnStack.stackSize = amount; + return returnStack; + } + + public void setWire(ItemStack item) + { + if (this.wire == null) + { + this.wire = item; + OreDictionary.registerOre(this.name().toLowerCase() + "Wire", this.wire); + } + } + + public void setWire(Item item) + { + this.setWire(new ItemStack(item, 1, this.ordinal())); + } + + public void setWire(Block block) + { + this.setWire(new ItemStack(block, 1, this.ordinal())); } } \ No newline at end of file diff --git a/src/resonantinduction/wire/IInsulation.java b/src/resonantinduction/wire/IInsulation.java index 51339ddff..09481a191 100644 --- a/src/resonantinduction/wire/IInsulation.java +++ b/src/resonantinduction/wire/IInsulation.java @@ -3,8 +3,10 @@ package resonantinduction.wire; public interface IInsulation { public boolean isInsulated(); + public void setInsulated(boolean insulated); - + public int getInsulationColor(); + public void setInsulationColor(int dyeID); } diff --git a/src/resonantinduction/wire/TileEntityWire.java b/src/resonantinduction/wire/TileEntityWire.java index 2a9bf94d5..a8ac0c1fe 100644 --- a/src/resonantinduction/wire/TileEntityWire.java +++ b/src/resonantinduction/wire/TileEntityWire.java @@ -40,7 +40,7 @@ public class TileEntityWire extends TileEntityUniversalConductor implements IPac if (connectTile instanceof IWireMaterial) { IWireMaterial wireTile = (IWireMaterial) connectTile; - + if (wireTile.getMaterial() != this.getMaterial()) { return false; @@ -75,7 +75,7 @@ public class TileEntityWire extends TileEntityUniversalConductor implements IPac if (tileEntity != null) { - if (/*tileEntity.getClass().isInstance(this) && */tileEntity instanceof INetworkProvider) + if (/* tileEntity.getClass().isInstance(this) && */tileEntity instanceof INetworkProvider) { this.getNetwork().merge(((INetworkProvider) tileEntity).getNetwork()); } @@ -99,6 +99,7 @@ public class TileEntityWire extends TileEntityUniversalConductor implements IPac return getMaterial().maxAmps; } + @Override public EnumWireMaterial getMaterial() { return EnumWireMaterial.values()[this.getTypeID()]; @@ -218,7 +219,7 @@ public class TileEntityWire extends TileEntityUniversalConductor implements IPac { if (insulated && !isInsulated()) setInsulated(); - + } @Override @@ -230,6 +231,6 @@ public class TileEntityWire extends TileEntityUniversalConductor implements IPac @Override public void setInsulationColor(int dyeID) { - setDye(dyeID); + setDye(dyeID); } } diff --git a/src/resonantinduction/wire/multipart/ItemPartWire.java b/src/resonantinduction/wire/multipart/ItemPartWire.java index fe4865e2b..c866f0398 100644 --- a/src/resonantinduction/wire/multipart/ItemPartWire.java +++ b/src/resonantinduction/wire/multipart/ItemPartWire.java @@ -2,12 +2,6 @@ package resonantinduction.wire.multipart; import java.util.List; -import resonantinduction.ResonantInduction; -import resonantinduction.TabRI; -import resonantinduction.render.RenderPartWire; -import resonantinduction.wire.EnumWireMaterial; -import universalelectricity.core.electricity.ElectricityDisplay; -import universalelectricity.core.electricity.ElectricityDisplay.ElectricUnit; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; @@ -15,6 +9,12 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.Icon; import net.minecraft.world.World; import net.minecraftforge.common.Configuration; +import resonantinduction.ResonantInduction; +import resonantinduction.TabRI; +import resonantinduction.render.RenderPartWire; +import resonantinduction.wire.EnumWireMaterial; +import universalelectricity.core.electricity.ElectricityDisplay; +import universalelectricity.core.electricity.ElectricityDisplay.ElectricUnit; import codechicken.lib.vec.BlockCoord; import codechicken.lib.vec.Vector3; import codechicken.multipart.JItemMultiPart; diff --git a/src/resonantinduction/wire/multipart/PartAdvanced.java b/src/resonantinduction/wire/multipart/PartAdvanced.java index 05c446bb2..d61052ff9 100644 --- a/src/resonantinduction/wire/multipart/PartAdvanced.java +++ b/src/resonantinduction/wire/multipart/PartAdvanced.java @@ -5,7 +5,7 @@ import codechicken.multipart.TMultiPart; import codechicken.multipart.handler.MultipartProxy; public abstract class PartAdvanced extends TMultiPart -{ +{ protected long ticks = 0; @Override @@ -23,11 +23,11 @@ public abstract class PartAdvanced extends TMultiPart this.ticks++; } - + @Override public void onAdded() { - world().notifyBlocksOfNeighborChange(x(), y(), z(), ((Block)MultipartProxy.block()).blockID); + world().notifyBlocksOfNeighborChange(x(), y(), z(), ((Block) MultipartProxy.block()).blockID); } /** diff --git a/src/resonantinduction/wire/multipart/PartConductor.java b/src/resonantinduction/wire/multipart/PartConductor.java index ada70fa12..e61c52ce7 100644 --- a/src/resonantinduction/wire/multipart/PartConductor.java +++ b/src/resonantinduction/wire/multipart/PartConductor.java @@ -1,10 +1,6 @@ package resonantinduction.wire.multipart; -import codechicken.multipart.TileMultipart; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.block.IConductor; import universalelectricity.core.block.IConnector; @@ -13,6 +9,7 @@ import universalelectricity.core.electricity.NetworkLoader; import universalelectricity.core.grid.IElectricityNetwork; import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.VectorHelper; +import codechicken.multipart.TileMultipart; public abstract class PartConductor extends PartAdvanced implements IConductor { @@ -21,7 +18,7 @@ public abstract class PartConductor extends PartAdvanced implements IConductor public TileEntity[] adjacentConnections = null; public byte currentWireConnections = 0x00; public byte currentAcceptorConnections = 0x00; - + public byte getAllCurrentConnections() { return (byte) (currentWireConnections | currentAcceptorConnections); @@ -32,7 +29,7 @@ public abstract class PartConductor extends PartAdvanced implements IConductor byte tester = (byte) (1 << side.ordinal()); return ((connections & tester) > 0); } - + @Override public void bind(TileMultipart t) { @@ -53,7 +50,7 @@ public abstract class PartConductor extends PartAdvanced implements IConductor { if (!this.world().isRemote && this.tile() instanceof IConductor) { - this.getNetwork().split((IConductor)this.tile()); + this.getNetwork().split((IConductor) this.tile()); } super.preRemove(); @@ -70,19 +67,19 @@ public abstract class PartConductor extends PartAdvanced implements IConductor { if (this.network == null && this.tile() instanceof IConductor) { - this.setNetwork(NetworkLoader.getNewNetwork((IConductor)this.tile())); + this.setNetwork(NetworkLoader.getNewNetwork((IConductor) this.tile())); } return this.network; } - + public boolean canConnectBothSides(TileEntity tile, ForgeDirection side) { boolean notPrevented = !connectionPrevented(tile, side); - + if (tile instanceof IConnector) { - notPrevented &= ((IConnector)tile).canConnect(side.getOpposite()); + notPrevented &= ((IConnector) tile).canConnect(side.getOpposite()); } return notPrevented; } @@ -95,9 +92,10 @@ public abstract class PartConductor extends PartAdvanced implements IConductor /** * Override if there are ways of preventing a connection + * * @param tile The TileEntity on the given side * @param side The side we're checking - * @return Whether we're preventing connections on given side or to given tileEntity + * @return Whether we're preventing connections on given side or to given tileEntity */ public boolean connectionPrevented(TileEntity tile, ForgeDirection side) { @@ -107,7 +105,7 @@ public abstract class PartConductor extends PartAdvanced implements IConductor public byte getPossibleWireConnections() { byte connections = 0x00; - + for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { TileEntity tileEntity = VectorHelper.getTileEntityFromSide(this.world(), new Vector3(tile()), side); @@ -116,11 +114,11 @@ public abstract class PartConductor extends PartAdvanced implements IConductor } return connections; } - + public byte getPossibleAcceptorConnections() { byte connections = 0x00; - + for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { TileEntity tileEntity = VectorHelper.getTileEntityFromSide(this.world(), new Vector3(tile()), side); @@ -129,7 +127,7 @@ public abstract class PartConductor extends PartAdvanced implements IConductor } return connections; } - + /** * Override if there are different kinds of acceptor possible */ @@ -146,16 +144,16 @@ public abstract class PartConductor extends PartAdvanced implements IConductor this.adjacentConnections = null; byte possibleWireConnections = getPossibleWireConnections(); byte possibleAcceptorConnections = getPossibleAcceptorConnections(); - + if (possibleWireConnections != currentWireConnections) { byte or = (byte) (possibleWireConnections | currentWireConnections); - if (or != possibleWireConnections) //Connections have been removed + if (or != possibleWireConnections) // Connections have been removed { this.getNetwork().split((IConductor) tile()); this.setNetwork(null); } - + for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { if (connectionMapContainsSide(possibleWireConnections, side)) @@ -169,20 +167,19 @@ public abstract class PartConductor extends PartAdvanced implements IConductor } } - currentWireConnections = possibleWireConnections; + currentWireConnections = possibleWireConnections; } - + currentAcceptorConnections = possibleAcceptorConnections; - this.getNetwork().refresh(); - this.sendDescUpdate(); + this.getNetwork().refresh(); + this.sendDescUpdate(); } tile().markRender(); } /** - * Should include connections that are in the current connection maps - * even if those connections aren't allowed any more. This is so that - * networks split correctly. + * Should include connections that are in the current connection maps even if those connections + * aren't allowed any more. This is so that networks split correctly. */ @Override public TileEntity[] getAdjacentConnections() @@ -190,12 +187,12 @@ public abstract class PartConductor extends PartAdvanced implements IConductor if (this.adjacentConnections == null) { this.adjacentConnections = new TileEntity[6]; - + for (byte i = 0; i < 6; i++) { ForgeDirection side = ForgeDirection.getOrientation(i); TileEntity tileEntity = VectorHelper.getTileEntityFromSide(this.world(), new Vector3(tile()), side); - + if (isCurrentlyConnected(side)) { adjacentConnections[i] = tileEntity; @@ -204,7 +201,7 @@ public abstract class PartConductor extends PartAdvanced implements IConductor } return this.adjacentConnections; } - + public boolean isCurrentlyConnected(ForgeDirection side) { return connectionMapContainsSide(this.getAllCurrentConnections(), side); @@ -220,21 +217,21 @@ public abstract class PartConductor extends PartAdvanced implements IConductor TileEntity connectTile = connectPos.getTileEntity(this.world()); return !connectionPrevented(connectTile, direction); } - + @Override public void onAdded() { super.onAdded(); refresh(); } - + @Override public void onChunkLoad() { super.onChunkLoad(); refresh(); } - + @Override public void onNeighborChanged() { diff --git a/src/resonantinduction/wire/multipart/PartUniversalConductor.java b/src/resonantinduction/wire/multipart/PartUniversalConductor.java index 0ff604470..327d3e459 100644 --- a/src/resonantinduction/wire/multipart/PartUniversalConductor.java +++ b/src/resonantinduction/wire/multipart/PartUniversalConductor.java @@ -1,24 +1,21 @@ package resonantinduction.wire.multipart; +import ic2.api.energy.event.EnergyTileLoadEvent; +import ic2.api.energy.event.EnergyTileUnloadEvent; +import ic2.api.energy.tile.IEnergySink; +import ic2.api.energy.tile.IEnergyTile; + import java.util.HashSet; import java.util.Set; -import universalelectricity.compatibility.Compatibility; -import universalelectricity.core.block.IConnector; -import universalelectricity.core.block.INetworkProvider; -import universalelectricity.core.electricity.ElectricityPack; -import universalelectricity.core.vector.Vector3; -import universalelectricity.core.vector.VectorHelper; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.MinecraftForge; -import ic2.api.energy.event.EnergyTileLoadEvent; -import ic2.api.energy.event.EnergyTileUnloadEvent; -import ic2.api.energy.tile.IEnergyAcceptor; -import ic2.api.energy.tile.IEnergyEmitter; -import ic2.api.energy.tile.IEnergySink; -import ic2.api.energy.tile.IEnergyTile; +import universalelectricity.compatibility.Compatibility; +import universalelectricity.core.electricity.ElectricityPack; +import universalelectricity.core.vector.Vector3; +import universalelectricity.core.vector.VectorHelper; import buildcraft.api.power.IPowerReceptor; import buildcraft.api.power.PowerHandler; import buildcraft.api.power.PowerHandler.PowerReceiver; @@ -37,7 +34,7 @@ public abstract class PartUniversalConductor extends PartConductor implements IE this.powerHandler.configure(0, this.buildcraftBuffer, this.buildcraftBuffer, this.buildcraftBuffer * 2); this.powerHandler.configurePowerPerdition(0, 0); } - + @Override public boolean isValidAcceptor(TileEntity tile) { @@ -48,14 +45,10 @@ public abstract class PartUniversalConductor extends PartConductor implements IE else if (Compatibility.isBuildcraftLoaded() && tile instanceof IPowerReceptor) { return true; - } + } return super.isValidAcceptor(tile); } - /* - * @Override public boolean canUpdate() { return !this.isAddedToEnergyNet; } - */ - @Override public void onWorldJoin() { @@ -108,9 +101,11 @@ public abstract class PartUniversalConductor extends PartConductor implements IE this.unloadTileIC2(); super.onChunkUnload(); } - + @Override - public void onRemoved() {} + public void onRemoved() + { + } @Override public void preRemove() @@ -197,7 +192,7 @@ public abstract class PartUniversalConductor extends PartConductor implements IE ElectricityPack pack = ElectricityPack.getFromWatts(workProvider.useEnergy(0, this.getNetwork().getRequest(tile()).getWatts() * Compatibility.TO_BC_RATIO, true) * Compatibility.BC3_RATIO, 120); this.getNetwork().produce(pack, ignoreTiles.toArray(new TileEntity[0])); } - + @Override public World getWorld() { diff --git a/src/resonantinduction/wire/multipart/PartWire.java b/src/resonantinduction/wire/multipart/PartWire.java index c33f5da90..84ae1766c 100644 --- a/src/resonantinduction/wire/multipart/PartWire.java +++ b/src/resonantinduction/wire/multipart/PartWire.java @@ -7,12 +7,6 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import resonantinduction.ResonantInduction; -import resonantinduction.render.RenderPartWire; -import resonantinduction.wire.EnumWireMaterial; -import resonantinduction.wire.IInsulatedMaterial; -import resonantinduction.wire.IInsulation; -import resonantinduction.wire.IWireMaterial; import net.minecraft.block.Block; import net.minecraft.block.BlockColored; import net.minecraft.client.particle.EffectRenderer; @@ -23,16 +17,16 @@ import net.minecraft.item.ItemShears; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityFurnace; import net.minecraft.util.Icon; import net.minecraft.util.MovingObjectPosition; import net.minecraftforge.common.ForgeDirection; - +import resonantinduction.ResonantInduction; +import resonantinduction.render.RenderPartWire; +import resonantinduction.wire.EnumWireMaterial; +import resonantinduction.wire.IInsulatedMaterial; +import resonantinduction.wire.IInsulation; +import resonantinduction.wire.IWireMaterial; import universalelectricity.compatibility.Compatibility; -import universalelectricity.core.block.IConductor; -import universalelectricity.core.block.INetworkProvider; -import universalelectricity.core.vector.Vector3; -import universalelectricity.core.vector.VectorHelper; import buildcraft.api.power.PowerHandler; import codechicken.lib.data.MCDataInput; import codechicken.lib.data.MCDataOutput; @@ -113,6 +107,7 @@ public class PartWire extends PartUniversalConductor implements TSlottedPart, JN return super.canConnect(direction); } + @Override public boolean connectionPrevented(TileEntity tile, ForgeDirection side) { if (tile instanceof IWireMaterial) @@ -134,6 +129,7 @@ public class PartWire extends PartUniversalConductor implements TSlottedPart, JN return (this.isBlockedOnSide(side) || tile instanceof IBlockableConnection && ((IBlockableConnection) tile).isBlockedOnSide(side.getOpposite())); } + @Override public byte getPossibleWireConnections() { if (this.world().isBlockIndirectlyGettingPowered(this.x(), this.y(), this.z())) @@ -143,6 +139,7 @@ public class PartWire extends PartUniversalConductor implements TSlottedPart, JN return super.getPossibleWireConnections(); } + @Override public byte getPossibleAcceptorConnections() { if (this.world().isBlockIndirectlyGettingPowered(this.x(), this.y(), this.z())) @@ -164,6 +161,7 @@ public class PartWire extends PartUniversalConductor implements TSlottedPart, JN return getMaterial().maxAmps; } + @Override public EnumWireMaterial getMaterial() { return material; @@ -314,7 +312,7 @@ public class PartWire extends PartUniversalConductor implements TSlottedPart, JN @Override public ItemStack pickItem(MovingObjectPosition hit) { - return new ItemStack(ResonantInduction.itemPartWire, 1, this.getTypeID()); + return EnumWireMaterial.values()[this.getTypeID()].getWire(); } @Override @@ -345,8 +343,6 @@ public class PartWire extends PartUniversalConductor implements TSlottedPart, JN return true; } } - if (!world().isRemote) - player.addChatMessage(getNetwork().toString()); return false; } @@ -395,7 +391,7 @@ public class PartWire extends PartUniversalConductor implements TSlottedPart, JN this.dyeID = DEFAULT_COLOR; this.refresh(); this.world().markBlockForUpdate(this.x(), this.y(), this.z()); - ((TileMultipart) this.tile()).notifyPartChange(this); + this.tile().notifyPartChange(this); } public void setInsulated(int dyeColour) @@ -404,7 +400,7 @@ public class PartWire extends PartUniversalConductor implements TSlottedPart, JN this.dyeID = dyeColour; this.refresh(); this.world().markBlockForUpdate(this.x(), this.y(), this.z()); - ((TileMultipart) this.tile()).notifyPartChange(this); + this.tile().notifyPartChange(this); } public void setInsulated() diff --git a/src/resonantinduction/wire/multipart/javatraits/TEnergySink.java b/src/resonantinduction/wire/multipart/javatraits/TEnergySink.java index ba5c023d3..af271b41f 100644 --- a/src/resonantinduction/wire/multipart/javatraits/TEnergySink.java +++ b/src/resonantinduction/wire/multipart/javatraits/TEnergySink.java @@ -1,11 +1,12 @@ package resonantinduction.wire.multipart.javatraits; -import java.util.Set; +import ic2.api.energy.tile.IEnergySink; + import java.util.HashSet; +import java.util.Set; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; -import ic2.api.energy.tile.IEnergySink; import codechicken.multipart.TMultiPart; import codechicken.multipart.TileMultipart; @@ -14,41 +15,40 @@ public class TEnergySink extends TileMultipart implements IEnergySink public Set ic2Sinks = new HashSet(); @Override - public void copyFrom(TileMultipart that) - { - super.copyFrom(that); - if(that instanceof TEnergySink) - ic2Sinks = ((TEnergySink)that).ic2Sinks; - } - - @Override - public void bindPart(TMultiPart part) - { - super.bindPart(part); - if(part instanceof IEnergySink) - ic2Sinks.add((IEnergySink)part); - } - - @Override - public void partRemoved(TMultiPart part, int p) - { - super.partRemoved(part, p); - if(part instanceof IEnergySink) - ic2Sinks.remove((IEnergySink)part); - } - - @Override - public void clearParts() - { - super.clearParts(); - ic2Sinks.clear(); - } - + public void copyFrom(TileMultipart that) + { + super.copyFrom(that); + if (that instanceof TEnergySink) + ic2Sinks = ((TEnergySink) that).ic2Sinks; + } + + @Override + public void bindPart(TMultiPart part) + { + super.bindPart(part); + if (part instanceof IEnergySink) + ic2Sinks.add((IEnergySink) part); + } + + @Override + public void partRemoved(TMultiPart part, int p) + { + super.partRemoved(part, p); + if (part instanceof IEnergySink) + ic2Sinks.remove(part); + } + + @Override + public void clearParts() + { + super.clearParts(); + ic2Sinks.clear(); + } @Override public boolean acceptsEnergyFrom(TileEntity emitter, ForgeDirection direction) { - for (IEnergySink sink: this.ic2Sinks) + for (IEnergySink sink : this.ic2Sinks) { if (sink.acceptsEnergyFrom(emitter, direction)) return true; @@ -61,7 +61,7 @@ public class TEnergySink extends TileMultipart implements IEnergySink { double demanded = 0; - for (IEnergySink sink: this.ic2Sinks) + for (IEnergySink sink : this.ic2Sinks) { demanded += sink.demandedEnergyUnits(); } @@ -71,7 +71,7 @@ public class TEnergySink extends TileMultipart implements IEnergySink @Override public double injectEnergyUnits(ForgeDirection directionFrom, double amount) { - for (IEnergySink sink: this.ic2Sinks) + for (IEnergySink sink : this.ic2Sinks) { amount = sink.injectEnergyUnits(directionFrom, Math.min(amount, sink.demandedEnergyUnits())); } @@ -82,7 +82,7 @@ public class TEnergySink extends TileMultipart implements IEnergySink public int getMaxSafeInput() { int safe = 0; - for (IEnergySink sink: this.ic2Sinks) + for (IEnergySink sink : this.ic2Sinks) { safe += sink.getMaxSafeInput(); }