diff --git a/src/main/java/malte0811/industrialWires/blocks/controlpanel/TileEntityPanel.java b/src/main/java/malte0811/industrialWires/blocks/controlpanel/TileEntityPanel.java index 929dfec..745a8e3 100644 --- a/src/main/java/malte0811/industrialWires/blocks/controlpanel/TileEntityPanel.java +++ b/src/main/java/malte0811/industrialWires/blocks/controlpanel/TileEntityPanel.java @@ -304,7 +304,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 646510a..2a114b5 100644 --- a/src/main/java/malte0811/industrialWires/blocks/controlpanel/TileEntityRSPanelConn.java +++ b/src/main/java/malte0811/industrialWires/blocks/controlpanel/TileEntityRSPanelConn.java @@ -165,7 +165,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); } @@ -173,19 +173,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); } @@ -281,7 +283,7 @@ public class TileEntityRSPanelConn extends TileEntityImmersiveConnectable implem public void onChunkUnload() { super.onChunkUnload(); for (TileEntityPanel panel : connectedPanels) { - unregisterPanel(panel, false); + unregisterPanel(panel, false, true); } } @@ -289,7 +291,7 @@ public class TileEntityRSPanelConn extends TileEntityImmersiveConnectable implem public void invalidate() { super.invalidate(); for (TileEntityPanel panel : connectedPanels) { - unregisterPanel(panel, false); + unregisterPanel(panel, false, true); } } @@ -302,7 +304,7 @@ public class TileEntityRSPanelConn extends TileEntityImmersiveConnectable implem TileEntity te = worldObj.getTileEntity(bp); if (te instanceof TileEntityPanel) { tes.add((TileEntityPanel) te); - unregisterPanel((TileEntityPanel) te, true); + unregisterPanel((TileEntityPanel) te, true, true); } } id = nbt.getInteger("rsId");