package com.harry9137.ct.tileentity; import com.harry9137.ct.energy.IEnergyContainer; import com.harry9137.ct.utillity.CardinalDirection; import com.harry9137.ct.utillity.ListHelper; import com.harry9137.ct.utillity.TileHelper; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.BlockPos; import java.util.ArrayList; import java.util.List; public class TileEntityWire extends TileEntity implements INeighboorUpdateTile, IEnergyContainer, ITickUpdater { public TileEntityWire(){ } public boolean isInited = false; public List<Object[]> Blocks; public CardinalDirection[] Directions = new CardinalDirection[6]; public ArrayList<IEnergyContainer> getPossibleConnections(ArrayList<IEnergyContainer> src){ ArrayList<IEnergyContainer> temp = new ArrayList<IEnergyContainer>(); boolean isAvailable = true; for(TileEntity tempTile : TileHelper.getBlockSides(this)){ for(IEnergyContainer entity : src){ if(tempTile != entity){ isAvailable = false; } } if(tempTile instanceof TileEntityWire && isAvailable){ src.add(this); ArrayList<IEnergyContainer> temp4 = ((TileEntityWire) tempTile).getPossibleConnections(src); temp = ListHelper.combine(temp4, temp); } if(tempTile instanceof IEnergyContainer && !(tempTile instanceof TileEntityWire)){ temp.add((IEnergyContainer)tempTile); } } return temp; } @Override public void updateEntity(){ this.Directions[0] = null; this.Directions[1] = null; this.Directions[2] = null; this.Directions[3] = null; this.Directions[4] = null; this.Directions[5] = null; if(this.worldObj.getTileEntity(new BlockPos(pos.getX(), pos.getY(), pos.getZ()-1)) != null && this.worldObj.getTileEntity(new BlockPos(pos.getX(), pos.getY(), pos.getZ()-1)) instanceof IEnergyContainer) { Directions[0] = CardinalDirection.NORTH; } if(this.worldObj.getTileEntity(new BlockPos(pos.getX(), pos.getY(), pos.getZ()+1)) != null && this.worldObj.getTileEntity(new BlockPos(pos.getX(), pos.getY(), pos.getZ()+1)) instanceof IEnergyContainer) { Directions[1] = CardinalDirection.SOUTH; } if(this.worldObj.getTileEntity(new BlockPos(pos.getX() - 1, pos.getY(), pos.getZ())) != null && this.worldObj.getTileEntity(new BlockPos(pos.getX() - 1, pos.getY(), pos.getZ())) instanceof IEnergyContainer) { Directions[2] = CardinalDirection.WEST; } if(this.worldObj.getTileEntity(new BlockPos(pos.getX() + 1, pos.getY(), pos.getZ())) != null && this.worldObj.getTileEntity(new BlockPos(pos.getX() + 1, pos.getY(), pos.getZ()-1)) instanceof IEnergyContainer){ Directions[3] = CardinalDirection.EAST; } if(this.worldObj.getTileEntity(new BlockPos(pos.getX(), pos.getY() + 1, pos.getZ())) != null && this.worldObj.getTileEntity(new BlockPos(pos.getX(), pos.getY() + 1, pos.getZ())) instanceof IEnergyContainer) { Directions[4] = CardinalDirection.UP; } if(this.worldObj.getTileEntity(new BlockPos(pos.getX(), pos.getY() -1, pos.getZ())) != null && this.worldObj.getTileEntity(new BlockPos(pos.getX(), pos.getY() - 1, pos.getZ())) instanceof IEnergyContainer) { Directions[5] = CardinalDirection.DOWN; } } @Override public void writeToNBT(NBTTagCompound par1) { super.writeToNBT(par1); } @Override public void readFromNBT(NBTTagCompound par1) { super.readFromNBT(par1); } @Override public void onNeighboorChanged() { } @Override public int getEnergyLevel() { return 0; } @Override public boolean getCanSendPower() { return false; } @Override public boolean getCanReceivePower() { return false; } @Override public int getEnergyMax() { return 0; } @Override public void onEnergyUpdate() { } @Override public void setPowerLevel(int powerLevel) { } }