machines are now connected to the controller

This commit is contained in:
Raoul Van den Berge
2015-12-08 20:14:19 +01:00
parent 7e5bd57963
commit bd129418e7
8 changed files with 147 additions and 9 deletions

View File

@@ -1,9 +1,55 @@
package storagecraft.tile;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;
public class TileController extends TileSC implements IMachine {
public List<TileSC> getMachines() {
return null;
public class TileController extends TileSC {
private List<IMachine> connectedMachines = new ArrayList<IMachine>();
private int ticks = 0;
@Override
public void updateEntity() {
super.updateEntity();
if (!worldObj.isRemote) {
ticks++;
if (ticks % 40 == 0) {
List<IMachine> machines = new ArrayList<IMachine>();
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());
}
}
for (IMachine machine : connectedMachines) {
if (!machines.contains(machine)) {
machine.onDisconnected();
}
}
for (IMachine machine : machines) {
if (!connectedMachines.contains(machine)) {
machine.onConnected(this);
}
}
connectedMachines = machines;
}
}
}
public void onDestroyed() {
for (IMachine machine : connectedMachines) {
machine.onDisconnected();
}
connectedMachines.clear();
}
}