/******************************************************************************* * Copyright (c) 2015, Superloup10 * * Wolf's Addons is distributed under the terms of the Minecraft Mod Public * License 1.0, or MMPL. Please check the contents of the license located in * https://www.dropbox.com/s/6l16rc7b1aks211/MMPL-1.0.txt ******************************************************************************/ package fr.wolf.addons.common.tileentity; import net.minecraft.server.gui.IUpdatePlayerListBox; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; public class TileEntityCable extends TileEntity implements IUpdatePlayerListBox { /** * UP, DOWN, NORTH, SOUTH, WEST, EAST */ public EnumFacing[] direction = new EnumFacing[6]; @Override public void update() { this.updateConnections(); } public void updateConnections() { if(this.worldObj.getTileEntity(this.pos.down()) instanceof TileEntityCable) direction[0] = EnumFacing.DOWN; else direction[0] = null; if(this.worldObj.getTileEntity(this.pos.up()) instanceof TileEntityCable) direction[1] = EnumFacing.UP; else direction[1] = null; if(this.worldObj.getTileEntity(this.pos.north()) instanceof TileEntityCable) direction[2] = EnumFacing.NORTH; else direction[2] = null; if(this.worldObj.getTileEntity(this.pos.south()) instanceof TileEntityCable) direction[3] = EnumFacing.SOUTH; else direction[3] = null; if(this.worldObj.getTileEntity(this.pos.west()) instanceof TileEntityCable) direction[4] = EnumFacing.WEST; else direction[4] = null; if(this.worldObj.getTileEntity(this.pos.east()) instanceof TileEntityCable) direction[5] = EnumFacing.EAST; else direction[5] = null; } public boolean onlyOpposite(EnumFacing[] directions) { EnumFacing mainDirection = null; boolean isOpposite = false; for(int i = 0; i < directions.length; i++) { if(mainDirection == null && directions[i] != null) mainDirection = directions[i]; if(directions[i] != null && mainDirection != directions[i]) { if(!isOpposite(mainDirection, directions[i])) return false; else isOpposite = true; } } return isOpposite; } public boolean isOpposite(EnumFacing firstDirection, EnumFacing secondDirection) { if((firstDirection.equals(EnumFacing.NORTH) && secondDirection.equals(EnumFacing.SOUTH)) || (firstDirection.equals(EnumFacing.SOUTH) && secondDirection.equals(EnumFacing.NORTH))) return true; if((firstDirection.equals(EnumFacing.UP) && secondDirection.equals(EnumFacing.DOWN)) || (firstDirection.equals(EnumFacing.DOWN) && secondDirection.equals(EnumFacing.UP))) return true; if((firstDirection.equals(EnumFacing.WEST) && secondDirection.equals(EnumFacing.EAST)) || (firstDirection.equals(EnumFacing.EAST) && secondDirection.equals(EnumFacing.WEST))) return true; return false; } }