From e85f3e1f832ac8a4acfd577fb36e29b59516e57c Mon Sep 17 00:00:00 2001 From: svitoos Date: Sun, 29 Jul 2018 14:47:18 +0300 Subject: [PATCH 1/2] Improved chunkloader upgrade by svitoos change reduced by payonel Namely: - moving setting for chunkloaders, svitoos choice was cleaner - allowing chunkloaders in microcontrollers Closes #2499. --- src/main/resources/application.conf | 22 ++++++++++++------- src/main/scala/li/cil/oc/Settings.scala | 17 +++++++++----- .../opencomputers/ModOpenComputers.scala | 1 - 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/src/main/resources/application.conf b/src/main/resources/application.conf index 0b50c0dca..247c47f49 100644 --- a/src/main/resources/application.conf +++ b/src/main/resources/application.conf @@ -1381,14 +1381,6 @@ opencomputers { # Radius the MFU is able to operate in mfuRange: 3 - - # list of dimension ids blacklisted for the chunk loader upgrade - # a blacklisted dimension blocks a whitelisted dimension - chunkloaderDimensionBlacklist: [] - - # list of dimension ids whitelisted for the chunk loader upgrade - # a non-empty whitelist denies all unlisted dimensions - chunkloaderDimensionWhitelist: [] } # Settings for mod integration (the mod previously known as OpenComponents). @@ -1571,4 +1563,18 @@ opencomputers { # the native C locale). disableLocaleChanging: false } + + # Chunkloader Upgrade settings. + chunkloader { + # This is a list of blacklisted dimensions. Chunkloaders may only be activated + # in dimensions that aren't present in this list. + dimBlacklist: [] + + # This is a list of whitelisted dimensions. Chunkloaders may only be activated + # in dimensions that are present in this list. If this list is empty, + # chunkloaders may be activated to all dimensions not blacklisted. Note that the + # blacklist is always applied, so if an entry is present in both the + # whitelist and the blacklist, the blacklist will win. + dimWhitelist: [] + } } diff --git a/src/main/scala/li/cil/oc/Settings.scala b/src/main/scala/li/cil/oc/Settings.scala index c163339d2..acf150673 100644 --- a/src/main/scala/li/cil/oc/Settings.scala +++ b/src/main/scala/li/cil/oc/Settings.scala @@ -410,6 +410,10 @@ class Settings(val config: Config) { val printsHaveOpacity = config.getBoolean("printer.printsHaveOpacity") val noclipMultiplier = config.getDouble("printer.noclipMultiplier") max 0 + // chunkloader + val chunkloadDimensionBlacklist = Settings.getIntList(config, "chunkloader.dimBlacklist") + val chunkloadDimensionWhitelist = Settings.getIntList(config, "chunkloader.dimWhitelist") + // ----------------------------------------------------------------------- // // integration val modBlacklist = config.getStringList("integration.modBlacklist") @@ -461,11 +465,6 @@ class Settings(val config: Config) { val registerLuaJArchitecture = config.getBoolean("debug.registerLuaJArchitecture") val disableLocaleChanging = config.getBoolean("debug.disableLocaleChanging") - - val chunkloadDimensionBlacklist = if (config.hasPath("misc.chunkloaderDimensionBlacklist")) config.getIntList("misc.chunkloaderDimensionBlacklist") - else new java.util.LinkedList[Integer]() - val chunkloadDimensionWhitelist = if (config.hasPath("misc.chunkloaderDimensionWhitelist")) config.getIntList("misc.chunkloaderDimensionWhitelist") - else new java.util.LinkedList[Integer]() } object Settings { @@ -705,4 +704,12 @@ object Settings { } } } + + def getIntList(config: Config, path: String, default: Option[java.util.List[Integer]] = None): java.util.List[Integer] = { + if (config.hasPath(path)) + config.getIntList(path) + else + default.getOrElse(new java.util.LinkedList[Integer]()) + } } + diff --git a/src/main/scala/li/cil/oc/integration/opencomputers/ModOpenComputers.scala b/src/main/scala/li/cil/oc/integration/opencomputers/ModOpenComputers.scala index 881c5bc97..cfce85a78 100644 --- a/src/main/scala/li/cil/oc/integration/opencomputers/ModOpenComputers.scala +++ b/src/main/scala/li/cil/oc/integration/opencomputers/ModOpenComputers.scala @@ -256,7 +256,6 @@ object ModOpenComputers extends ModProxy { Constants.ItemName.GraphicsCardTier2, Constants.ItemName.GraphicsCardTier3, Constants.ItemName.AngelUpgrade, - Constants.ItemName.ChunkloaderUpgrade, Constants.ItemName.CraftingUpgrade, Constants.ItemName.DatabaseUpgradeTier1, Constants.ItemName.DatabaseUpgradeTier2, From d249367ee9a48660b822bca439d85c2159cdaf49 Mon Sep 17 00:00:00 2001 From: payonel Date: Wed, 31 Oct 2018 02:43:35 -0700 Subject: [PATCH 2/2] fix: a.onDisconnect(a) isn't called on components by microcontroller --- .../scala/li/cil/oc/common/tileentity/Microcontroller.scala | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/scala/li/cil/oc/common/tileentity/Microcontroller.scala b/src/main/scala/li/cil/oc/common/tileentity/Microcontroller.scala index 05a754729..dec3b1829 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/Microcontroller.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/Microcontroller.scala @@ -168,12 +168,12 @@ class Microcontroller extends traits.PowerAcceptor with traits.Hub with traits.C if (node == plug.node) { api.Network.joinNewNetwork(machine.node) machine.node.connect(snooperNode) + connectComponents() } if (plug.isPrimary) plug.node.connect(componentNodes(plug.side.ordinal())) else componentNodes(plug.side.ordinal).remove() - connectComponents() } override protected def onPlugDisconnect(plug: Plug, node: Node) { @@ -182,6 +182,8 @@ class Microcontroller extends traits.PowerAcceptor with traits.Hub with traits.C plug.node.connect(componentNodes(plug.side.ordinal())) else componentNodes(plug.side.ordinal).remove() + if (node == plug.node) + disconnectComponents() } override protected def onPlugMessage(plug: Plug, message: Message): Unit = {