From 7998bc87aae7f61e06769384ab9391683e9f6bdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Tue, 29 Jul 2014 14:49:53 +0200 Subject: [PATCH] Added additional check which may or may not fix #442. --- src/main/scala/li/cil/oc/util/mods/Mods.scala | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/main/scala/li/cil/oc/util/mods/Mods.scala b/src/main/scala/li/cil/oc/util/mods/Mods.scala index bdc9608a6..a77eb6e43 100644 --- a/src/main/scala/li/cil/oc/util/mods/Mods.scala +++ b/src/main/scala/li/cil/oc/util/mods/Mods.scala @@ -29,15 +29,15 @@ object Mods { val BattleGear2 = new SimpleMod(IDs.BattleGear2) val BuildCraftPower = new SimpleMod(IDs.BuildCraftPower) - val ComputerCraft15 = new Mod { - val isAvailable = try Class.forName("dan200.computer.api.ComputerCraftAPI") != null catch { + val ComputerCraft15 = new SimpleMod(IDs.ComputerCraft) { + override val isAvailable = isModLoaded && (try Class.forName("dan200.computer.api.ComputerCraftAPI") != null catch { case _: Throwable => false - } + }) } - val ComputerCraft16 = new Mod { - val isAvailable = try Class.forName("dan200.computercraft.api.ComputerCraftAPI") != null catch { + val ComputerCraft16 = new SimpleMod(IDs.ComputerCraft) { + override val isAvailable = isModLoaded && (try Class.forName("dan200.computercraft.api.ComputerCraftAPI") != null catch { case _: Throwable => false - } + }) } val ComputerCraft = new Mod { override def isAvailable = ComputerCraft15.isAvailable || ComputerCraft16.isAvailable @@ -68,13 +68,15 @@ object Mods { def isAvailable: Boolean } - class SimpleMod(val id: String) { - val isAvailable = { + class SimpleMod(val id: String) extends Mod { + protected val isModLoaded = { val version = VersionParser.parseVersionReference(id) if (Loader.isModLoaded(version.getLabel)) version.containsVersion(Loader.instance.getIndexedModList.get(version.getLabel).getProcessedVersion) else ModAPIManager.INSTANCE.hasAPI(version.getLabel) } + + override def isAvailable = isModLoaded } }