From 64c0484c2da9359503fdc8ddc71cf931b1717382 Mon Sep 17 00:00:00 2001 From: bdew Date: Tue, 24 Feb 2015 17:23:45 +0200 Subject: [PATCH] Added ApiReporter --- build.gradle | 2 +- src/net/bdew/lib/ApiReporter.scala | 33 ++++++++++++++++++++++++++++++ src/net/bdew/lib/BdLib.scala | 4 +++- src/net/bdew/lib/Misc.scala | 8 ++++++++ 4 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 src/net/bdew/lib/ApiReporter.scala diff --git a/build.gradle b/build.gradle index 5394534..762811d 100644 --- a/build.gradle +++ b/build.gradle @@ -21,7 +21,7 @@ buildscript { apply plugin: 'scala' apply plugin: 'forge' -version = "1.6.4" +version = "1.6.5" if (project.hasProperty('buildnum')) { project.version = project.version + '.' + project.buildnum diff --git a/src/net/bdew/lib/ApiReporter.scala b/src/net/bdew/lib/ApiReporter.scala new file mode 100644 index 0000000..dd90b6c --- /dev/null +++ b/src/net/bdew/lib/ApiReporter.scala @@ -0,0 +1,33 @@ +/* + * Copyright (c) bdew, 2013 - 2015 + * https://github.com/bdew/bdlib + * + * This mod is distributed under the terms of the Minecraft Mod Public + * License 1.0, or MMPL. Please check the contents of the license located in + * http://bdew.net/minecraft-mod-public-license/ + */ + +package net.bdew.lib + +import java.util + +import cpw.mods.fml.common.{ICrashCallable, ModAPIManager, ModContainer} + +import scala.collection.JavaConversions._ + +object ApiReporter extends ICrashCallable { + lazy val APIs = { + val mods = new util.ArrayList[ModContainer] + val nameLookup = new util.HashMap[String, ModContainer] + ModAPIManager.INSTANCE.injectAPIModContainers(mods, nameLookup) + (for (mod <- mods.sortBy(_.getModId.toLowerCase)) yield + "\t\t* %s (%s) from %s".format(mod.getModId, mod.getVersion, + if (mod.getSource.isDirectory) + mod.getSource + else + mod.getSource.getName + )).mkString(System.lineSeparator()) + } + override def getLabel = "List of loaded APIs" + override def call() = System.lineSeparator() + APIs +} diff --git a/src/net/bdew/lib/BdLib.scala b/src/net/bdew/lib/BdLib.scala index b1768a6..62ebe7f 100644 --- a/src/net/bdew/lib/BdLib.scala +++ b/src/net/bdew/lib/BdLib.scala @@ -9,9 +9,9 @@ package net.bdew.lib -import cpw.mods.fml.common.Mod import cpw.mods.fml.common.Mod.EventHandler import cpw.mods.fml.common.event.{FMLPreInitializationEvent, FMLServerStartingEvent, FMLServerStoppingEvent} +import cpw.mods.fml.common.{FMLCommonHandler, Mod} import net.bdew.lib.multiblock.network.NetHandler import net.minecraft.command.CommandHandler import org.apache.logging.log4j.Logger @@ -34,6 +34,8 @@ object BdLib { def preInit(ev: FMLPreInitializationEvent) { log = ev.getModLog log.info("bdlib BDLIB_VER loaded") + log.debug("List of loaded APIs: " + ApiReporter.APIs) + FMLCommonHandler.instance().registerCrashCallable(ApiReporter) NetHandler.init() } diff --git a/src/net/bdew/lib/Misc.scala b/src/net/bdew/lib/Misc.scala index 38fad59..569d45c 100644 --- a/src/net/bdew/lib/Misc.scala +++ b/src/net/bdew/lib/Misc.scala @@ -105,6 +105,14 @@ object Misc { init } + def nextInSeq[T](seq: Seq[T], elem: T) = { + val pos = seq.indexOf(elem) + if (pos < 0 || pos == seq.size - 1) + seq(0) + else + seq(pos + 1) + } + def getFluidIcon(fs: FluidStack): IIcon = if (fs != null && fs.getFluid != null && fs.getFluid.getIcon != null) fs.getFluid.getIcon(fs)