diff --git a/src/main/java/li/cil/oc/common/asm/SimpleComponentTickHandler.java b/src/main/java/li/cil/oc/common/asm/SimpleComponentTickHandler.java index de9e5f25a..5667ae503 100644 --- a/src/main/java/li/cil/oc/common/asm/SimpleComponentTickHandler.java +++ b/src/main/java/li/cil/oc/common/asm/SimpleComponentTickHandler.java @@ -5,12 +5,16 @@ import cpw.mods.fml.common.gameevent.TickEvent; import li.cil.oc.api.Network; import li.cil.oc.util.SideTracker; import net.minecraft.tileentity.TileEntity; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.util.ArrayList; // This class is used for adding simple components to the component network. // It is triggered from a validate call, and executed in the next update tick. public final class SimpleComponentTickHandler { + private static final Logger log = LogManager.getLogger("OpenComputers"); + public static final ArrayList pending = new java.util.ArrayList(); public static final SimpleComponentTickHandler Instance = new SimpleComponentTickHandler(); @@ -40,7 +44,11 @@ public final class SimpleComponentTickHandler { pending.clear(); } for (Runnable runnable : adds) { - runnable.run(); + try { + runnable.run(); + } catch (Throwable t) { + log.warn("Error in scheduled tick action.", t); + } } } } diff --git a/src/main/scala/li/cil/oc/server/component/GraphicsCard.scala b/src/main/scala/li/cil/oc/server/component/GraphicsCard.scala index c7d24aa30..f489ab7b8 100644 --- a/src/main/scala/li/cil/oc/server/component/GraphicsCard.scala +++ b/src/main/scala/li/cil/oc/server/component/GraphicsCard.scala @@ -71,6 +71,9 @@ abstract class GraphicsCard extends component.ManagedComponent { } } + @Callback(doc = """function():string -- Get the address of the screen the GPU is currently bound to.""") + def getScreen(context: Context, args: Arguments): Array[AnyRef] = screen(s => result(s.node.address)) + @Callback(direct = true, doc = """function():number, boolean -- Get the current background color and whether it's from the palette or not.""") def getBackground(context: Context, args: Arguments): Array[AnyRef] = screen(s => result(s.getBackgroundColor, s.isBackgroundFromPalette))