From d1e1f47441eb7d493f694465567a588d0be7b11e Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 11 Aug 2014 05:54:28 -0400 Subject: [PATCH] Worked on transformer errors --- .../atomic/items/ItemCell.java | 3 +- .../electrical/Electrical.scala | 4 +- .../electrical/MultipartElectrical.java | 4 +- .../electrical/levitator/PartLevitator.java | 11 +- .../transformer/ElectricTransformerNode.scala | 70 +++++++ ...rmer.java => ItemElectricTransformer.java} | 4 +- .../transformer/PartElectricTransformer.scala | 120 +++++++++++ .../transformer/PartTransformer.java | 195 ------------------ .../transformer/RenderTransformer.java | 2 +- .../transformer/TransformerNode.java | 15 -- 10 files changed, 205 insertions(+), 223 deletions(-) create mode 100644 src/main/scala/resonantinduction/electrical/transformer/ElectricTransformerNode.scala rename src/main/scala/resonantinduction/electrical/transformer/{ItemTransformer.java => ItemElectricTransformer.java} (82%) create mode 100644 src/main/scala/resonantinduction/electrical/transformer/PartElectricTransformer.scala delete mode 100644 src/main/scala/resonantinduction/electrical/transformer/PartTransformer.java delete mode 100644 src/main/scala/resonantinduction/electrical/transformer/TransformerNode.java diff --git a/src/main/scala/resonantinduction/atomic/items/ItemCell.java b/src/main/scala/resonantinduction/atomic/items/ItemCell.java index 7cc7139ed..f6bee6450 100644 --- a/src/main/scala/resonantinduction/atomic/items/ItemCell.java +++ b/src/main/scala/resonantinduction/atomic/items/ItemCell.java @@ -7,12 +7,13 @@ import cpw.mods.fml.relauncher.Side; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.item.ItemStack; import resonant.lib.utility.LanguageUtility; +import resonantinduction.atomic.AtomicContent; public class ItemCell extends ItemTooltip { public ItemCell() { - setContainerItem(Atomic.itemCell); + setContainerItem(AtomicContent.itemCell()); } @SideOnly(Side.CLIENT) diff --git a/src/main/scala/resonantinduction/electrical/Electrical.scala b/src/main/scala/resonantinduction/electrical/Electrical.scala index c03680cfb..f60b210f5 100644 --- a/src/main/scala/resonantinduction/electrical/Electrical.scala +++ b/src/main/scala/resonantinduction/electrical/Electrical.scala @@ -16,7 +16,7 @@ import resonantinduction.electrical.generator.{TileMotor, TileSolarPanel, TileTh import resonantinduction.electrical.levitator.ItemLevitator import resonantinduction.electrical.multimeter.ItemMultimeter import resonantinduction.electrical.tesla.TileTesla -import resonantinduction.electrical.transformer.ItemTransformer +import resonantinduction.electrical.transformer.ItemElectricTransformer import resonantinduction.electrical.wire.{EnumWireMaterial, ItemWire} /** Resonant Induction Electrical Module @@ -40,7 +40,7 @@ object Electrical { Settings.config.load ElectricalContent.itemWire = Electrical.contentRegistry.newItem(classOf[ItemWire]) ElectricalContent.itemMultimeter = Electrical.contentRegistry.newItem(classOf[ItemMultimeter]) - ElectricalContent.itemTransformer = Electrical.contentRegistry.newItem(classOf[ItemTransformer]) + ElectricalContent.itemTransformer = Electrical.contentRegistry.newItem(classOf[ItemElectricTransformer]) ElectricalContent.blockTesla = Electrical.contentRegistry.newBlock(classOf[TileTesla]) ElectricalContent.blockBattery = Electrical.contentRegistry.newBlock(classOf[BlockBattery], classOf[ItemBlockBattery], classOf[TileBattery]) ElectricalContent.itemLevitator = Electrical.contentRegistry.newItem(classOf[ItemLevitator]) diff --git a/src/main/scala/resonantinduction/electrical/MultipartElectrical.java b/src/main/scala/resonantinduction/electrical/MultipartElectrical.java index d5d84b1e9..c8f913138 100644 --- a/src/main/scala/resonantinduction/electrical/MultipartElectrical.java +++ b/src/main/scala/resonantinduction/electrical/MultipartElectrical.java @@ -4,7 +4,7 @@ import resonantinduction.electrical.charger.PartCharger; import resonantinduction.electrical.itemrailing.PartRailing; import resonantinduction.electrical.levitator.PartLevitator; import resonantinduction.electrical.multimeter.PartMultimeter; -import resonantinduction.electrical.transformer.PartTransformer; +import resonantinduction.electrical.transformer.PartElectricTransformer; import resonantinduction.electrical.wire.flat.PartFlatSwitchWire; import resonantinduction.electrical.wire.flat.PartFlatWire; import resonantinduction.electrical.wire.framed.PartFramedSwitchWire; @@ -45,7 +45,7 @@ public class MultipartElectrical implements IPartFactory else if (name.equals("resonant_induction_multimeter")) return new PartMultimeter(); else if (name.equals("resonant_induction_transformer")) - return new PartTransformer(); + return new PartElectricTransformer(); else if (name.equals("resonant_induction_charger")) return new PartCharger(); else if (name.equals("resonant_induction_levitator")) diff --git a/src/main/scala/resonantinduction/electrical/levitator/PartLevitator.java b/src/main/scala/resonantinduction/electrical/levitator/PartLevitator.java index baa9a7ca4..2c9626be1 100644 --- a/src/main/scala/resonantinduction/electrical/levitator/PartLevitator.java +++ b/src/main/scala/resonantinduction/electrical/levitator/PartLevitator.java @@ -31,6 +31,7 @@ import resonantinduction.core.prefab.part.MultipartUtility; import resonantinduction.core.Settings; import resonantinduction.core.prefab.part.PartFace; import resonantinduction.electrical.Electrical; +import resonantinduction.electrical.ElectricalContent; import resonantinduction.electrical.tesla.TileTesla; import universalelectricity.core.transform.vector.Vector3; import codechicken.lib.data.MCDataInput; @@ -271,8 +272,8 @@ public class PartLevitator extends PartFace */ if (renderBeam) { - Electrical.proxy.renderElectricShock(world(), getBeamSpawnPosition(), getPosition().add(0.5), EnumColor.DYES[dyeID].toColor(), world().rand.nextFloat() > 0.9); - Electrical.proxy.renderElectricShock(world(), getLink().getPosition().add(0.5), getLink().getBeamSpawnPosition(), EnumColor.DYES[dyeID].toColor(), world().rand.nextFloat() > 0.9); + Electrical.proxy().renderElectricShock(world(), getBeamSpawnPosition(), getPosition().add(0.5), EnumColor.DYES[dyeID].toColor(), world().rand.nextFloat() > 0.9); + Electrical.proxy().renderElectricShock(world(), getLink().getPosition().add(0.5), getLink().getBeamSpawnPosition(), EnumColor.DYES[dyeID].toColor(), world().rand.nextFloat() > 0.9); } for (int i = 0; i < results.size(); i++) @@ -290,7 +291,7 @@ public class PartLevitator extends PartFace if (renderBeam) { - Electrical.proxy.renderElectricShock(world(), prevResult.clone().add(0.5), result.clone().add(0.5), EnumColor.DYES[dyeID].toColor(), world().rand.nextFloat() > 0.9); + Electrical.proxy().renderElectricShock(world(), prevResult.clone().add(0.5), result.clone().add(0.5), EnumColor.DYES[dyeID].toColor(), world().rand.nextFloat() > 0.9); } AxisAlignedBB bounds = AxisAlignedBB.getBoundingBox(result.x(), result.y(), result.z(), result.x() + 1, result.y() + 1, result.z() + 1); @@ -328,7 +329,7 @@ public class PartLevitator extends PartFace if (ticks % renderPeriod == 0) { - Electrical.proxy.renderElectricShock(world(), getBeamSpawnPosition(), new Vector3(operationBounds.maxX - 0.5 - placementSide.offsetX / 3f, operationBounds.maxY - 0.5 - placementSide.offsetY / 3f, operationBounds.maxZ - 0.5 - placementSide.offsetZ / 3f), EnumColor.DYES[dyeID].toColor(), world().rand.nextFloat() > 0.9); + Electrical.proxy().renderElectricShock(world(), getBeamSpawnPosition(), new Vector3(operationBounds.maxX - 0.5 - placementSide.offsetX / 3f, operationBounds.maxY - 0.5 - placementSide.offsetY / 3f, operationBounds.maxZ - 0.5 - placementSide.offsetZ / 3f), EnumColor.DYES[dyeID].toColor(), world().rand.nextFloat() > 0.9); } } } @@ -669,7 +670,7 @@ public class PartLevitator extends PartFace @Override protected ItemStack getItem() { - return new ItemStack(Electrical.itemLevitator); + return new ItemStack(ElectricalContent.itemLevitator()); } @Override diff --git a/src/main/scala/resonantinduction/electrical/transformer/ElectricTransformerNode.scala b/src/main/scala/resonantinduction/electrical/transformer/ElectricTransformerNode.scala new file mode 100644 index 000000000..789d61a14 --- /dev/null +++ b/src/main/scala/resonantinduction/electrical/transformer/ElectricTransformerNode.scala @@ -0,0 +1,70 @@ +package resonantinduction.electrical.transformer + +import net.minecraft.tileentity.TileEntity +import net.minecraftforge.common.util.ForgeDirection +import universalelectricity.api.core.grid.INodeProvider +import universalelectricity.api.core.grid.electric.IEnergyNode +import universalelectricity.core.grid.node.ElectricNode +import universalelectricity.core.transform.vector.VectorWorld + +/** + * Created by robert on 8/11/2014. + */ +class ElectricTransformerNode(parent: INodeProvider) extends ElectricNode(parent: INodeProvider) +{ + var connectionDirection : ForgeDirection = ForgeDirection.NORTH + var input : Boolean = true; + var otherNode : ElectricTransformerNode = null + var step : Int = 2 + + //Default constructor + setResistance(0) + + def this(parent: INodeProvider, side: ForgeDirection, in : Boolean) = + { + this(parent) + connectionDirection = side + input = in + } + + override def getVoltage: Double = + { + if(!input) + { + return otherNode.getVoltage * step + } + return voltage + } + + override def canConnect(from: ForgeDirection, source: AnyRef): Boolean = + { + return source.isInstanceOf[INodeProvider] && from == connectionDirection + } + + override def addEnergy(wattage: Double, doAdd: Boolean): Double = + { + if(input) + { + return otherNode.sendEnergy(wattage, doAdd) + } + return 0 + } + + def sendEnergy(wattage: Double, doAdd: Boolean): Double = + { + val tile : TileEntity = new VectorWorld(parent.asInstanceOf[TileEntity]).add(connectionDirection).getTileEntity + if(tile.isInstanceOf[INodeProvider] && tile.asInstanceOf[INodeProvider].getNode(Class[IEnergyNode], connectionDirection.getOpposite).isInstanceOf[IEnergyNode]) + { + val node :IEnergyNode = tile.asInstanceOf[INodeProvider].getNode(Class[IEnergyNode], connectionDirection.getOpposite).asInstanceOf[IEnergyNode] + return node.addEnergy(wattage, doAdd) + } + + return 0 + } + + + override def removeEnergy(wattage: Double, doRemove: Boolean) : Double = + { + return 0 + } +} diff --git a/src/main/scala/resonantinduction/electrical/transformer/ItemTransformer.java b/src/main/scala/resonantinduction/electrical/transformer/ItemElectricTransformer.java similarity index 82% rename from src/main/scala/resonantinduction/electrical/transformer/ItemTransformer.java rename to src/main/scala/resonantinduction/electrical/transformer/ItemElectricTransformer.java index ca7877c01..eb390d402 100644 --- a/src/main/scala/resonantinduction/electrical/transformer/ItemTransformer.java +++ b/src/main/scala/resonantinduction/electrical/transformer/ItemElectricTransformer.java @@ -12,13 +12,13 @@ import codechicken.multipart.JItemMultiPart; import codechicken.multipart.MultiPartRegistry; import codechicken.multipart.TMultiPart; -public class ItemTransformer extends JItemMultiPart implements IHighlight +public class ItemElectricTransformer extends JItemMultiPart implements IHighlight { @Override public TMultiPart newPart(ItemStack itemStack, EntityPlayer player, World world, BlockCoord pos, int side, Vector3 hit) { side = FacePlacementGrid$.MODULE$.getHitSlot(hit, side); - PartTransformer part = (PartTransformer) MultiPartRegistry.createPart("resonant_induction_transformer", false); + PartElectricTransformer part = (PartElectricTransformer) MultiPartRegistry.createPart("resonant_induction_transformer", false); if (part != null) { diff --git a/src/main/scala/resonantinduction/electrical/transformer/PartElectricTransformer.scala b/src/main/scala/resonantinduction/electrical/transformer/PartElectricTransformer.scala new file mode 100644 index 000000000..e3e982ea2 --- /dev/null +++ b/src/main/scala/resonantinduction/electrical/transformer/PartElectricTransformer.scala @@ -0,0 +1,120 @@ +package resonantinduction.electrical.transformer + +import codechicken.lib.data.{MCDataInput, MCDataOutput} +import codechicken.lib.vec.Vector3 +import cpw.mods.fml.relauncher.{Side, SideOnly} +import net.minecraft.entity.player.EntityPlayer +import net.minecraft.item.ItemStack +import net.minecraft.nbt.NBTTagCompound +import net.minecraft.util.{ChatComponentText, MovingObjectPosition} +import net.minecraftforge.common.util.ForgeDirection +import resonant.lib.utility.WrenchUtility +import resonantinduction.core.prefab.part.PartFace +import resonantinduction.electrical.ElectricalContent +import universalelectricity.api.core.grid.{INode, INodeProvider} + +/** + * TODO: We can't use face parts, need to use thicker ones. Also, transformer is currently NO-OP + * + * @author Calclavia + * + */ +class PartElectricTransformer extends PartFace with INodeProvider +{ + /** Step the voltage up */ + var stepUp = true + /** Amount to mulitply the step by (up x2. down /2) */ + var multiplier: Byte = 2 + + var inputNode: ElectricTransformerNode = null + var outputNode: ElectricTransformerNode = null + + override def preparePlacement(side: Int, facing: Int) + { + super.preparePlacement(side, facing) + outputNode = new ElectricTransformerNode(this, getAbsoluteFacing.getOpposite, false) + inputNode = new ElectricTransformerNode(this, getAbsoluteFacing, true) + outputNode.otherNode = inputNode + inputNode.otherNode = outputNode + } + + override def readDesc(packet: MCDataInput) { + super.readDesc(packet) + multiplier = packet.readByte + } + + override def writeDesc(packet: MCDataOutput) { + super.writeDesc(packet) + packet.writeByte(multiplier) + } + + override def doesTick: Boolean = { + return false + } + + protected def getItem: ItemStack = { + return new ItemStack(ElectricalContent.itemTransformer) + } + + @SideOnly(Side.CLIENT) override def renderDynamic(pos: Vector3, frame: Float, pass: Int) { + if (pass == 0) { + RenderTransformer.INSTANCE.render(this, pos.x, pos.y, pos.z) + } + } + + override def load(nbt: NBTTagCompound) { + super.load(nbt) + stepUp = nbt.getBoolean("stepUp") + multiplier = nbt.getByte("multiplier") + } + + override def save(nbt: NBTTagCompound) { + super.save(nbt) + nbt.setBoolean("stepUp", stepUp) + nbt.setByte("multiplier", multiplier) + } + + def getType: String = { + return "resonant_induction_transformer" + } + + override def activate(player: EntityPlayer, hit: MovingObjectPosition, item: ItemStack): Boolean = { + if (WrenchUtility.isUsableWrench(player, player.inventory.getCurrentItem, x, y, z)) + { + if (!this.world.isRemote) + { + if (player.isSneaking) + { + multiplier = ((multiplier + 1) % 3).asInstanceOf[Byte] + }else + { + facing = ((facing + 1) % 4).asInstanceOf[Byte] + } + WrenchUtility.damageWrench(player, player.inventory.getCurrentItem, x, y, z) + sendDescUpdate + tile.notifyPartChange(this) + if(stepUp) + outputNode.step = multiplier + else + outputNode.step = 1 / multiplier + } + return true + } + stepUp = !stepUp + if (!world.isRemote) player.addChatMessage(new ChatComponentText("Transformer set to step " + (if (stepUp) "up" else "down") + ".")) + return true + } + + override def getNode(nodeType: Class[_ <: INode], from: ForgeDirection): INode = + { + if(from == getAbsoluteFacing) + { + + }else if(from == getAbsoluteFacing.getOpposite) + { + + } + + return null; + } +} \ No newline at end of file diff --git a/src/main/scala/resonantinduction/electrical/transformer/PartTransformer.java b/src/main/scala/resonantinduction/electrical/transformer/PartTransformer.java deleted file mode 100644 index e0e7be79e..000000000 --- a/src/main/scala/resonantinduction/electrical/transformer/PartTransformer.java +++ /dev/null @@ -1,195 +0,0 @@ -package resonantinduction.electrical.transformer; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.MovingObjectPosition; -import net.minecraftforge.common.util.ForgeDirection; -import resonant.lib.utility.WrenchUtility; -import resonantinduction.core.prefab.part.PartFace; -import resonantinduction.electrical.Electrical; -import codechicken.lib.data.MCDataInput; -import codechicken.lib.data.MCDataOutput; -import codechicken.lib.vec.Vector3; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import universalelectricity.api.UniversalClass; -import universalelectricity.api.core.grid.INode; -import universalelectricity.api.core.grid.INodeProvider; -import universalelectricity.api.core.grid.electric.IElectricNode; -import universalelectricity.core.UniversalElectricity; -import universalelectricity.core.grid.node.ElectricNode; - -/** - * TODO: We can't use face parts, need to use thicker ones. Also, transformer is currently NO-OP - * - * @author Calclavia - * - */ -@UniversalClass -public class PartTransformer extends PartFace implements INodeProvider -{ - - /** Step the voltage up */ - private boolean stepUp = true; - - /** Amount to mulitply the step by (up x2. down /2) */ - public byte multiplier = 2; - - protected ElectricNode node; - - @Override - public void preparePlacement(int side, int facing) - { - this.placementSide = ForgeDirection.getOrientation(side); - this.facing = (byte) (facing - 2); - } - - @Override - public void readDesc(MCDataInput packet) - { - super.readDesc(packet); - multiplier = packet.readByte(); - } - - @Override - public void writeDesc(MCDataOutput packet) - { - super.writeDesc(packet); - packet.writeByte(multiplier); - } - - public boolean stepUp() - { - return this.stepUp; - } - - @Override - public boolean doesTick() - { - return false; - } - - @Override - protected ItemStack getItem() - { - return new ItemStack(Electrical.itemTransformer); - } - - @Override - @SideOnly(Side.CLIENT) - public void renderDynamic(Vector3 pos, float frame, int pass) - { - if (pass == 0) - { - RenderTransformer.INSTANCE.render(this, pos.x, pos.y, pos.z); - } - } - - @Override - public void load(NBTTagCompound nbt) - { - super.load(nbt); - stepUp = nbt.getBoolean("stepUp"); - multiplier = nbt.getByte("multiplier"); - } - - @Override - public void save(NBTTagCompound nbt) - { - super.save(nbt); - nbt.setBoolean("stepUp", stepUp); - nbt.setByte("multiplier", multiplier); - } - - @Override - public String getType() - { - return "resonant_induction_transformer"; - } - - @Override - public boolean canConnect(ForgeDirection direction, Object obj) - { - return obj instanceof IEnergyInterface && (direction == getAbsoluteFacing() || direction == getAbsoluteFacing().getOpposite()); - } - - @Override - public long getVoltageOutput(ForgeDirection from) - { - if (from == getAbsoluteFacing().getOpposite()) - { - TileEntity inputTile = VectorHelper.getTileEntityFromSide(this.world(), new universalelectricity.core.transform.vector.Vector3(x(), y(), z()), getAbsoluteFacing()); - - long inputVoltage = UniversalElectricity.DEFAULT_VOLTAGE; - - if (inputTile instanceof IConductor) - { - IConductor conductor = (IConductor) ((IConductor) inputTile).getInstance(placementSide); - - if (conductor != null) - if (conductor.getNetwork() instanceof IElectricalNetwork) - inputVoltage = ((IElectricalNetwork) conductor.getNetwork()).getVoltage(); - } - else if (inputTile instanceof IVoltageOutput) - { - inputVoltage = ((IVoltageOutput) inputTile).getVoltageOutput(from); - } - - if (inputVoltage <= 0) - inputVoltage = 240; - - if (this.stepUp()) - return inputVoltage * (this.multiplier + 2); - else - return inputVoltage / (this.multiplier + 2); - } - - return 0; - } - - @Override - public boolean activate(EntityPlayer player, MovingObjectPosition hit, ItemStack item) - { - if (WrenchUtility.isUsableWrench(player, player.inventory.getCurrentItem(), x(), y(), z())) - { - if (!this.world().isRemote) - { - if (player.isSneaking()) - { - multiplier = (byte) ((multiplier + 1) % 3); - sendDescUpdate(); - return true; - } - - WrenchUtility.damageWrench(player, player.inventory.getCurrentItem(), x(), y(), z()); - - facing = (byte) ((facing + 1) % 4); - sendDescUpdate(); - tile().notifyPartChange(this); - } - - return true; - } - - stepUp = !stepUp; - - if (!world().isRemote) - player.addChatMessage("Transformer set to step " + (stepUp ? "up" : "down") + "."); - - return true; - } - - @Override - public INode getNode(Class nodeType, ForgeDirection from) { - if(nodeType.isAssignableFrom(IElectricNode.class)) - { - if (node == null) { - node = new ElectricNode(this); - } - return node; - } - return null; - } -} \ No newline at end of file diff --git a/src/main/scala/resonantinduction/electrical/transformer/RenderTransformer.java b/src/main/scala/resonantinduction/electrical/transformer/RenderTransformer.java index 72b7c395e..8d5ec1139 100644 --- a/src/main/scala/resonantinduction/electrical/transformer/RenderTransformer.java +++ b/src/main/scala/resonantinduction/electrical/transformer/RenderTransformer.java @@ -41,7 +41,7 @@ public class RenderTransformer implements ISimpleItemRenderer MODEL.renderOnly("base"); } - public void render(PartTransformer part, double x, double y, double z) + public void render(PartElectricTransformer part, double x, double y, double z) { GL11.glPushMatrix(); GL11.glTranslatef((float) x + 0.5F, (float) y + 0.5F, (float) z + 0.5F); diff --git a/src/main/scala/resonantinduction/electrical/transformer/TransformerNode.java b/src/main/scala/resonantinduction/electrical/transformer/TransformerNode.java deleted file mode 100644 index b373c0009..000000000 --- a/src/main/scala/resonantinduction/electrical/transformer/TransformerNode.java +++ /dev/null @@ -1,15 +0,0 @@ -package resonantinduction.electrical.transformer; - -import universalelectricity.api.core.grid.INodeProvider; -import universalelectricity.core.grid.node.ElectricNode; - -/** - * Created by robert on 7/29/2014. - */ -public class TransformerNode extends ElectricNode { - - public TransformerNode(INodeProvider parent) - { - super(parent); - } -}