From 0d7bbb45ed180e8e74b99ab919287a8a74fdb70a Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Sat, 24 Jun 2017 22:00:42 +0200 Subject: [PATCH] Better fix for #1326 and #1307 --- .../refinedstorage/proxy/ProxyCommon.java | 4 +--- .../refinedstorage/tile/TileCable.java | 5 +++++ .../refinedstorage/tile/TileConstructor.java | 5 +++++ .../refinedstorage/tile/TileCrafter.java | 5 +++++ .../refinedstorage/tile/TileDestructor.java | 5 +++++ .../refinedstorage/tile/TileDetector.java | 5 +++++ .../refinedstorage/tile/TileDiskDrive.java | 5 +++++ .../tile/TileDiskManipulator.java | 5 +++++ .../refinedstorage/tile/TileExporter.java | 5 +++++ .../tile/TileExternalStorage.java | 5 +++++ .../refinedstorage/tile/TileFluidInterface.java | 5 +++++ .../refinedstorage/tile/TileFluidStorage.java | 5 +++++ .../refinedstorage/tile/TileImporter.java | 5 +++++ .../refinedstorage/tile/TileInterface.java | 5 +++++ .../tile/TileNetworkReceiver.java | 5 +++++ .../tile/TileNetworkTransmitter.java | 5 +++++ .../refinedstorage/tile/TileNode.java | 17 +++++------------ .../refinedstorage/tile/TileReader.java | 5 +++++ .../refinedstorage/tile/TileRelay.java | 5 +++++ .../tile/TileSecurityManager.java | 5 +++++ .../refinedstorage/tile/TileSolderer.java | 5 +++++ .../refinedstorage/tile/TileStorage.java | 5 +++++ .../refinedstorage/tile/TileStorageMonitor.java | 5 +++++ .../tile/TileWirelessTransmitter.java | 5 +++++ .../refinedstorage/tile/TileWriter.java | 5 +++++ .../craftingmonitor/TileCraftingMonitor.java | 5 +++++ .../refinedstorage/tile/grid/TileGrid.java | 5 +++++ 27 files changed, 131 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java index 2ad40ff32..465245988 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java @@ -343,9 +343,7 @@ public class ProxyCommon { TileBase tileInstance = tile.newInstance(); if (tileInstance instanceof TileNode) { - String nodeId = ((TileNode) tileInstance).createNode(null, null).getId(); - - API.instance().getNetworkNodeRegistry().add(nodeId, (tag, world, pos) -> { + API.instance().getNetworkNodeRegistry().add(((TileNode) tileInstance).getNodeId(), (tag, world, pos) -> { NetworkNode node = ((TileNode) tileInstance).createNode(world, pos); node.read(tag); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileCable.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileCable.java index 884c76c4a..d2d5d92d7 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileCable.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileCable.java @@ -12,4 +12,9 @@ public class TileCable extends TileNode { public NetworkNodeCable createNode(World world, BlockPos pos) { return new NetworkNodeCable(world, pos); } + + @Override + public String getNodeId() { + return NetworkNodeCable.ID; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileConstructor.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileConstructor.java index f1ed07e3c..2eda4a54a 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileConstructor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileConstructor.java @@ -39,4 +39,9 @@ public class TileConstructor extends TileNode { public NetworkNodeConstructor createNode(World world, BlockPos pos) { return new NetworkNodeConstructor(world, pos); } + + @Override + public String getNodeId() { + return NetworkNodeConstructor.ID; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileCrafter.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileCrafter.java index 9b311af9e..20052d490 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileCrafter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileCrafter.java @@ -12,4 +12,9 @@ public class TileCrafter extends TileNode { public NetworkNodeCrafter createNode(World world, BlockPos pos) { return new NetworkNodeCrafter(world, pos); } + + @Override + public String getNodeId() { + return NetworkNodeCrafter.ID; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDestructor.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDestructor.java index 5bd5c2da4..9298e0721 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDestructor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDestructor.java @@ -42,4 +42,9 @@ public class TileDestructor extends TileNode { public NetworkNodeDestructor createNode(World world, BlockPos pos) { return new NetworkNodeDestructor(world, pos); } + + @Override + public String getNodeId() { + return NetworkNodeDestructor.ID; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDetector.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDetector.java index 2565cc9a7..f13f6820e 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDetector.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDetector.java @@ -88,4 +88,9 @@ public class TileDetector extends TileNode { public NetworkNodeDetector createNode(World world, BlockPos pos) { return new NetworkNodeDetector(world, pos); } + + @Override + public String getNodeId() { + return NetworkNodeDetector.ID; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskDrive.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskDrive.java index 2ad4bcd86..2bfbf9bb2 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskDrive.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskDrive.java @@ -176,4 +176,9 @@ public class TileDiskDrive extends TileNode { public NetworkNodeDiskDrive createNode(World world, BlockPos pos) { return new NetworkNodeDiskDrive(world, pos); } + + @Override + public String getNodeId() { + return NetworkNodeDiskDrive.ID; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskManipulator.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskManipulator.java index 68ade8c82..5671b3b4d 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskManipulator.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskManipulator.java @@ -86,4 +86,9 @@ public class TileDiskManipulator extends TileNode { public NetworkNodeDiskManipulator createNode(World world, BlockPos pos) { return new NetworkNodeDiskManipulator(world, pos); } + + @Override + public String getNodeId() { + return NetworkNodeDiskManipulator.ID; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExporter.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExporter.java index 917c3ac55..0010ff7a7 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExporter.java @@ -83,4 +83,9 @@ public class TileExporter extends TileNode { public NetworkNodeExporter createNode(World world, BlockPos pos) { return new NetworkNodeExporter(world, pos); } + + @Override + public String getNodeId() { + return NetworkNodeExporter.ID; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExternalStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExternalStorage.java index b49de2392..f41e92027 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExternalStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExternalStorage.java @@ -69,4 +69,9 @@ public class TileExternalStorage extends TileNode { public NetworkNodeExternalStorage createNode(World world, BlockPos pos) { return new NetworkNodeExternalStorage(world, pos); } + + @Override + public String getNodeId() { + return NetworkNodeExternalStorage.ID; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileFluidInterface.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileFluidInterface.java index da4134d0f..6759ad873 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileFluidInterface.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileFluidInterface.java @@ -57,4 +57,9 @@ public class TileFluidInterface extends TileNode { public NetworkNodeFluidInterface createNode(World world, BlockPos pos) { return new NetworkNodeFluidInterface(world, pos); } + + @Override + public String getNodeId() { + return NetworkNodeFluidInterface.ID; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileFluidStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileFluidStorage.java index 33c06230a..8fb217d50 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileFluidStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileFluidStorage.java @@ -38,5 +38,10 @@ public class TileFluidStorage extends TileNode { public NetworkNodeFluidStorage createNode(World world, BlockPos pos) { return new NetworkNodeFluidStorage(world, pos); } + + @Override + public String getNodeId() { + return NetworkNodeFluidStorage.ID; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileImporter.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileImporter.java index ba8f99c4a..25048ed17 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileImporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileImporter.java @@ -26,4 +26,9 @@ public class TileImporter extends TileNode { public NetworkNodeImporter createNode(World world, BlockPos pos) { return new NetworkNodeImporter(world, pos); } + + @Override + public String getNodeId() { + return NetworkNodeImporter.ID; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileInterface.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileInterface.java index bbe5fef8a..934fa2c79 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileInterface.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileInterface.java @@ -38,4 +38,9 @@ public class TileInterface extends TileNode { public NetworkNodeInterface createNode(World world, BlockPos pos) { return new NetworkNodeInterface(world, pos); } + + @Override + public String getNodeId() { + return NetworkNodeInterface.ID; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNetworkReceiver.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNetworkReceiver.java index 345f898f6..613feb900 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNetworkReceiver.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNetworkReceiver.java @@ -12,4 +12,9 @@ public class TileNetworkReceiver extends TileNode { public NetworkNodeNetworkReceiver createNode(World world, BlockPos pos) { return new NetworkNodeNetworkReceiver(world, pos); } + + @Override + public String getNodeId() { + return NetworkNodeNetworkReceiver.ID; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNetworkTransmitter.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNetworkTransmitter.java index cd8416c84..f3b97320e 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNetworkTransmitter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNetworkTransmitter.java @@ -49,6 +49,11 @@ public class TileNetworkTransmitter extends TileNode capability, @Nullable EnumFacing facing) { return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY || super.hasCapability(capability, facing); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNode.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNode.java index 9b5aba4c8..f790ab145 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNode.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNode.java @@ -102,8 +102,8 @@ public abstract class TileNode extends TileBase implement INetworkNodeManager manager = API.instance().getNetworkNodeManager(world); NetworkNode node = (NetworkNode) manager.getNode(pos); - - if (node == null) { + + if (node == null || !node.getId().equals(getNodeId())) { manager.setNode(pos, node = createNode(world, pos)); manager.markForSaving(); } @@ -112,16 +112,7 @@ public abstract class TileNode extends TileBase implement doLegacyCheck(node); } - N castedNode; - - try { - castedNode = (N) node; - } catch (ClassCastException e) { - manager.setNode(pos, castedNode = createNode(world, pos)); - manager.markForSaving(); - } - - return castedNode; + return (N) node; } private void doLegacyCheck(NetworkNode node) { @@ -149,6 +140,8 @@ public abstract class TileNode extends TileBase implement public abstract N createNode(World world, BlockPos pos); + public abstract String getNodeId(); + @Override public boolean hasCapability(@Nonnull Capability capability, @Nullable EnumFacing side) { if (capability == CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileReader.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileReader.java index 67b9178c6..28d41d1cb 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileReader.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileReader.java @@ -139,4 +139,9 @@ public class TileReader extends TileNode { public NetworkNodeReader createNode(World world, BlockPos pos) { return new NetworkNodeReader(world, pos); } + + @Override + public String getNodeId() { + return NetworkNodeReader.ID; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileRelay.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileRelay.java index e09bcfd6b..464594075 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileRelay.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileRelay.java @@ -12,4 +12,9 @@ public class TileRelay extends TileNode { public NetworkNodeRelay createNode(World world, BlockPos pos) { return new NetworkNodeRelay(world, pos); } + + @Override + public String getNodeId() { + return NetworkNodeRelay.ID; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileSecurityManager.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileSecurityManager.java index b66cdb752..50569666a 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileSecurityManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileSecurityManager.java @@ -12,4 +12,9 @@ public class TileSecurityManager extends TileNode { public NetworkNodeSecurityManager createNode(World world, BlockPos pos) { return new NetworkNodeSecurityManager(world, pos); } + + @Override + public String getNodeId() { + return NetworkNodeSecurityManager.ID; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileSolderer.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileSolderer.java index ceb052154..be317b4cb 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileSolderer.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileSolderer.java @@ -95,4 +95,9 @@ public class TileSolderer extends TileNode { public NetworkNodeSolderer createNode(World world, BlockPos pos) { return new NetworkNodeSolderer(world, pos); } + + @Override + public String getNodeId() { + return NetworkNodeSolderer.ID; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileStorage.java index 6011d7b18..36161d46e 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileStorage.java @@ -38,4 +38,9 @@ public class TileStorage extends TileNode { public NetworkNodeStorage createNode(World world, BlockPos pos) { return new NetworkNodeStorage(world, pos); } + + @Override + public String getNodeId() { + return NetworkNodeStorage.ID; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileStorageMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileStorageMonitor.java index 0be3fd98f..aa0dbb26c 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileStorageMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileStorageMonitor.java @@ -35,6 +35,11 @@ public class TileStorageMonitor extends TileNode { return new NetworkNodeStorageMonitor(world, pos); } + @Override + public String getNodeId() { + return NetworkNodeStorageMonitor.ID; + } + @Override public NBTTagCompound writeUpdate(NBTTagCompound tag) { super.writeUpdate(tag); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileWirelessTransmitter.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileWirelessTransmitter.java index 8173ca4f1..76b006830 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileWirelessTransmitter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileWirelessTransmitter.java @@ -26,4 +26,9 @@ public class TileWirelessTransmitter extends TileNode { public NetworkNodeWriter createNode(World world, BlockPos pos) { return new NetworkNodeWriter(world, pos); } + + @Override + public String getNodeId() { + return NetworkNodeWriter.ID; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/TileCraftingMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/TileCraftingMonitor.java index 658a3b4d9..f6c973dbe 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/TileCraftingMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/TileCraftingMonitor.java @@ -41,4 +41,9 @@ public class TileCraftingMonitor extends TileNode { public NetworkNodeCraftingMonitor createNode(World world, BlockPos pos) { return new NetworkNodeCraftingMonitor(world, pos); } + + @Override + public String getNodeId() { + return NetworkNodeCraftingMonitor.ID; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/TileGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/TileGrid.java index 07855f4c5..5b35f1dbc 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/TileGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/TileGrid.java @@ -146,4 +146,9 @@ public class TileGrid extends TileNode { public NetworkNodeGrid createNode(World world, BlockPos pos) { return new NetworkNodeGrid(world, pos); } + + @Override + public String getNodeId() { + return NetworkNodeGrid.ID; + } }