From 254f48c2080a1477c1c38d38387b231093a23a13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Wed, 4 Jun 2014 22:22:30 +0200 Subject: [PATCH] Fixed abstract bus card recipe. Fixed array converter. --- .../opencomputers/recipes/default.recipes | 2 +- src/main/scala/li/cil/oc/common/Proxy.scala | 22 +++++++++++++++++++ .../li/cil/oc/common/item/Delegator.scala | 7 ++++-- .../cil/oc/server/component/AbstractBus.scala | 2 +- .../li/cil/oc/server/driver/Registry.scala | 7 +++--- src/main/scala/li/cil/oc/util/mods/Mods.scala | 7 +++++- 6 files changed, 39 insertions(+), 8 deletions(-) diff --git a/src/main/resources/assets/opencomputers/recipes/default.recipes b/src/main/resources/assets/opencomputers/recipes/default.recipes index 77147b9f0..c42878d72 100644 --- a/src/main/resources/assets/opencomputers/recipes/default.recipes +++ b/src/main/resources/assets/opencomputers/recipes/default.recipes @@ -79,7 +79,7 @@ openOS { } abstractBusCard { - input: [[busCable, {item=naquadah, subID=8}, ""] + input: [["StargateTech2:block.busCable", {item="StargateTech2:item.naquadah", subID=3}, ""] ["", "oc:materialCard", ""]] } graphicsCard1 { diff --git a/src/main/scala/li/cil/oc/common/Proxy.scala b/src/main/scala/li/cil/oc/common/Proxy.scala index 064d5d04d..d1e2a74ed 100644 --- a/src/main/scala/li/cil/oc/common/Proxy.scala +++ b/src/main/scala/li/cil/oc/common/Proxy.scala @@ -25,9 +25,13 @@ class Proxy { def preInit(e: FMLPreInitializationEvent) { Settings.load(e.getSuggestedConfigurationFile) + OpenComputers.log.info("Initializing blocks and items.") + Blocks.init() Items.init() + OpenComputers.log.info("Initializing additional OreDict entries.") + registerExclusive("craftingPiston", new ItemStack(Block.pistonBase), new ItemStack(Block.pistonStickyBase)) registerExclusive("torchRedstoneActive", new ItemStack(Block.torchRedstoneActive, 1, 0)) registerExclusive("nuggetGold", new ItemStack(Item.goldNugget)) @@ -38,6 +42,8 @@ class Proxy { Recipes.addItem(Item.ingotIron, "ingotIron") } + OpenComputers.log.info("Initializing OpenComputers API.") + api.CreativeTab.instance = CreativeTab api.Driver.instance = driver.Registry api.FileSystem.instance = fs.FileSystem @@ -49,14 +55,17 @@ class Proxy { api.Network.instance = network.Network if (Mods.ForgeMultipart.isAvailable) { + OpenComputers.log.info("Initializing Forge MultiPart support.") MultiPart.init() } if (Mods.ComputerCraft16.isAvailable) { + OpenComputers.log.info("Initializing OpenComputers support.") ComputerCraft16.init() } } def init(e: FMLInitializationEvent) { + OpenComputers.log.info("Initializing OpenComputers drivers.") api.Driver.add(driver.item.FileSystem) api.Driver.add(driver.item.GraphicsCard) api.Driver.add(driver.item.InternetCard) @@ -85,21 +94,31 @@ class Proxy { api.Driver.add(driver.item.WirelessNetworkCard) if (Mods.StargateTech2.isAvailable) { + OpenComputers.log.info("Initializing StargateTech2 converter and driver.") api.Driver.add(driver.converter.BusPacketNetScanDevice) api.Driver.add(driver.item.AbstractBusCard) } if (Mods.ComputerCraft15.isAvailable) { + OpenComputers.log.info("Initializing ComputerCraft 1.5x floppy driver.") api.Driver.add(driver.item.CC15Media) } if (Mods.ComputerCraft16.isAvailable) { + OpenComputers.log.info("Initializing ComputerCraft 1.6x floppy driver.") api.Driver.add(driver.item.CC16Media) } + OpenComputers.log.info("Initializing vanilla converters.") api.Driver.add(driver.converter.FluidTankInfo) api.Driver.add(driver.converter.ItemStack) + OpenComputers.log.info("Initializing loot disks.") Loot.init() + + OpenComputers.log.info("Initializing recipes.") Recipes.init() + + OpenComputers.log.info("Initializing event handlers.") + GameRegistry.registerCraftingHandler(CraftingHandler) ForgeChunkManager.setForcedChunkLoadingCallback(OpenComputers, ChunkloaderUpgradeHandler) @@ -109,13 +128,16 @@ class Proxy { MinecraftForge.EVENT_BUS.register(ExperienceUpgradeHandler) MinecraftForge.EVENT_BUS.register(WirelessNetworkCardHandler) if (Mods.TinkersConstruct.isAvailable) { + OpenComputers.log.info("Initializing Tinker's Construct tool support.") MinecraftForge.EVENT_BUS.register(TinkersConstructToolHandler) } if (Mods.UniversalElectricity.isAvailable) { + OpenComputers.log.info("Initializing electric tool support.") MinecraftForge.EVENT_BUS.register(UniversalElectricityToolHandler) } MinecraftForge.EVENT_BUS.register(Loot) + OpenComputers.log.info("Initializing Waila support.") FMLInterModComms.sendMessage("Waila", "register", "li.cil.oc.util.mods.Waila.init") } diff --git a/src/main/scala/li/cil/oc/common/item/Delegator.scala b/src/main/scala/li/cil/oc/common/item/Delegator.scala index a05181cfb..f54c85aaa 100644 --- a/src/main/scala/li/cil/oc/common/item/Delegator.scala +++ b/src/main/scala/li/cil/oc/common/item/Delegator.scala @@ -3,7 +3,7 @@ package li.cil.oc.common.item import cpw.mods.fml.relauncher.{Side, SideOnly} import java.util import java.util.Random -import li.cil.oc.{Settings, CreativeTab} +import li.cil.oc.{OpenComputers, Settings, CreativeTab} import net.minecraft.client.renderer.texture.IconRegister import net.minecraft.creativetab.CreativeTabs import net.minecraft.entity.player.EntityPlayer @@ -13,6 +13,7 @@ import net.minecraft.world.World import net.minecraftforge.common.ChestGenHooks import scala.collection.mutable import net.minecraft.entity.Entity +import java.util.logging.Level class Delegator(id: Int) extends Item(id) { setHasSubtypes(true) @@ -114,7 +115,9 @@ class Delegator(id: Int) extends Item(id) { override def addInformation(stack: ItemStack, player: EntityPlayer, tooltip: util.List[_], advanced: Boolean) { super.addInformation(stack, player, tooltip, advanced) subItem(stack) match { - case Some(subItem) => subItem.tooltipLines(stack, player, tooltip.asInstanceOf[util.List[String]], advanced) + case Some(subItem) => try subItem.tooltipLines(stack, player, tooltip.asInstanceOf[util.List[String]], advanced) catch { + case t: Throwable => OpenComputers.log.log(Level.WARNING, "Error in item tooltip.", t) + } case _ => // Nothing to add. } } diff --git a/src/main/scala/li/cil/oc/server/component/AbstractBus.scala b/src/main/scala/li/cil/oc/server/component/AbstractBus.scala index fb66846b3..dcaf8f36f 100644 --- a/src/main/scala/li/cil/oc/server/component/AbstractBus.scala +++ b/src/main/scala/li/cil/oc/server/component/AbstractBus.scala @@ -94,7 +94,7 @@ class AbstractBus(val device: IBusDevice) extends component.ManagedComponent wit packet.finish() sendQueue = Some(packet) busInterface.sendAllPackets() - result(true) + result(packet.getResponses.toArray) } else result(Unit, "not enough energy") } diff --git a/src/main/scala/li/cil/oc/server/driver/Registry.scala b/src/main/scala/li/cil/oc/server/driver/Registry.scala index ee708e78b..580a8e5f3 100644 --- a/src/main/scala/li/cil/oc/server/driver/Registry.scala +++ b/src/main/scala/li/cil/oc/server/driver/Registry.scala @@ -108,6 +108,7 @@ private[oc] object Registry extends api.detail.DriverAPI { case arg => val converted = new util.HashMap[AnyRef, AnyRef]() memo += arg -> converted + println("applying " + converters.size + " converters to " + arg.getClass.getName) converters.foreach(converter => try converter.convert(arg, converted) catch { case t: Throwable => OpenComputers.log.log(Level.WARNING, "Type converter threw an exception.", t) }) @@ -133,12 +134,12 @@ private[oc] object Registry extends api.detail.DriverAPI { } def convertList(obj: AnyRef, list: Iterator[(Any, Int)], memo: util.IdentityHashMap[AnyRef, AnyRef]) = { - val converted = new Array[AnyRef](list.size) + val converted = mutable.ArrayBuffer.empty[AnyRef] memo += obj -> converted for ((value, index) <- list) { - converted(index) = convertRecursively(value, memo) + converted += convertRecursively(value, memo) } - converted + converted.toArray } def convertMap(obj: AnyRef, map: Map[_, _], memo: util.IdentityHashMap[AnyRef, AnyRef]) = { 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 529f95388..5e35a7bde 100644 --- a/src/main/scala/li/cil/oc/util/mods/Mods.scala +++ b/src/main/scala/li/cil/oc/util/mods/Mods.scala @@ -27,7 +27,12 @@ object Mods { val PortalGun = new SimpleMod("PortalGun") val ProjectRed = new SimpleMod("ProjRed|Transmission") val RedLogic = new SimpleMod("RedLogic") - val StargateTech2 = new SimpleMod("StargateTech2@[0.7.0,)") + val StargateTech2 = new Mod { + val isAvailable = Loader.isModLoaded("StargateTech2") && { + val mod = Loader.instance.getIndexedModList.get("StargateTech2") + mod.getVersion.startsWith("0.7.") + } + } val ThermalExpansion = new SimpleMod("ThermalExpansion") val TinkersConstruct = new SimpleMod("TConstruct") val UniversalElectricity = new SimpleMod("UniversalElectricity@[3.1,)")