From efb0065ebd3a37df5c32bca9c5fbdea8783e773e Mon Sep 17 00:00:00 2001 From: SquidDev Date: Tue, 16 May 2017 15:59:09 +0100 Subject: [PATCH] Add config option to disable certain error messages --- src/main/java/dan200/computercraft/ComputerCraft.java | 6 ++++++ .../computercraft/core/computer/ComputerThread.java | 2 +- .../dan200/computercraft/core/lua/LuaJLuaMachine.java | 10 ++++++++-- .../computercraft/shared/computer/apis/CommandAPI.java | 10 ++++++++-- .../shared/proxy/CCTurtleProxyCommon.java | 2 +- .../resources/assets/computercraft/lang/en_US.lang | 1 + 6 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/main/java/dan200/computercraft/ComputerCraft.java b/src/main/java/dan200/computercraft/ComputerCraft.java index 448b08c26..1ed5e4e7e 100644 --- a/src/main/java/dan200/computercraft/ComputerCraft.java +++ b/src/main/java/dan200/computercraft/ComputerCraft.java @@ -107,6 +107,7 @@ public class ComputerCraft public static String http_whitelist = "*"; public static boolean disable_lua51_features = false; public static String default_computer_settings = ""; + public static boolean logPeripheralErrors = true; public static boolean enableCommandBlock = false; public static boolean turtlesNeedFuel = true; @@ -180,6 +181,7 @@ public class ComputerCraft public static Property http_whitelist; public static Property disable_lua51_features; public static Property default_computer_settings; + public static Property logPeripheralErrors; public static Property enableCommandBlock; public static Property turtlesNeedFuel; @@ -253,6 +255,10 @@ public class ComputerCraft Config.default_computer_settings = Config.config.get( Configuration.CATEGORY_GENERAL, "default_computer_settings", default_computer_settings ); Config.default_computer_settings.setComment( "A comma seperated list of default system settings to set on new computers. Example: \"shell.autocomplete=false,lua.autocomplete=false,edit.autocomplete=false\" will disable all autocompletion" ); + Config.logPeripheralErrors = Config.config.get( Configuration.CATEGORY_GENERAL, "logPeripheralErrors", logPeripheralErrors ); + Config.logPeripheralErrors.setComment( "Log exceptions thrown by peripherals and other Lua objects.\n" + + "This makes it easier for mod authors to debug problems, but may result in log spam should people use buggy methods." ); + Config.enableCommandBlock = Config.config.get( Configuration.CATEGORY_GENERAL, "enableCommandBlock", enableCommandBlock ); Config.enableCommandBlock.setComment( "Enable Command Block peripheral support" ); diff --git a/src/main/java/dan200/computercraft/core/computer/ComputerThread.java b/src/main/java/dan200/computercraft/core/computer/ComputerThread.java index 4eda28037..f84a2e5c8 100644 --- a/src/main/java/dan200/computercraft/core/computer/ComputerThread.java +++ b/src/main/java/dan200/computercraft/core/computer/ComputerThread.java @@ -140,7 +140,7 @@ public class ComputerThread // Step 3: abandon if( worker.isAlive() ) { - ComputerCraft.log.warn( "Failed to abort Computer " + computer.getID() + ". Dangling lua thread could cause errors." ); + // ComputerCraft.log.warn( "Failed to abort Computer " + computer.getID() + ". Dangling lua thread could cause errors." ); worker.interrupt(); } } diff --git a/src/main/java/dan200/computercraft/core/lua/LuaJLuaMachine.java b/src/main/java/dan200/computercraft/core/lua/LuaJLuaMachine.java index 8da8bab3c..574aed974 100644 --- a/src/main/java/dan200/computercraft/core/lua/LuaJLuaMachine.java +++ b/src/main/java/dan200/computercraft/core/lua/LuaJLuaMachine.java @@ -415,7 +415,10 @@ public class LuaJLuaMachine implements ILuaMachine } catch( Throwable t ) { - ComputerCraft.log.error( "Error running task", t); + if( ComputerCraft.logPeripheralErrors ) + { + ComputerCraft.log.error( "Error running task", t ); + } m_computer.queueEvent( "task_complete", new Object[] { taskID, false, "Java Exception Thrown: " + t.toString() } ); @@ -482,7 +485,10 @@ public class LuaJLuaMachine implements ILuaMachine } catch( Throwable t ) { - ComputerCraft.log.error( "Error calling " + methodName + " on " + apiObject, t ); + if( ComputerCraft.logPeripheralErrors ) + { + ComputerCraft.log.error( "Error calling " + methodName + " on " + apiObject, t ); + } throw new LuaError( "Java Exception Thrown: " + t.toString(), 0 ); } return LuaValue.varargsOf( toValues( results, 0 ) ); diff --git a/src/main/java/dan200/computercraft/shared/computer/apis/CommandAPI.java b/src/main/java/dan200/computercraft/shared/computer/apis/CommandAPI.java index 26f307f60..2f6f54cf1 100644 --- a/src/main/java/dan200/computercraft/shared/computer/apis/CommandAPI.java +++ b/src/main/java/dan200/computercraft/shared/computer/apis/CommandAPI.java @@ -99,7 +99,10 @@ public class CommandAPI implements ILuaAPI } catch( Throwable t ) { - ComputerCraft.log.error( "Error running command.", t ); + if( ComputerCraft.logPeripheralErrors ) + { + ComputerCraft.log.error( "Error running command.", t ); + } return new Object[]{ false, createOutput( "Java Exception Thrown: " + t.toString() ) }; } } @@ -210,7 +213,10 @@ public class CommandAPI implements ILuaAPI catch( Throwable t ) { // Ignore buggy command - ComputerCraft.log.error( "Error running command.", t ); + if( ComputerCraft.logPeripheralErrors ) + { + ComputerCraft.log.error( "Error running command.", t ); + } } } } diff --git a/src/main/java/dan200/computercraft/shared/proxy/CCTurtleProxyCommon.java b/src/main/java/dan200/computercraft/shared/proxy/CCTurtleProxyCommon.java index b5d12a48b..928cb97fc 100644 --- a/src/main/java/dan200/computercraft/shared/proxy/CCTurtleProxyCommon.java +++ b/src/main/java/dan200/computercraft/shared/proxy/CCTurtleProxyCommon.java @@ -119,7 +119,7 @@ public abstract class CCTurtleProxyCommon implements ICCTurtleProxy } catch( Exception e ) { - ComputerCraft.log.error("Error checking stackability of items", e); + ComputerCraft.log.error("Error getting computer upgrade item", e); } } return null; diff --git a/src/main/resources/assets/computercraft/lang/en_US.lang b/src/main/resources/assets/computercraft/lang/en_US.lang index 98361fac9..18ee56160 100644 --- a/src/main/resources/assets/computercraft/lang/en_US.lang +++ b/src/main/resources/assets/computercraft/lang/en_US.lang @@ -44,6 +44,7 @@ gui.computercraft:config.http_enable=Enable HTTP API gui.computercraft:config.http_whitelist=HTTP whitelist gui.computercraft:config.disable_lua51_features=Disable Lua 5.1 features gui.computercraft:config.default_computer_settings=Default Computer settings +gui.computercraft:config.log_peripheral_errors=Log peripheral errors gui.computercraft:config.enable_command_block=Enable command block peripheral gui.computercraft:config.modem_range=Modem range (default) gui.computercraft:config.modem_high_altitude_range=Modem range (high-altitude)