Don't interact with other TE's in onChunkUnload, closes #12
This commit is contained in:
parent
a42a662a06
commit
baa091b9a4
10 changed files with 13 additions and 19 deletions
|
@ -30,7 +30,7 @@ sourceCompatibility = 1.8
|
||||||
targetCompatibility = 1.8
|
targetCompatibility = 1.8
|
||||||
|
|
||||||
minecraft {
|
minecraft {
|
||||||
version = "13.20.0.2282"
|
version = "13.20.1.2393"
|
||||||
runDir = "run"
|
runDir = "run"
|
||||||
|
|
||||||
replace '${version}', project.version
|
replace '${version}', project.version
|
||||||
|
|
|
@ -57,6 +57,7 @@ public class TileEntityPanel extends TileEntityIWBase implements IDirectionalTil
|
||||||
public boolean firstTick = true;
|
public boolean firstTick = true;
|
||||||
// non-rendered properties
|
// non-rendered properties
|
||||||
private Set<TileEntityRSPanelConn> rsPorts = new HashSet<>();
|
private Set<TileEntityRSPanelConn> rsPorts = new HashSet<>();
|
||||||
|
private boolean renderUpdate;
|
||||||
|
|
||||||
{
|
{
|
||||||
for (int i = 2; i < 14; i++) {
|
for (int i = 2; i < 14; i++) {
|
||||||
|
@ -95,6 +96,13 @@ public class TileEntityPanel extends TileEntityIWBase implements IDirectionalTil
|
||||||
}
|
}
|
||||||
firstTick = false;
|
firstTick = false;
|
||||||
}
|
}
|
||||||
|
if (renderUpdate) {
|
||||||
|
IBlockState state = world.getBlockState(pos);
|
||||||
|
world.notifyBlockUpdate(pos, state, state, 3);
|
||||||
|
world.addBlockEvent(pos, state.getBlock(), 255, 0);
|
||||||
|
markDirty();
|
||||||
|
renderUpdate = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -277,9 +285,7 @@ public class TileEntityPanel extends TileEntityIWBase implements IDirectionalTil
|
||||||
}
|
}
|
||||||
|
|
||||||
public void triggerRenderUpdate() {
|
public void triggerRenderUpdate() {
|
||||||
IBlockState state = world.getBlockState(pos);
|
renderUpdate = true;
|
||||||
world.notifyBlockUpdate(pos, state, state, 3);
|
|
||||||
world.addBlockEvent(pos, state.getBlock(), 255, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void registerRS(TileEntityRSPanelConn te) {
|
public void registerRS(TileEntityRSPanelConn te) {
|
||||||
|
|
|
@ -67,7 +67,6 @@ public class CoveredToggleSwitch extends ToggleSwitch {
|
||||||
state = state.next();
|
state = state.next();
|
||||||
}
|
}
|
||||||
setOut(state.active, tile);
|
setOut(state.active, tile);
|
||||||
tile.markDirty();
|
|
||||||
tile.triggerRenderUpdate();
|
tile.triggerRenderUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -124,7 +124,6 @@ public class IndicatorLight extends PanelComponent implements IConfigurableCompo
|
||||||
private Consumer<byte[]> handler = (input) -> {
|
private Consumer<byte[]> handler = (input) -> {
|
||||||
if (input[rsInputChannel] != rsInput) {
|
if (input[rsInputChannel] != rsInput) {
|
||||||
rsInput = input[rsInputChannel];
|
rsInput = input[rsInputChannel];
|
||||||
panel.markDirty();
|
|
||||||
panel.triggerRenderUpdate();
|
panel.triggerRenderUpdate();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -122,7 +122,6 @@ public class LightedButton extends PanelComponent implements IConfigurableCompon
|
||||||
if (!latching) {
|
if (!latching) {
|
||||||
ticksTillOff = 10;
|
ticksTillOff = 10;
|
||||||
}
|
}
|
||||||
tile.markDirty();
|
|
||||||
tile.triggerRenderUpdate();
|
tile.triggerRenderUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -157,12 +156,11 @@ public class LightedButton extends PanelComponent implements IConfigurableCompon
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void invalidate(TileEntityPanel te) {
|
public void invalidate(TileEntityPanel te) {
|
||||||
setOut(false, te);
|
setOut(rsOutputChannel, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setOut(boolean on, TileEntityPanel tile) {
|
private void setOut(boolean on, TileEntityPanel tile) {
|
||||||
active = on;
|
active = on;
|
||||||
tile.markDirty();
|
|
||||||
tile.triggerRenderUpdate();
|
tile.triggerRenderUpdate();
|
||||||
setOut(rsOutputChannel, active ? 15 : 0);
|
setOut(rsOutputChannel, active ? 15 : 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,7 +197,6 @@ public class Lock extends PanelComponent implements IConfigurableComponent {
|
||||||
ticksTillOff = 10;
|
ticksTillOff = 10;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tile.markDirty();
|
|
||||||
tile.triggerRenderUpdate();
|
tile.triggerRenderUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -208,7 +207,6 @@ public class Lock extends PanelComponent implements IConfigurableComponent {
|
||||||
tile.markDirty();
|
tile.markDirty();
|
||||||
if (ticksTillOff == 0) {
|
if (ticksTillOff == 0) {
|
||||||
turned = false;
|
turned = false;
|
||||||
tile.markDirty();
|
|
||||||
tile.triggerRenderUpdate();
|
tile.triggerRenderUpdate();
|
||||||
setOut(tile);
|
setOut(tile);
|
||||||
}
|
}
|
||||||
|
@ -241,11 +239,10 @@ public class Lock extends PanelComponent implements IConfigurableComponent {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void invalidate(TileEntityPanel te) {
|
public void invalidate(TileEntityPanel te) {
|
||||||
setOut(te);
|
setOut(rsOutputChannel, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setOut(TileEntityPanel tile) {
|
private void setOut(TileEntityPanel tile) {
|
||||||
tile.markDirty();
|
|
||||||
tile.triggerRenderUpdate();
|
tile.triggerRenderUpdate();
|
||||||
setOut(rsOutputChannel, turned ? 15 : 0);
|
setOut(rsOutputChannel, turned ? 15 : 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -191,7 +191,6 @@ public class PanelMeter extends PanelComponent implements IConfigurableComponent
|
||||||
private Consumer<byte[]> handler = (input) -> {
|
private Consumer<byte[]> handler = (input) -> {
|
||||||
if (input[rsInputChannel] != rsInput) {
|
if (input[rsInputChannel] != rsInput) {
|
||||||
rsInput = input[rsInputChannel];
|
rsInput = input[rsInputChannel];
|
||||||
panel.markDirty();
|
|
||||||
panel.triggerRenderUpdate();
|
panel.triggerRenderUpdate();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -134,7 +134,6 @@ public class Slider extends PanelComponent implements IConfigurableComponent {
|
||||||
if (newLevel != out) {
|
if (newLevel != out) {
|
||||||
setOut(rsChannel, newLevel);
|
setOut(rsChannel, newLevel);
|
||||||
out = newLevel;
|
out = newLevel;
|
||||||
tile.markDirty();
|
|
||||||
tile.triggerRenderUpdate();
|
tile.triggerRenderUpdate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -119,7 +119,6 @@ public class ToggleSwitch extends PanelComponent implements IConfigurableCompone
|
||||||
@Override
|
@Override
|
||||||
public void interactWith(Vec3d hitRel, TileEntityPanel tile, EntityPlayerMP player) {
|
public void interactWith(Vec3d hitRel, TileEntityPanel tile, EntityPlayerMP player) {
|
||||||
setOut(!active, tile);
|
setOut(!active, tile);
|
||||||
tile.markDirty();
|
|
||||||
tile.triggerRenderUpdate();
|
tile.triggerRenderUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -161,12 +160,11 @@ public class ToggleSwitch extends PanelComponent implements IConfigurableCompone
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void invalidate(TileEntityPanel te) {
|
public void invalidate(TileEntityPanel te) {
|
||||||
setOut(false, te);
|
setOut(rsOutputChannel, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setOut(boolean on, TileEntityPanel tile) {
|
protected void setOut(boolean on, TileEntityPanel tile) {
|
||||||
active = on;
|
active = on;
|
||||||
tile.markDirty();
|
|
||||||
tile.triggerRenderUpdate();
|
tile.triggerRenderUpdate();
|
||||||
setOut(rsOutputChannel, active ? 15 : 0);
|
setOut(rsOutputChannel, active ? 15 : 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -152,7 +152,6 @@ public class Variac extends PanelComponent implements IConfigurableComponent {
|
||||||
if (newLevel != out) {
|
if (newLevel != out) {
|
||||||
setOut(rsChannel, newLevel);
|
setOut(rsChannel, newLevel);
|
||||||
out = newLevel;
|
out = newLevel;
|
||||||
tile.markDirty();
|
|
||||||
tile.triggerRenderUpdate();
|
tile.triggerRenderUpdate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue