One more fix for connecting panels using connectors after the panel and the controller have been placed
(back-port from 1.12 via 1.11)
This commit is contained in:
parent
6c66ce648a
commit
6ca8ca5a0a
|
@ -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;
|
||||
|
|
|
@ -165,7 +165,7 @@ public class TileEntityRSPanelConn extends TileEntityImmersiveConnectable implem
|
|||
Consumer<byte[]> 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<byte[]> 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");
|
||||
|
|
Loading…
Reference in a new issue