fix energy extraction + can only receive energy, not take energy

This commit is contained in:
Raoul Van den Berge
2015-12-12 22:06:50 +01:00
parent 38ec0ce004
commit 7db9674ad6

View File

@@ -1,7 +1,7 @@
package storagecraft.tile;
import cofh.api.energy.EnergyStorage;
import cofh.api.energy.IEnergyHandler;
import cofh.api.energy.IEnergyReceiver;
import io.netty.buffer.ByteBuf;
import java.util.ArrayList;
import java.util.List;
@@ -10,7 +10,7 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;
import storagecraft.storage.Storage;
public class TileController extends TileSC implements IEnergyHandler, INetworkTile {
public class TileController extends TileSC implements IEnergyReceiver, INetworkTile {
public static final int BASE_ENERGY_USAGE = 100;
private Storage storage = new Storage();
@@ -31,39 +31,41 @@ public class TileController extends TileSC implements IEnergyHandler, INetworkTi
if (!destroyed) {
++ticks;
if (!worldObj.isRemote && ticks % 40 == 0) {
if (!isActive()) {
disconnectAll();
} else {
List<TileMachine> machines = new ArrayList<TileMachine>();
if (!worldObj.isRemote) {
if (ticks % 40 == 0) {
if (!isActive()) {
disconnectAll();
} else {
List<TileMachine> machines = new ArrayList<TileMachine>();
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
TileEntity tile = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ);
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
TileEntity tile = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ);
if (tile instanceof TileCable) {
machines.addAll(((TileCable) tile).findMachines(this));
if (tile instanceof TileCable) {
machines.addAll(((TileCable) tile).findMachines(this));
}
}
for (TileMachine machine : connectedMachines) {
if (!machines.contains(machine)) {
machine.onDisconnected();
}
}
for (TileMachine machine : machines) {
if (!connectedMachines.contains(machine)) {
machine.onConnected(this);
}
}
connectedMachines = machines;
}
energyUsage = BASE_ENERGY_USAGE;
for (TileMachine machine : connectedMachines) {
if (!machines.contains(machine)) {
machine.onDisconnected();
}
energyUsage += machine.getEnergyUsage();
}
for (TileMachine machine : machines) {
if (!connectedMachines.contains(machine)) {
machine.onConnected(this);
}
}
connectedMachines = machines;
}
energyUsage = BASE_ENERGY_USAGE;
for (TileMachine machine : connectedMachines) {
energyUsage += machine.getEnergyUsage();
}
energy.extractEnergy(energyUsage, false);
@@ -114,11 +116,6 @@ public class TileController extends TileSC implements IEnergyHandler, INetworkTi
return energy.receiveEnergy(maxReceive, simulate);
}
@Override
public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate) {
return energy.extractEnergy(maxExtract, simulate);
}
@Override
public int getEnergyStored(ForgeDirection from) {
return energy.getEnergyStored();