Worked on transformer errors
This commit is contained in:
parent
946959bd2e
commit
d1e1f47441
10 changed files with 205 additions and 223 deletions
|
@ -7,12 +7,13 @@ import cpw.mods.fml.relauncher.Side;
|
||||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import resonant.lib.utility.LanguageUtility;
|
import resonant.lib.utility.LanguageUtility;
|
||||||
|
import resonantinduction.atomic.AtomicContent;
|
||||||
|
|
||||||
public class ItemCell extends ItemTooltip
|
public class ItemCell extends ItemTooltip
|
||||||
{
|
{
|
||||||
public ItemCell()
|
public ItemCell()
|
||||||
{
|
{
|
||||||
setContainerItem(Atomic.itemCell);
|
setContainerItem(AtomicContent.itemCell());
|
||||||
}
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
|
|
|
@ -16,7 +16,7 @@ import resonantinduction.electrical.generator.{TileMotor, TileSolarPanel, TileTh
|
||||||
import resonantinduction.electrical.levitator.ItemLevitator
|
import resonantinduction.electrical.levitator.ItemLevitator
|
||||||
import resonantinduction.electrical.multimeter.ItemMultimeter
|
import resonantinduction.electrical.multimeter.ItemMultimeter
|
||||||
import resonantinduction.electrical.tesla.TileTesla
|
import resonantinduction.electrical.tesla.TileTesla
|
||||||
import resonantinduction.electrical.transformer.ItemTransformer
|
import resonantinduction.electrical.transformer.ItemElectricTransformer
|
||||||
import resonantinduction.electrical.wire.{EnumWireMaterial, ItemWire}
|
import resonantinduction.electrical.wire.{EnumWireMaterial, ItemWire}
|
||||||
|
|
||||||
/** Resonant Induction Electrical Module
|
/** Resonant Induction Electrical Module
|
||||||
|
@ -40,7 +40,7 @@ object Electrical {
|
||||||
Settings.config.load
|
Settings.config.load
|
||||||
ElectricalContent.itemWire = Electrical.contentRegistry.newItem(classOf[ItemWire])
|
ElectricalContent.itemWire = Electrical.contentRegistry.newItem(classOf[ItemWire])
|
||||||
ElectricalContent.itemMultimeter = Electrical.contentRegistry.newItem(classOf[ItemMultimeter])
|
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.blockTesla = Electrical.contentRegistry.newBlock(classOf[TileTesla])
|
||||||
ElectricalContent.blockBattery = Electrical.contentRegistry.newBlock(classOf[BlockBattery], classOf[ItemBlockBattery], classOf[TileBattery])
|
ElectricalContent.blockBattery = Electrical.contentRegistry.newBlock(classOf[BlockBattery], classOf[ItemBlockBattery], classOf[TileBattery])
|
||||||
ElectricalContent.itemLevitator = Electrical.contentRegistry.newItem(classOf[ItemLevitator])
|
ElectricalContent.itemLevitator = Electrical.contentRegistry.newItem(classOf[ItemLevitator])
|
||||||
|
|
|
@ -4,7 +4,7 @@ import resonantinduction.electrical.charger.PartCharger;
|
||||||
import resonantinduction.electrical.itemrailing.PartRailing;
|
import resonantinduction.electrical.itemrailing.PartRailing;
|
||||||
import resonantinduction.electrical.levitator.PartLevitator;
|
import resonantinduction.electrical.levitator.PartLevitator;
|
||||||
import resonantinduction.electrical.multimeter.PartMultimeter;
|
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.PartFlatSwitchWire;
|
||||||
import resonantinduction.electrical.wire.flat.PartFlatWire;
|
import resonantinduction.electrical.wire.flat.PartFlatWire;
|
||||||
import resonantinduction.electrical.wire.framed.PartFramedSwitchWire;
|
import resonantinduction.electrical.wire.framed.PartFramedSwitchWire;
|
||||||
|
@ -45,7 +45,7 @@ public class MultipartElectrical implements IPartFactory
|
||||||
else if (name.equals("resonant_induction_multimeter"))
|
else if (name.equals("resonant_induction_multimeter"))
|
||||||
return new PartMultimeter();
|
return new PartMultimeter();
|
||||||
else if (name.equals("resonant_induction_transformer"))
|
else if (name.equals("resonant_induction_transformer"))
|
||||||
return new PartTransformer();
|
return new PartElectricTransformer();
|
||||||
else if (name.equals("resonant_induction_charger"))
|
else if (name.equals("resonant_induction_charger"))
|
||||||
return new PartCharger();
|
return new PartCharger();
|
||||||
else if (name.equals("resonant_induction_levitator"))
|
else if (name.equals("resonant_induction_levitator"))
|
||||||
|
|
|
@ -31,6 +31,7 @@ import resonantinduction.core.prefab.part.MultipartUtility;
|
||||||
import resonantinduction.core.Settings;
|
import resonantinduction.core.Settings;
|
||||||
import resonantinduction.core.prefab.part.PartFace;
|
import resonantinduction.core.prefab.part.PartFace;
|
||||||
import resonantinduction.electrical.Electrical;
|
import resonantinduction.electrical.Electrical;
|
||||||
|
import resonantinduction.electrical.ElectricalContent;
|
||||||
import resonantinduction.electrical.tesla.TileTesla;
|
import resonantinduction.electrical.tesla.TileTesla;
|
||||||
import universalelectricity.core.transform.vector.Vector3;
|
import universalelectricity.core.transform.vector.Vector3;
|
||||||
import codechicken.lib.data.MCDataInput;
|
import codechicken.lib.data.MCDataInput;
|
||||||
|
@ -271,8 +272,8 @@ public class PartLevitator extends PartFace
|
||||||
*/
|
*/
|
||||||
if (renderBeam)
|
if (renderBeam)
|
||||||
{
|
{
|
||||||
Electrical.proxy.renderElectricShock(world(), getBeamSpawnPosition(), getPosition().add(0.5), 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);
|
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++)
|
for (int i = 0; i < results.size(); i++)
|
||||||
|
@ -290,7 +291,7 @@ public class PartLevitator extends PartFace
|
||||||
|
|
||||||
if (renderBeam)
|
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);
|
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)
|
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
|
@Override
|
||||||
protected ItemStack getItem()
|
protected ItemStack getItem()
|
||||||
{
|
{
|
||||||
return new ItemStack(Electrical.itemLevitator);
|
return new ItemStack(ElectricalContent.itemLevitator());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
|
@ -12,13 +12,13 @@ import codechicken.multipart.JItemMultiPart;
|
||||||
import codechicken.multipart.MultiPartRegistry;
|
import codechicken.multipart.MultiPartRegistry;
|
||||||
import codechicken.multipart.TMultiPart;
|
import codechicken.multipart.TMultiPart;
|
||||||
|
|
||||||
public class ItemTransformer extends JItemMultiPart implements IHighlight
|
public class ItemElectricTransformer extends JItemMultiPart implements IHighlight
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public TMultiPart newPart(ItemStack itemStack, EntityPlayer player, World world, BlockCoord pos, int side, Vector3 hit)
|
public TMultiPart newPart(ItemStack itemStack, EntityPlayer player, World world, BlockCoord pos, int side, Vector3 hit)
|
||||||
{
|
{
|
||||||
side = FacePlacementGrid$.MODULE$.getHitSlot(hit, side);
|
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)
|
if (part != null)
|
||||||
{
|
{
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -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<INode> nodeType, ForgeDirection from) {
|
|
||||||
if(nodeType.isAssignableFrom(IElectricNode.class))
|
|
||||||
{
|
|
||||||
if (node == null) {
|
|
||||||
node = new ElectricNode(this);
|
|
||||||
}
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -41,7 +41,7 @@ public class RenderTransformer implements ISimpleItemRenderer
|
||||||
MODEL.renderOnly("base");
|
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.glPushMatrix();
|
||||||
GL11.glTranslatef((float) x + 0.5F, (float) y + 0.5F, (float) z + 0.5F);
|
GL11.glTranslatef((float) x + 0.5F, (float) y + 0.5F, (float) z + 0.5F);
|
||||||
|
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in a new issue