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) {
}
}