Added Rejector to Assembly Net

This commit is contained in:
Henry Mao 2012-12-20 00:45:22 +08:00
parent 7a7aabb0d7
commit 17ac65816b

View file

@ -27,7 +27,7 @@ import com.google.common.io.ByteArrayDataInput;
import cpw.mods.fml.common.network.PacketDispatcher; import cpw.mods.fml.common.network.PacketDispatcher;
public class TileEntityRejector extends TileEntityElectricityReceiver implements IPacketReceiver, IInventory public class TileEntityRejector extends TileEntityAssemblyNetwork implements IPacketReceiver, IInventory
{ {
/** /**
* The items this container contains. * The items this container contains.
@ -42,15 +42,6 @@ public class TileEntityRejector extends TileEntityElectricityReceiver implements
ANIMATION, GUI, SETTINGON ANIMATION, GUI, SETTINGON
} }
/**
* Joules required per tick.
*/
public static final int WATT_REQUEST = 10;
/**
* Stored energy
*/
public double wattsReceived = 0;
/** /**
* should the piston fire, or be extended * should the piston fire, or be extended
*/ */
@ -67,44 +58,13 @@ public class TileEntityRejector extends TileEntityElectricityReceiver implements
private int playerUsing = 0; private int playerUsing = 0;
@Override @Override
public void updateEntity() public void onUpdate()
{ {
super.updateEntity();
if (!this.worldObj.isRemote)
{
for (int i = 0; i < 6; i++)
{
ForgeDirection inputDirection = ForgeDirection.getOrientation(i);
TileEntity inputTile = Vector3.getTileEntityFromSide(this.worldObj, Vector3.get(this), inputDirection);
if (inputTile != null)
{
if (inputTile instanceof IConductor)
{
if (this.wattsReceived >= this.WATT_REQUEST)
{
((IConductor) inputTile).getNetwork().stopRequesting(this);
}
else
{
((IConductor) inputTile).getNetwork().startRequesting(this, this.WATT_REQUEST / this.getVoltage(), this.getVoltage());
this.wattsReceived += ((IConductor) inputTile).getNetwork().consumeElectricity(this).getWatts();
}
}
}
}
}
/** /**
* Has to update a bit faster than a conveyer belt * Has to update a bit faster than a conveyer belt
*/ */
if (this.ticks % 5 == 0 && !this.isDisabled()) if (this.ticks % 5 == 0 && !this.isDisabled())
{ {
// TODO remove after testing
// this.wattsReceived += 100;
int meta = worldObj.getBlockMetadata(xCoord, yCoord, zCoord); int meta = worldObj.getBlockMetadata(xCoord, yCoord, zCoord);
this.firePiston = false; this.firePiston = false;
@ -131,7 +91,7 @@ public class TileEntityRejector extends TileEntityElectricityReceiver implements
boolean flag = false; boolean flag = false;
if (itemsBehind.size() > 0 && this.wattsReceived > this.WATT_REQUEST) if (itemsBehind.size() > 0 && this.wattsReceived > this.getRequest().getWatts())
{ {
// for every item found check // for every item found check
// if can be thrown then throw // if can be thrown then throw
@ -148,10 +108,10 @@ public class TileEntityRejector extends TileEntityElectricityReceiver implements
// send packet with animation data // send packet with animation data
// if an item was rejected from // if an item was rejected from
// the area // the area
if (!worldObj.isRemote && flag) if (!this.worldObj.isRemote && flag)
{ {
Packet packet = PacketManager.getPacket(AssemblyLine.CHANNEL, this, this.data(PacketTypes.ANIMATION)); Packet packet = PacketManager.getPacket(AssemblyLine.CHANNEL, this, this.getPacketData(PacketTypes.ANIMATION));
PacketManager.sendPacketToClients(packet, worldObj, Vector3.get(this), 30); PacketManager.sendPacketToClients(packet, this.worldObj, new Vector3(this), 30);
} }
} }
@ -159,14 +119,20 @@ public class TileEntityRejector extends TileEntityElectricityReceiver implements
{ {
e.printStackTrace(); e.printStackTrace();
} }
if (!worldObj.isRemote && this.playerUsing > 0)
if (!this.worldObj.isRemote && this.playerUsing > 0)
{ {
Packet packet = PacketManager.getPacket(AssemblyLine.CHANNEL, this, this.data(PacketTypes.GUI)); PacketManager.sendPacketToClients(this.getDescriptionPacket(), this.worldObj, new Vector3(this), 10);
PacketManager.sendPacketToClients(packet, worldObj, Vector3.get(this), 10);
} }
} }
} }
@Override
public Packet getDescriptionPacket()
{
return PacketManager.getPacket(AssemblyLine.CHANNEL, this, this.getPacketData(PacketTypes.GUI));
}
/** /**
* Used to move after it has been rejected * Used to move after it has been rejected
* *
@ -177,15 +143,9 @@ public class TileEntityRejector extends TileEntityElectricityReceiver implements
{ {
this.firePiston = true; this.firePiston = true;
if (this.beltSide != null)
{
// this.beltSide.ignoreEntity(entity);
}
entity.motionX = (double) side.offsetX * 0.15; entity.motionX = (double) side.offsetX * 0.15;
entity.motionY += 0.10000000298023224D; entity.motionY += 0.10000000298023224D;
entity.motionZ = (double) side.offsetZ * 0.15; entity.motionZ = (double) side.offsetZ * 0.15;
this.wattsReceived -= this.WATT_REQUEST;
} }
public boolean canItemBeThrow(Entity entity) public boolean canItemBeThrow(Entity entity)
@ -270,7 +230,7 @@ public class TileEntityRejector extends TileEntityElectricityReceiver implements
} }
} }
public Object[] data(PacketTypes id) public Object[] getPacketData(PacketTypes id)
{ {
if (id == PacketTypes.ANIMATION) { return new Object[] { id.ordinal(), this.firePiston }; } if (id == PacketTypes.ANIMATION) { return new Object[] { id.ordinal(), this.firePiston }; }
if (id == PacketTypes.GUI) if (id == PacketTypes.GUI)