Improve connecting of cables

This commit is contained in:
Raoul Van den Berge
2016-03-19 22:43:14 +01:00
parent 048b906a77
commit c8c15896d2
2 changed files with 13 additions and 29 deletions

View File

@@ -44,12 +44,12 @@ public class BlockCable extends BlockBase
public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos)
{ {
return super.getActualState(state, world, pos) return super.getActualState(state, world, pos)
.withProperty(NORTH, TileCable.isCable(world, pos.north())) .withProperty(NORTH, TileCable.hasConnectionWith(world, pos.north()))
.withProperty(EAST, TileCable.isCable(world, pos.east())) .withProperty(EAST, TileCable.hasConnectionWith(world, pos.east()))
.withProperty(SOUTH, TileCable.isCable(world, pos.south())) .withProperty(SOUTH, TileCable.hasConnectionWith(world, pos.south()))
.withProperty(WEST, TileCable.isCable(world, pos.west())) .withProperty(WEST, TileCable.hasConnectionWith(world, pos.west()))
.withProperty(UP, TileCable.isCable(world, pos.up())) .withProperty(UP, TileCable.hasConnectionWith(world, pos.up()))
.withProperty(DOWN, TileCable.isCable(world, pos.down())); .withProperty(DOWN, TileCable.hasConnectionWith(world, pos.down()));
} }
@Override @Override

View File

@@ -5,35 +5,19 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockAccess;
import storagecraft.block.BlockCable;
public class TileCable extends TileBase public class TileCable extends TileBase
{ {
public static boolean isCable(IBlockAccess world, BlockPos pos) public static boolean hasConnectionWith(IBlockAccess world, BlockPos pos)
{ {
return world.getBlockState(pos).getBlock() instanceof BlockCable; TileEntity tile = world.getTileEntity(pos);
}
public boolean hasConnection(EnumFacing dir) return tile instanceof TileCable || tile instanceof TileMachine || tile instanceof TileController;
{
if (!isEnabled())
{
return false;
}
if (isCable(worldObj, pos.offset(dir)))
{
return true;
}
TileEntity tile = worldObj.getTileEntity(pos.offset(dir));
return tile instanceof TileMachine || tile instanceof TileController;
} }
public boolean isEnabled() public boolean isEnabled()
{ {
return !worldObj.isBlockPowered(pos); return true; // @TODO
} }
public void addMachines(List<BlockPos> visited, List<TileMachine> machines, TileController controller) public void addMachines(List<BlockPos> visited, List<TileMachine> machines, TileController controller)
@@ -52,17 +36,17 @@ public class TileCable extends TileBase
{ {
BlockPos newPos = pos.offset(dir); BlockPos newPos = pos.offset(dir);
boolean found = false; boolean alreadyVisited = false;
for (BlockPos visitedBlock : visited) for (BlockPos visitedBlock : visited)
{ {
if (visitedBlock.equals(newPos)) if (visitedBlock.equals(newPos))
{ {
found = true; alreadyVisited = true;
} }
} }
if (found) if (alreadyVisited)
{ {
continue; continue;
} }