Fixes and enhancements for TE
This commit is contained in:
parent
e17d290531
commit
17d36cad4d
6 changed files with 46 additions and 24 deletions
|
@ -101,6 +101,35 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized double emit(double energyToSend, ArrayList<TileEntity> ignored)
|
public synchronized double emit(double energyToSend, ArrayList<TileEntity> ignored)
|
||||||
|
{
|
||||||
|
double prevEnergy = energyToSend;
|
||||||
|
double sent;
|
||||||
|
|
||||||
|
energyToSend = doEmit(energyToSend, ignored);
|
||||||
|
sent = prevEnergy-energyToSend;
|
||||||
|
|
||||||
|
boolean tryAgain = energyToSend > 0 && sent > 0;
|
||||||
|
|
||||||
|
while(tryAgain)
|
||||||
|
{
|
||||||
|
tryAgain = false;
|
||||||
|
|
||||||
|
prevEnergy = energyToSend;
|
||||||
|
sent = 0;
|
||||||
|
|
||||||
|
energyToSend = doEmit(energyToSend, ignored);
|
||||||
|
sent = prevEnergy-energyToSend;
|
||||||
|
|
||||||
|
if(energyToSend > 0 && sent > 0)
|
||||||
|
{
|
||||||
|
tryAgain = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return energyToSend;
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized double doEmit(double energyToSend, ArrayList<TileEntity> ignored)
|
||||||
{
|
{
|
||||||
double energyAvailable = energyToSend;
|
double energyAvailable = energyToSend;
|
||||||
double sent;
|
double sent;
|
||||||
|
@ -132,7 +161,7 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
|
||||||
else if(acceptor instanceof IEnergyHandler)
|
else if(acceptor instanceof IEnergyHandler)
|
||||||
{
|
{
|
||||||
IEnergyHandler handler = (IEnergyHandler)acceptor;
|
IEnergyHandler handler = (IEnergyHandler)acceptor;
|
||||||
int used = handler.receiveEnergy(side.getOpposite(), (int)(currentSending*Mekanism.TO_TE), false);
|
int used = handler.receiveEnergy(side.getOpposite(), (int)Math.round(currentSending*Mekanism.TO_TE), false);
|
||||||
energyToSend -= used*Mekanism.FROM_TE;
|
energyToSend -= used*Mekanism.FROM_TE;
|
||||||
}
|
}
|
||||||
else if(acceptor instanceof IEnergySink)
|
else if(acceptor instanceof IEnergySink)
|
||||||
|
|
|
@ -182,11 +182,10 @@ public class EntityRobit extends EntityCreature implements IInventory, ISustaine
|
||||||
ItemStack itemStack = inventory[27];
|
ItemStack itemStack = inventory[27];
|
||||||
IEnergyContainerItem item = (IEnergyContainerItem)inventory[27].getItem();
|
IEnergyContainerItem item = (IEnergyContainerItem)inventory[27].getItem();
|
||||||
|
|
||||||
int itemEnergy = (int)Math.min(Math.sqrt(item.getMaxEnergyStored(itemStack)), item.getEnergyStored(itemStack));
|
int itemEnergy = (int)Math.round(Math.min(Math.sqrt(item.getMaxEnergyStored(itemStack)), item.getEnergyStored(itemStack)));
|
||||||
int toTransfer = (int)Math.min(itemEnergy, ((MAX_ELECTRICITY - getEnergy())*Mekanism.TO_TE));
|
int toTransfer = (int)Math.round(Math.min(itemEnergy, ((MAX_ELECTRICITY - getEnergy())*Mekanism.TO_TE)));
|
||||||
|
|
||||||
item.extractEnergy(itemStack, toTransfer, false);
|
setEnergy(getEnergy() + (item.extractEnergy(itemStack, toTransfer, false)*Mekanism.FROM_TE));
|
||||||
setEnergy(getEnergy() + (toTransfer*Mekanism.FROM_TE));
|
|
||||||
}
|
}
|
||||||
else if(inventory[27].itemID == Item.redstone.itemID && getEnergy()+Mekanism.ENERGY_PER_REDSTONE <= MAX_ELECTRICITY)
|
else if(inventory[27].itemID == Item.redstone.itemID && getEnergy()+Mekanism.ENERGY_PER_REDSTONE <= MAX_ELECTRICITY)
|
||||||
{
|
{
|
||||||
|
|
|
@ -145,11 +145,10 @@ public class TileEntityChargepad extends TileEntityElectricBlock implements IAct
|
||||||
{
|
{
|
||||||
IEnergyContainerItem item = (IEnergyContainerItem)itemstack.getItem();
|
IEnergyContainerItem item = (IEnergyContainerItem)itemstack.getItem();
|
||||||
|
|
||||||
int itemEnergy = (int)Math.min(Math.sqrt(item.getMaxEnergyStored(itemstack)), item.getMaxEnergyStored(itemstack) - item.getEnergyStored(itemstack));
|
int itemEnergy = (int)Math.round(Math.min(Math.sqrt(item.getMaxEnergyStored(itemstack)), item.getMaxEnergyStored(itemstack) - item.getEnergyStored(itemstack)));
|
||||||
int toTransfer = (int)Math.min(itemEnergy, (getEnergy()*Mekanism.TO_TE));
|
int toTransfer = (int)Math.round(Math.min(itemEnergy, (getEnergy()*Mekanism.TO_TE)));
|
||||||
|
|
||||||
item.receiveEnergy(itemstack, toTransfer, false);
|
setEnergy(getEnergy() - (item.receiveEnergy(itemstack, toTransfer, false)*Mekanism.FROM_TE));
|
||||||
setEnergy(getEnergy() - (toTransfer*Mekanism.FROM_TE));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -318,10 +318,7 @@ public class TileEntityUniversalCable extends TileEntityTransmitter<EnergyNetwor
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void refresh()
|
public void refresh() {}
|
||||||
{
|
|
||||||
refreshTransmitterNetwork();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canConnect(ForgeDirection direction)
|
public boolean canConnect(ForgeDirection direction)
|
||||||
|
@ -357,7 +354,7 @@ public class TileEntityUniversalCable extends TileEntityTransmitter<EnergyNetwor
|
||||||
{
|
{
|
||||||
ArrayList list = new ArrayList();
|
ArrayList list = new ArrayList();
|
||||||
list.add(Object3D.get(this).getFromSide(from).getTileEntity(worldObj));
|
list.add(Object3D.get(this).getFromSide(from).getTileEntity(worldObj));
|
||||||
return maxReceive - (int)(getTransmitterNetwork().emit(maxReceive*Mekanism.FROM_TE, list)*Mekanism.TO_TE);
|
return maxReceive - (int)Math.round(getTransmitterNetwork().emit(maxReceive*Mekanism.FROM_TE, list)*Mekanism.TO_TE);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -386,7 +383,7 @@ public class TileEntityUniversalCable extends TileEntityTransmitter<EnergyNetwor
|
||||||
{
|
{
|
||||||
ArrayList list = new ArrayList();
|
ArrayList list = new ArrayList();
|
||||||
list.add(Object3D.get(this).getFromSide(from).getTileEntity(worldObj));
|
list.add(Object3D.get(this).getFromSide(from).getTileEntity(worldObj));
|
||||||
return (int)(getTransmitterNetwork().getEnergyNeeded(list)*Mekanism.TO_TE);
|
return (int)Math.round(getTransmitterNetwork().getEnergyNeeded(list)*Mekanism.TO_TE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public class FakeUENetwork implements IElectricityNetwork
|
public class FakeUENetwork implements IElectricityNetwork
|
||||||
|
|
|
@ -292,7 +292,7 @@ public final class CableUtils
|
||||||
{
|
{
|
||||||
IEnergyHandler handler = (IEnergyHandler)tileEntity;
|
IEnergyHandler handler = (IEnergyHandler)tileEntity;
|
||||||
double toSend = Math.min(emitter.getEnergy(), emitter.getMaxOutput());
|
double toSend = Math.min(emitter.getEnergy(), emitter.getMaxOutput());
|
||||||
int used = handler.receiveEnergy(emitter.getOutputtingSide().getOpposite(), (int)(toSend*Mekanism.TO_TE), false);
|
int used = handler.receiveEnergy(emitter.getOutputtingSide().getOpposite(), (int)Math.round(toSend*Mekanism.TO_TE), false);
|
||||||
emitter.setEnergy(emitter.getEnergy() - used*Mekanism.FROM_TE);
|
emitter.setEnergy(emitter.getEnergy() - used*Mekanism.FROM_TE);
|
||||||
}
|
}
|
||||||
else if(tileEntity instanceof IEnergySink)
|
else if(tileEntity instanceof IEnergySink)
|
||||||
|
|
|
@ -46,11 +46,10 @@ public final class ChargeUtils
|
||||||
ItemStack itemStack = storer.inventory[slotID];
|
ItemStack itemStack = storer.inventory[slotID];
|
||||||
IEnergyContainerItem item = (IEnergyContainerItem)storer.inventory[slotID].getItem();
|
IEnergyContainerItem item = (IEnergyContainerItem)storer.inventory[slotID].getItem();
|
||||||
|
|
||||||
int itemEnergy = (int)Math.min(Math.sqrt(item.getMaxEnergyStored(itemStack)), item.getEnergyStored(itemStack));
|
int itemEnergy = (int)Math.round(Math.min(Math.sqrt(item.getMaxEnergyStored(itemStack)), item.getEnergyStored(itemStack)));
|
||||||
int toTransfer = (int)Math.min(itemEnergy, ((storer.getMaxEnergy() - storer.getEnergy())*Mekanism.TO_TE));
|
int toTransfer = (int)Math.round(Math.min(itemEnergy, ((storer.getMaxEnergy() - storer.getEnergy())*Mekanism.TO_TE)));
|
||||||
|
|
||||||
item.extractEnergy(itemStack, toTransfer, false);
|
storer.setEnergy(storer.getEnergy() + (item.extractEnergy(itemStack, toTransfer, false)*Mekanism.FROM_TE));
|
||||||
storer.setEnergy(storer.getEnergy() + (toTransfer*Mekanism.FROM_TE));
|
|
||||||
}
|
}
|
||||||
else if(storer.inventory[slotID].itemID == Item.redstone.itemID && storer.getEnergy()+Mekanism.ENERGY_PER_REDSTONE <= storer.getMaxEnergy())
|
else if(storer.inventory[slotID].itemID == Item.redstone.itemID && storer.getEnergy()+Mekanism.ENERGY_PER_REDSTONE <= storer.getMaxEnergy())
|
||||||
{
|
{
|
||||||
|
@ -92,11 +91,10 @@ public final class ChargeUtils
|
||||||
ItemStack itemStack = storer.inventory[slotID];
|
ItemStack itemStack = storer.inventory[slotID];
|
||||||
IEnergyContainerItem item = (IEnergyContainerItem)storer.inventory[slotID].getItem();
|
IEnergyContainerItem item = (IEnergyContainerItem)storer.inventory[slotID].getItem();
|
||||||
|
|
||||||
int itemEnergy = (int)Math.min(Math.sqrt(item.getMaxEnergyStored(itemStack)), item.getMaxEnergyStored(itemStack) - item.getEnergyStored(itemStack));
|
int itemEnergy = (int)Math.round(Math.min(Math.sqrt(item.getMaxEnergyStored(itemStack)), item.getMaxEnergyStored(itemStack) - item.getEnergyStored(itemStack)));
|
||||||
int toTransfer = (int)Math.min(itemEnergy, (storer.getEnergy()*Mekanism.TO_TE));
|
int toTransfer = (int)Math.round(Math.min(itemEnergy, (storer.getEnergy()*Mekanism.TO_TE)));
|
||||||
|
|
||||||
item.extractEnergy(itemStack, toTransfer, false);
|
storer.setEnergy(storer.getEnergy() - (item.extractEnergy(itemStack, toTransfer, false)*Mekanism.FROM_TE));
|
||||||
storer.setEnergy(storer.getEnergy() - (toTransfer*Mekanism.FROM_TE));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue