diff --git a/src/main/java/de/saschat/createcomputing/peripherals/handles/RedstoneHandle.java b/src/main/java/de/saschat/createcomputing/peripherals/handles/RedstoneHandle.java index 8562018..fdaceee 100644 --- a/src/main/java/de/saschat/createcomputing/peripherals/handles/RedstoneHandle.java +++ b/src/main/java/de/saschat/createcomputing/peripherals/handles/RedstoneHandle.java @@ -38,14 +38,13 @@ public ComputerizedRedstoneLinkTile.LinkPair getHandle() throws LuaException { return linkPair; } - @LuaFunction(mainThread = true) + @LuaFunction(mainThread = false) public final void setSignal(IArguments arguments) throws LuaException { isOpen(); int value = arguments.getInt(0); - System.out.println("sx: " + value); getHandle().provideSignal(value); } - @LuaFunction(mainThread = true) + @LuaFunction(mainThread = false) public final int getSignal(IArguments arguments) throws LuaException { isOpen(); return getHandle().retrieveSignal(); diff --git a/src/main/java/de/saschat/createcomputing/tiles/ComputerizedRedstoneLinkTile.java b/src/main/java/de/saschat/createcomputing/tiles/ComputerizedRedstoneLinkTile.java index 137dea5..0d065b0 100644 --- a/src/main/java/de/saschat/createcomputing/tiles/ComputerizedRedstoneLinkTile.java +++ b/src/main/java/de/saschat/createcomputing/tiles/ComputerizedRedstoneLinkTile.java @@ -155,6 +155,7 @@ public static class LinkPair { public boolean registered = false; + public boolean dirty = false; public int sendSignal = 0; public int recvSignal = 0; ComputerizedRedstoneLinkTile parent; @@ -218,13 +219,16 @@ public int retrieveSignal() { private void dirty() { if (parent.getLevel().isClientSide()) return; + if (dirty) return; + dirty = true; parent.tasks.add(this::_dirty); - parent.setChanged(); } private void _dirty() { + dirty = false; transmit.notifySignalChange(); receive.notifySignalChange(); + parent.setChanged(); } private void setSignal(int i) {