From 78e468dec82c913e7655b845830ea28445d3feed Mon Sep 17 00:00:00 2001 From: malte0811 Date: Sun, 13 Aug 2017 22:14:56 +0200 Subject: [PATCH] Don't interact with other TE's in onChunkUnload, closes #12 (back-ported from 1.11) --- .../blocks/controlpanel/TileEntityPanel.java | 12 +++++++++--- .../controlpanel/CoveredToggleSwitch.java | 1 - .../industrialWires/controlpanel/IndicatorLight.java | 1 - .../industrialWires/controlpanel/LightedButton.java | 4 +--- .../malte0811/industrialWires/controlpanel/Lock.java | 5 +---- .../industrialWires/controlpanel/Slider.java | 1 - .../industrialWires/controlpanel/ToggleSwitch.java | 4 +--- .../industrialWires/controlpanel/Variac.java | 1 - 8 files changed, 12 insertions(+), 17 deletions(-) diff --git a/src/main/java/malte0811/industrialWires/blocks/controlpanel/TileEntityPanel.java b/src/main/java/malte0811/industrialWires/blocks/controlpanel/TileEntityPanel.java index 745a8e3..6e70047 100644 --- a/src/main/java/malte0811/industrialWires/blocks/controlpanel/TileEntityPanel.java +++ b/src/main/java/malte0811/industrialWires/blocks/controlpanel/TileEntityPanel.java @@ -57,6 +57,7 @@ public class TileEntityPanel extends TileEntityIWBase implements IDirectionalTil public boolean firstTick = true; // non-rendered properties private Set rsPorts = new HashSet<>(); + private boolean renderUpdate; { for (int i = 2; i < 14; i++) { @@ -100,6 +101,13 @@ public class TileEntityPanel extends TileEntityIWBase implements IDirectionalTil } firstTick = false; } + if (renderUpdate) { + IBlockState state = worldObj.getBlockState(pos); + worldObj.notifyBlockUpdate(pos, state, state, 3); + worldObj.addBlockEvent(pos, state.getBlock(), 255, 0); + markDirty(); + renderUpdate = false; + } } } @@ -278,9 +286,7 @@ public class TileEntityPanel extends TileEntityIWBase implements IDirectionalTil } public void triggerRenderUpdate() { - IBlockState state = worldObj.getBlockState(pos); - worldObj.notifyBlockUpdate(pos, state, state, 3); - worldObj.addBlockEvent(pos, state.getBlock(), 255, 0); + renderUpdate = true; } public void registerRS(TileEntityRSPanelConn te) { diff --git a/src/main/java/malte0811/industrialWires/controlpanel/CoveredToggleSwitch.java b/src/main/java/malte0811/industrialWires/controlpanel/CoveredToggleSwitch.java index 9d9d6d3..438b4c8 100644 --- a/src/main/java/malte0811/industrialWires/controlpanel/CoveredToggleSwitch.java +++ b/src/main/java/malte0811/industrialWires/controlpanel/CoveredToggleSwitch.java @@ -67,7 +67,6 @@ public class CoveredToggleSwitch extends ToggleSwitch { state = state.next(); } setOut(state.active, tile); - tile.markDirty(); tile.triggerRenderUpdate(); } diff --git a/src/main/java/malte0811/industrialWires/controlpanel/IndicatorLight.java b/src/main/java/malte0811/industrialWires/controlpanel/IndicatorLight.java index 9ad1250..38413df 100644 --- a/src/main/java/malte0811/industrialWires/controlpanel/IndicatorLight.java +++ b/src/main/java/malte0811/industrialWires/controlpanel/IndicatorLight.java @@ -126,7 +126,6 @@ public class IndicatorLight extends PanelComponent implements IConfigurableCompo private Consumer handler = (input) -> { if (input[rsInputChannel] != rsInput) { rsInput = input[rsInputChannel]; - panel.markDirty(); panel.triggerRenderUpdate(); } }; diff --git a/src/main/java/malte0811/industrialWires/controlpanel/LightedButton.java b/src/main/java/malte0811/industrialWires/controlpanel/LightedButton.java index 32991e8..7196c00 100644 --- a/src/main/java/malte0811/industrialWires/controlpanel/LightedButton.java +++ b/src/main/java/malte0811/industrialWires/controlpanel/LightedButton.java @@ -125,7 +125,6 @@ public class LightedButton extends PanelComponent implements IConfigurableCompon if (!latching) { ticksTillOff = 10; } - tile.markDirty(); tile.triggerRenderUpdate(); } @@ -160,12 +159,11 @@ public class LightedButton extends PanelComponent implements IConfigurableCompon @Override public void invalidate(TileEntityPanel te) { - setOut(false, te); + setOut(rsOutputChannel, 0); } private void setOut(boolean on, TileEntityPanel tile) { active = on; - tile.markDirty(); tile.triggerRenderUpdate(); setOut(rsOutputChannel, active ? 15 : 0); } diff --git a/src/main/java/malte0811/industrialWires/controlpanel/Lock.java b/src/main/java/malte0811/industrialWires/controlpanel/Lock.java index d78f185..602d193 100644 --- a/src/main/java/malte0811/industrialWires/controlpanel/Lock.java +++ b/src/main/java/malte0811/industrialWires/controlpanel/Lock.java @@ -196,7 +196,6 @@ public class Lock extends PanelComponent implements IConfigurableComponent { ticksTillOff = 10; } } - tile.markDirty(); tile.triggerRenderUpdate(); } @@ -207,7 +206,6 @@ public class Lock extends PanelComponent implements IConfigurableComponent { tile.markDirty(); if (ticksTillOff == 0) { turned = false; - tile.markDirty(); tile.triggerRenderUpdate(); setOut(tile); } @@ -240,11 +238,10 @@ public class Lock extends PanelComponent implements IConfigurableComponent { @Override public void invalidate(TileEntityPanel te) { - setOut(te); + setOut(rsOutputChannel, 0); } private void setOut(TileEntityPanel tile) { - tile.markDirty(); tile.triggerRenderUpdate(); setOut(rsOutputChannel, turned ? 15 : 0); } diff --git a/src/main/java/malte0811/industrialWires/controlpanel/Slider.java b/src/main/java/malte0811/industrialWires/controlpanel/Slider.java index 46b849f..0dcefbf 100644 --- a/src/main/java/malte0811/industrialWires/controlpanel/Slider.java +++ b/src/main/java/malte0811/industrialWires/controlpanel/Slider.java @@ -134,7 +134,6 @@ public class Slider extends PanelComponent implements IConfigurableComponent { if (newLevel != out) { setOut(rsChannel, newLevel); out = newLevel; - tile.markDirty(); tile.triggerRenderUpdate(); } } diff --git a/src/main/java/malte0811/industrialWires/controlpanel/ToggleSwitch.java b/src/main/java/malte0811/industrialWires/controlpanel/ToggleSwitch.java index 25b1fa1..0750f5e 100644 --- a/src/main/java/malte0811/industrialWires/controlpanel/ToggleSwitch.java +++ b/src/main/java/malte0811/industrialWires/controlpanel/ToggleSwitch.java @@ -119,7 +119,6 @@ public class ToggleSwitch extends PanelComponent implements IConfigurableCompone @Override public void interactWith(Vec3d hitRel, TileEntityPanel tile, EntityPlayerMP player) { setOut(!active, tile); - tile.markDirty(); tile.triggerRenderUpdate(); } @@ -161,12 +160,11 @@ public class ToggleSwitch extends PanelComponent implements IConfigurableCompone @Override public void invalidate(TileEntityPanel te) { - setOut(false, te); + setOut(rsOutputChannel, 0); } protected void setOut(boolean on, TileEntityPanel tile) { active = on; - tile.markDirty(); tile.triggerRenderUpdate(); setOut(rsOutputChannel, active ? 15 : 0); } diff --git a/src/main/java/malte0811/industrialWires/controlpanel/Variac.java b/src/main/java/malte0811/industrialWires/controlpanel/Variac.java index f9396e6..094cdf9 100644 --- a/src/main/java/malte0811/industrialWires/controlpanel/Variac.java +++ b/src/main/java/malte0811/industrialWires/controlpanel/Variac.java @@ -152,7 +152,6 @@ public class Variac extends PanelComponent implements IConfigurableComponent { if (newLevel != out) { setOut(rsChannel, newLevel); out = newLevel; - tile.markDirty(); tile.triggerRenderUpdate(); } }