From 2874f4720a01c2d23e4f0d96898c8df6f923a0c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Mon, 6 Jun 2016 20:52:54 +0200 Subject: [PATCH] Added IMC message to notify OC of a 3rd party power system. Closes #1784. --- src/main/java/li/cil/oc/api/IMC.java | 11 +++++++++++ src/main/scala/li/cil/oc/Settings.scala | 3 ++- src/main/scala/li/cil/oc/common/IMC.scala | 3 +++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/li/cil/oc/api/IMC.java b/src/main/java/li/cil/oc/api/IMC.java index 3e2d7c5a3..4cf7a391b 100644 --- a/src/main/java/li/cil/oc/api/IMC.java +++ b/src/main/java/li/cil/oc/api/IMC.java @@ -361,6 +361,17 @@ public final class IMC { FMLInterModComms.sendMessage(MOD_ID, "blacklistHost", nbt); } + /** + * Notifies OpenComputers that there is some 3rd-party power system present + * that adds integration on its side. + *

+ * This will suppress the "no power system found" message on start up, and + * avoid auto-disabling power use. + */ + public static void registerCustomPowerSystem() { + FMLInterModComms.sendMessage(MOD_ID, "registerCustomPowerSystem", "true"); + } + // ----------------------------------------------------------------------- // private static final String MOD_ID = "OpenComputers"; diff --git a/src/main/scala/li/cil/oc/Settings.scala b/src/main/scala/li/cil/oc/Settings.scala index 801a3bb0d..bb38fce98 100644 --- a/src/main/scala/li/cil/oc/Settings.scala +++ b/src/main/scala/li/cil/oc/Settings.scala @@ -135,8 +135,9 @@ class Settings(val config: Config) { // ----------------------------------------------------------------------- // // power + var is3rdPartyPowerSystemPresent = false val pureIgnorePower = config.getBoolean("power.ignorePower") - lazy val ignorePower = pureIgnorePower || !Mods.isPowerProvidingModPresent + lazy val ignorePower = pureIgnorePower || (!is3rdPartyPowerSystemPresent && !Mods.isPowerProvidingModPresent) val tickFrequency = config.getDouble("power.tickFrequency") max 1 val chargeRateExternal = config.getDouble("power.chargerChargeRate") val chargeRateTablet = config.getDouble("power.chargerChargeRateTablet") diff --git a/src/main/scala/li/cil/oc/common/IMC.scala b/src/main/scala/li/cil/oc/common/IMC.scala index 78aba802e..7cdd67891 100644 --- a/src/main/scala/li/cil/oc/common/IMC.scala +++ b/src/main/scala/li/cil/oc/common/IMC.scala @@ -90,6 +90,9 @@ object IMC { case t: Throwable => OpenComputers.log.warn("Failed registering ink provider.", t) } } + else if (message.key == "registerCustomPowerSystem" && message.isStringMessage) { + Settings.get.is3rdPartyPowerSystemPresent = message.getStringValue == "true" + } else { OpenComputers.log.warn(s"Got an unrecognized or invalid IMC message '${message.key}' from mod ${message.getSender}.") }