Charger now works
This commit is contained in:
parent
9b1fa08fe9
commit
b337c7a5b8
2 changed files with 48 additions and 37 deletions
|
@ -1,7 +1,11 @@
|
||||||
package resonantinduction.electrical.charger;
|
package resonantinduction.electrical.charger;
|
||||||
|
|
||||||
|
import calclavia.lib.render.RenderUtility;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import resonantinduction.core.render.RenderItemOverlayTile;
|
import resonantinduction.core.render.RenderItemOverlayTile;
|
||||||
|
import universalelectricity.api.CompatibilityModule;
|
||||||
|
import universalelectricity.api.energy.UnitDisplay;
|
||||||
|
import universalelectricity.api.energy.UnitDisplay.Unit;
|
||||||
import universalelectricity.api.vector.Vector3;
|
import universalelectricity.api.vector.Vector3;
|
||||||
|
|
||||||
/** Renderer for electric item charger
|
/** Renderer for electric item charger
|
||||||
|
@ -32,7 +36,12 @@ public class RenderCharger extends RenderItemOverlayTile
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
this.renderItemSingleSide(tile, x + d.x, y + d.y, z + d.z, ((TileCharger) tile).getStackInSlot(0), ((TileCharger) tile).getDirection(), "IDLE");
|
this.renderItemSingleSide(tile, x + d.x, y + d.y, z + d.z, ((TileCharger) tile).getStackInSlot(0), ((TileCharger) tile).getDirection(), "IDLE");
|
||||||
|
if (CompatibilityModule.getMaxEnergyItem(((TileCharger) tile).getStackInSlot(0)) > 0)
|
||||||
|
{
|
||||||
|
long energy = CompatibilityModule.getEnergyItem(((TileCharger) tile).getStackInSlot(0));
|
||||||
|
long maxEnergy = CompatibilityModule.getMaxEnergyItem(((TileCharger) tile).getStackInSlot(0));
|
||||||
|
RenderUtility.renderText(UnitDisplay.getDisplay(energy, Unit.JOULES,2,true) + "/" + UnitDisplay.getDisplay(maxEnergy, Unit.JOULES,2,true), ((TileCharger) tile).getDirection(), 0.02f, x + d.x, y + d.y + 0.4, z + d.z);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,20 +1,27 @@
|
||||||
package resonantinduction.electrical.charger;
|
package resonantinduction.electrical.charger;
|
||||||
|
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.network.packet.Packet;
|
||||||
import net.minecraftforge.common.ForgeDirection;
|
import net.minecraftforge.common.ForgeDirection;
|
||||||
|
import resonantinduction.core.ResonantInduction;
|
||||||
import universalelectricity.api.CompatibilityModule;
|
import universalelectricity.api.CompatibilityModule;
|
||||||
import universalelectricity.api.energy.IEnergyContainer;
|
|
||||||
import universalelectricity.api.energy.IEnergyInterface;
|
import universalelectricity.api.energy.IEnergyInterface;
|
||||||
|
import universalelectricity.api.vector.Vector3;
|
||||||
|
import calclavia.lib.network.IPacketReceiver;
|
||||||
|
import calclavia.lib.network.IPacketReceiverWithID;
|
||||||
|
import calclavia.lib.network.PacketHandler;
|
||||||
import calclavia.lib.prefab.tile.IRotatable;
|
import calclavia.lib.prefab.tile.IRotatable;
|
||||||
import calclavia.lib.prefab.tile.TileExternalInventory;
|
import calclavia.lib.prefab.tile.TileExternalInventory;
|
||||||
import calclavia.lib.utility.inventory.ExternalInventory;
|
import calclavia.lib.utility.inventory.ExternalInventory;
|
||||||
|
|
||||||
|
import com.google.common.io.ByteArrayDataInput;
|
||||||
|
|
||||||
/** @author Darkguardsman */
|
/** @author Darkguardsman */
|
||||||
public class TileCharger extends TileExternalInventory implements IRotatable, IEnergyInterface, IEnergyContainer
|
public class TileCharger extends TileExternalInventory implements IRotatable, IEnergyInterface, IPacketReceiverWithID
|
||||||
{
|
{
|
||||||
private long energyCap = 0;
|
|
||||||
private long energyStored = 0;
|
|
||||||
public ChargerMode currentMode = ChargerMode.SINGLE;
|
public ChargerMode currentMode = ChargerMode.SINGLE;
|
||||||
|
private long lastPacket = 0;
|
||||||
|
|
||||||
public static enum ChargerMode
|
public static enum ChargerMode
|
||||||
{
|
{
|
||||||
|
@ -30,25 +37,9 @@ public class TileCharger extends TileExternalInventory implements IRotatable, IE
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void initiate()
|
public boolean canUpdate()
|
||||||
{
|
{
|
||||||
super.initiate();
|
return false;
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateEntity()
|
|
||||||
{
|
|
||||||
super.updateEntity();
|
|
||||||
if (this.ticks % 5 == 0)
|
|
||||||
{
|
|
||||||
this.energyCap = 0;
|
|
||||||
this.energyStored = 0;
|
|
||||||
for (int i = 0; i < this.getSizeInventory(); i++)
|
|
||||||
{
|
|
||||||
this.energyCap += CompatibilityModule.getMaxEnergyItem(this.getStackInSlot(i));
|
|
||||||
this.energyStored += CompatibilityModule.getEnergyItem(this.getStackInSlot(i));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -83,6 +74,11 @@ public class TileCharger extends TileExternalInventory implements IRotatable, IE
|
||||||
if (energyLeft <= 0)
|
if (energyLeft <= 0)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (energyUsed > 0 && System.currentTimeMillis() - this.lastPacket >= 50)
|
||||||
|
{
|
||||||
|
this.lastPacket = System.currentTimeMillis();
|
||||||
|
this.worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
|
||||||
|
}
|
||||||
return energyUsed;
|
return energyUsed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,28 +89,34 @@ public class TileCharger extends TileExternalInventory implements IRotatable, IE
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setEnergy(ForgeDirection from, long energy)
|
public Packet getDescriptionPacket()
|
||||||
{
|
{
|
||||||
|
NBTTagCompound nbt = new NBTTagCompound();
|
||||||
|
this.writeToNBT(nbt);
|
||||||
|
return ResonantInduction.PACKET_TILE.getPacketWithID(0, this, nbt);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getEnergy(ForgeDirection from)
|
public boolean onReceivePacket(int id, ByteArrayDataInput data, EntityPlayer player, Object... extra)
|
||||||
{
|
{
|
||||||
if (this.canConnect(from))
|
try
|
||||||
{
|
{
|
||||||
return this.energyStored;
|
if (id == 0)
|
||||||
}
|
{
|
||||||
return 0;
|
this.readFromNBT(PacketHandler.readNBTTagCompound(data));
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
else if (id == 1)
|
||||||
|
{
|
||||||
|
|
||||||
@Override
|
|
||||||
public long getEnergyCapacity(ForgeDirection from)
|
|
||||||
{
|
|
||||||
if (this.canConnect(from))
|
|
||||||
{
|
|
||||||
return this.energyCap;
|
|
||||||
}
|
}
|
||||||
return 0;
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in a new issue