From f8f53d243406e76a82b982443bb72390ab913f79 Mon Sep 17 00:00:00 2001 From: malte0811 Date: Mon, 10 Jul 2017 20:50:16 +0200 Subject: [PATCH] One more fix for connecting panels using connectors after the panel and the controller have been placed --- .../blocks/controlpanel/TileEntityPanel.java | 2 +- .../controlpanel/TileEntityRSPanelConn.java | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/main/java/malte0811/industrialWires/blocks/controlpanel/TileEntityPanel.java b/src/main/java/malte0811/industrialWires/blocks/controlpanel/TileEntityPanel.java index 56cb15d..65f0969 100644 --- a/src/main/java/malte0811/industrialWires/blocks/controlpanel/TileEntityPanel.java +++ b/src/main/java/malte0811/industrialWires/blocks/controlpanel/TileEntityPanel.java @@ -303,7 +303,7 @@ public class TileEntityPanel extends TileEntityIWBase implements IDirectionalTil public void removeAllRSCons() { for (TileEntityRSPanelConn rs : rsPorts) { - rs.unregisterPanel(this, true); + rs.unregisterPanel(this, true, false); } rsPorts.clear(); firstTick = true; diff --git a/src/main/java/malte0811/industrialWires/blocks/controlpanel/TileEntityRSPanelConn.java b/src/main/java/malte0811/industrialWires/blocks/controlpanel/TileEntityRSPanelConn.java index 09a4be9..399b99a 100644 --- a/src/main/java/malte0811/industrialWires/blocks/controlpanel/TileEntityRSPanelConn.java +++ b/src/main/java/malte0811/industrialWires/blocks/controlpanel/TileEntityRSPanelConn.java @@ -166,7 +166,7 @@ public class TileEntityRSPanelConn extends TileEntityImmersiveConnectable implem Consumer listener = pc.getRSInputHandler(id, panel); if (listener != null) { changeListeners.add(listener); - listener.accept(out); + listener.accept(network.channelValues); } pc.registerRSOutput(id, rsOut); } @@ -174,19 +174,21 @@ public class TileEntityRSPanelConn extends TileEntityImmersiveConnectable implem connectedPanels.add(panel); } - public void unregisterPanel(TileEntityPanel panel, boolean remove) { + public void unregisterPanel(TileEntityPanel panel, boolean remove, boolean callPanel) { out = new byte[16]; PropertyComponents.PanelRenderProperties p = panel.getComponents(); for (PanelComponent pc : p) { Consumer listener = pc.getRSInputHandler(id, panel); if (listener != null) { - listener.accept(out); + listener.accept(new byte[16]); changeListeners.remove(listener); } pc.unregisterRSOutput(id, rsOut); outputs.remove(new PCWrapper(pc)); } - panel.unregisterRS(this); + if (callPanel) { + panel.unregisterRS(this); + } if (remove) { connectedPanels.remove(panel); } @@ -282,7 +284,7 @@ public class TileEntityRSPanelConn extends TileEntityImmersiveConnectable implem public void onChunkUnload() { super.onChunkUnload(); for (TileEntityPanel panel : connectedPanels) { - unregisterPanel(panel, false); + unregisterPanel(panel, false, true); } } @@ -290,7 +292,7 @@ public class TileEntityRSPanelConn extends TileEntityImmersiveConnectable implem public void invalidate() { super.invalidate(); for (TileEntityPanel panel : connectedPanels) { - unregisterPanel(panel, false); + unregisterPanel(panel, false, true); } } @@ -303,7 +305,7 @@ public class TileEntityRSPanelConn extends TileEntityImmersiveConnectable implem TileEntity te = world.getTileEntity(bp); if (te instanceof TileEntityPanel) { tes.add((TileEntityPanel) te); - unregisterPanel((TileEntityPanel) te, true); + unregisterPanel((TileEntityPanel) te, true, true); } } id = nbt.getInteger("rsId");