From 1fe0484cd11ae6449d48561872b9ff997cd6f717 Mon Sep 17 00:00:00 2001 From: Ben Spiers Date: Sun, 22 Mar 2015 21:32:20 +0000 Subject: [PATCH] Fix notifyTileChanges() loading chunks. --- .../multipart/PartLogisticalTransporter.java | 2 +- .../common/multipart/PartSidedPipe.java | 15 ++++++---- .../mekanism/common/util/MekanismUtils.java | 28 +++++++++++++++++++ 3 files changed, 39 insertions(+), 6 deletions(-) diff --git a/src/main/java/mekanism/common/multipart/PartLogisticalTransporter.java b/src/main/java/mekanism/common/multipart/PartLogisticalTransporter.java index 21b643e29..f622cc959 100644 --- a/src/main/java/mekanism/common/multipart/PartLogisticalTransporter.java +++ b/src/main/java/mekanism/common/multipart/PartLogisticalTransporter.java @@ -644,7 +644,7 @@ public class PartLogisticalTransporter extends PartTransmitter { TransporterUtils.incrementColor(this); refreshConnections(); - tile().notifyTileChange(); + notifyTileChange(); PathfinderCache.onChanged(Coord4D.get(tile())); Mekanism.packetHandler.sendToReceivers(new TileEntityMessage(Coord4D.get(tile()), getNetworkedData(new ArrayList())), new Range4D(Coord4D.get(tile()))); player.addChatMessage(new ChatComponentText(EnumColor.DARK_BLUE + "[Mekanism]" + EnumColor.GREY + " " + MekanismUtils.localize("tooltip.configurator.toggleColor") + ": " + (color != null ? color.getName() : EnumColor.BLACK + MekanismUtils.localize("gui.none")))); diff --git a/src/main/java/mekanism/common/multipart/PartSidedPipe.java b/src/main/java/mekanism/common/multipart/PartSidedPipe.java index 2a36e3847..d61b126e4 100644 --- a/src/main/java/mekanism/common/multipart/PartSidedPipe.java +++ b/src/main/java/mekanism/common/multipart/PartSidedPipe.java @@ -535,8 +535,8 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart, else { onRedstoneJoin(); } - - tile().notifyTileChange(); + + notifyTileChange(); } } } @@ -576,7 +576,7 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart, redstonePowered = redstoneReactive && MekanismUtils.isGettingPowered(world(), Coord4D.get(tile())); refreshConnections(); - tile().notifyTileChange(); + notifyTileChange(); } @Override @@ -706,8 +706,8 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart, { redstoneReactive ^= true; refreshConnections(); - tile().notifyTileChange(); - + notifyTileChange(); + player.addChatMessage(new ChatComponentText(EnumColor.DARK_BLUE + "[Mekanism]" + EnumColor.GREY + " Redstone sensitivity turned " + EnumColor.INDIGO + (redstoneReactive ? "on." : "off."))); } @@ -753,4 +753,9 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart, { return false; } + + public void notifyTileChange() + { + MekanismUtils.notifyLoadedNeighborsOfTileChange(world(), Coord4D.get(tile())); + } } diff --git a/src/main/java/mekanism/common/util/MekanismUtils.java b/src/main/java/mekanism/common/util/MekanismUtils.java index 6bba46535..8dfa8ec62 100644 --- a/src/main/java/mekanism/common/util/MekanismUtils.java +++ b/src/main/java/mekanism/common/util/MekanismUtils.java @@ -694,6 +694,34 @@ public final class MekanismUtils return false; } + public static void notifyLoadedNeighborsOfTileChange(World world, Coord4D coord) + { + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + { + Coord4D offset = coord.getFromSide(dir); + + if(offset.exists(world)) + { + Block block1 = offset.getBlock(world); + block1.onNeighborChange(world, offset.xCoord, offset.yCoord, offset.zCoord, coord.xCoord, coord.yCoord, coord.zCoord); + if(block1.isNormalCube(world, offset.xCoord, offset.yCoord, offset.zCoord)) + { + offset = offset.getFromSide(dir); + if(offset.exists(world)) + { + block1 = offset.getBlock(world); + + if(block1.getWeakChanges(world, offset.xCoord, offset.yCoord, offset.zCoord)) + { + block1.onNeighborChange(world, offset.xCoord, offset.yCoord, offset.zCoord, coord.xCoord, coord.yCoord, coord.zCoord); + } + } + } + } + } + + } + /** * Places a fake bounding block at the defined location. * @param world - world to place block in