From dd7cee8c8b925f51f42aff2ad630c72d4f89e382 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Sat, 14 May 2016 15:04:05 +0200 Subject: [PATCH] Very unstable improved machine searching part7 --- .../java/refinedstorage/block/BlockBase.java | 2 +- .../java/refinedstorage/block/BlockCable.java | 16 +++++++++++----- .../refinedstorage/block/BlockController.java | 7 ------- .../refinedstorage/proxy/CommonProxy.java | 1 + .../tile/ControllerSearcher.java | 8 +------- .../java/refinedstorage/tile/TileCable.java | 19 +++++++++++++++++++ .../refinedstorage/tile/TileController.java | 12 +++++++----- .../refinedstorage/blockstates/cable.json | 6 ++++++ 8 files changed, 46 insertions(+), 25 deletions(-) create mode 100755 src/main/java/refinedstorage/tile/TileCable.java diff --git a/src/main/java/refinedstorage/block/BlockBase.java b/src/main/java/refinedstorage/block/BlockBase.java index 797b4e16f..70a09e242 100755 --- a/src/main/java/refinedstorage/block/BlockBase.java +++ b/src/main/java/refinedstorage/block/BlockBase.java @@ -90,7 +90,7 @@ public abstract class BlockBase extends Block { ((TileBase) tile).setDirection(EnumFacing.getFront(newDir)); - world.notifyBlockUpdate(pos, world.getBlockState(pos), world.getBlockState(pos), 2 | 4); + RefinedStorageUtils.reRenderBlock(world, pos); return true; } diff --git a/src/main/java/refinedstorage/block/BlockCable.java b/src/main/java/refinedstorage/block/BlockCable.java index 1d3dd65e5..0c84414f3 100755 --- a/src/main/java/refinedstorage/block/BlockCable.java +++ b/src/main/java/refinedstorage/block/BlockCable.java @@ -1,17 +1,19 @@ package refinedstorage.block; -import net.minecraft.block.Block; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyBool; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; import refinedstorage.RefinedStorageBlocks; +import refinedstorage.tile.TileCable; import refinedstorage.tile.TileMachine; -public class BlockCable extends BlockBase { +public class BlockCable extends BlockMachine { public static final AxisAlignedBB CABLE_AABB = new AxisAlignedBB(4 * (1F / 16F), 4 * (1F / 16F), 4 * (1F / 16F), 1 - 4 * (1F / 16F), 1 - 4 * (1F / 16F), 1 - 4 * (1F / 16F)); public static final PropertyBool NORTH = PropertyBool.create("north"); @@ -27,10 +29,16 @@ public class BlockCable extends BlockBase { setHardness(0.6F); } + @Override + public TileEntity createTileEntity(World world, IBlockState state) { + return new TileCable(); + } + @Override protected BlockStateContainer createBlockState() { return new BlockStateContainer(this, new IProperty[]{ DIRECTION, + CONNECTED, NORTH, EAST, SOUTH, @@ -52,9 +60,7 @@ public class BlockCable extends BlockBase { } public static boolean hasConnectionWith(IBlockAccess world, BlockPos pos) { - Block block = world.getBlockState(pos).getBlock(); - - return (block == RefinedStorageBlocks.CABLE || block == RefinedStorageBlocks.CONTROLLER) || world.getTileEntity(pos) instanceof TileMachine; + return world.getBlockState(pos).getBlock() == RefinedStorageBlocks.CONTROLLER || world.getTileEntity(pos) instanceof TileMachine; } @Override diff --git a/src/main/java/refinedstorage/block/BlockController.java b/src/main/java/refinedstorage/block/BlockController.java index 364eca758..e46e9bcef 100755 --- a/src/main/java/refinedstorage/block/BlockController.java +++ b/src/main/java/refinedstorage/block/BlockController.java @@ -86,13 +86,6 @@ public class BlockController extends BlockBase { return true; } - @Override - public void breakBlock(World world, BlockPos pos, IBlockState state) { - ((TileController) world.getTileEntity(pos)).onDestroyed(); - - super.breakBlock(world, pos, state); - } - @Override public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase player, ItemStack itemStack) { super.onBlockPlacedBy(world, pos, state, player, itemStack); diff --git a/src/main/java/refinedstorage/proxy/CommonProxy.java b/src/main/java/refinedstorage/proxy/CommonProxy.java index 6601a6d04..7166be392 100755 --- a/src/main/java/refinedstorage/proxy/CommonProxy.java +++ b/src/main/java/refinedstorage/proxy/CommonProxy.java @@ -79,6 +79,7 @@ public class CommonProxy { GameRegistry.registerTileEntity(TileWirelessTransmitter.class, ID + ":wireless_transmitter"); GameRegistry.registerTileEntity(TileCrafter.class, ID + ":crafter"); GameRegistry.registerTileEntity(TileProcessingPatternEncoder.class, ID + ":processing_pattern_encoder"); + GameRegistry.registerTileEntity(TileCable.class, ID + ":cable"); registerBlock(RefinedStorageBlocks.CONTROLLER); registerBlock(RefinedStorageBlocks.GRID); diff --git a/src/main/java/refinedstorage/tile/ControllerSearcher.java b/src/main/java/refinedstorage/tile/ControllerSearcher.java index dec8fbf83..8d1e9543d 100755 --- a/src/main/java/refinedstorage/tile/ControllerSearcher.java +++ b/src/main/java/refinedstorage/tile/ControllerSearcher.java @@ -1,11 +1,9 @@ package refinedstorage.tile; -import net.minecraft.block.Block; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import refinedstorage.RefinedStorageBlocks; import java.util.Set; @@ -21,11 +19,7 @@ public class ControllerSearcher { if (tile instanceof TileController) { return (TileController) tile; - } - - Block block = world.getBlockState(current).getBlock(); - - if (tile instanceof TileMachine || block == RefinedStorageBlocks.CABLE) { + } else if (tile instanceof TileMachine) { // We need to have visited more than 1 tile so that the relay can find a controller for itself if (visited.size() > 1 && tile instanceof TileRelay && !((TileRelay) tile).isConnected()) { return null; diff --git a/src/main/java/refinedstorage/tile/TileCable.java b/src/main/java/refinedstorage/tile/TileCable.java new file mode 100755 index 000000000..b6c898741 --- /dev/null +++ b/src/main/java/refinedstorage/tile/TileCable.java @@ -0,0 +1,19 @@ +package refinedstorage.tile; + +import net.minecraft.inventory.Container; + +public class TileCable extends TileMachine { + @Override + public int getEnergyUsage() { + return 0; + } + + @Override + public void updateMachine() { + } + + @Override + public Class getContainer() { + return null; + } +} diff --git a/src/main/java/refinedstorage/tile/TileController.java b/src/main/java/refinedstorage/tile/TileController.java index 79b31b6d5..38bf3f363 100755 --- a/src/main/java/refinedstorage/tile/TileController.java +++ b/src/main/java/refinedstorage/tile/TileController.java @@ -211,11 +211,13 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr if (lastEnergy != energy.getEnergyStored()) { worldObj.updateComparatorOutputLevel(pos, RefinedStorageBlocks.CONTROLLER); - if (System.currentTimeMillis() - lastEnergyUpdate > 3000) { + if (System.currentTimeMillis() - lastEnergyUpdate > 3000L) { RefinedStorageUtils.sendToAllAround(worldObj, pos, new MessageControllerEnergyUpdate(this)); lastEnergyUpdate = System.currentTimeMillis(); } + } else if (ticks < 10) { + RefinedStorageUtils.sendToAllAround(worldObj, pos, new MessageControllerEnergyUpdate(this)); } } } @@ -232,10 +234,6 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr return wirelessGridRange; } - public void onDestroyed() { - disconnectAll(); - } - private void disconnectAll() { for (TileMachine machine : machines) { machine.onDisconnected(); @@ -474,6 +472,8 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); + energy.readFromNBT(nbt); + if (nbt.hasKey(RedstoneMode.NBT)) { redstoneMode = RedstoneMode.getById(nbt.getInteger(RedstoneMode.NBT)); } @@ -500,6 +500,8 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); + energy.writeToNBT(nbt); + nbt.setInteger(RedstoneMode.NBT, redstoneMode.id); NBTTagList list = new NBTTagList(); diff --git a/src/main/resources/assets/refinedstorage/blockstates/cable.json b/src/main/resources/assets/refinedstorage/blockstates/cable.json index f3261ef4c..c577b0f99 100755 --- a/src/main/resources/assets/refinedstorage/blockstates/cable.json +++ b/src/main/resources/assets/refinedstorage/blockstates/cable.json @@ -70,6 +70,12 @@ }, "down": { } + }, + "connected": { + "true": { + }, + "false": { + } } } } \ No newline at end of file