Added /dumpregistry command

This commit is contained in:
bdew committed 2014-04-23 15:11:07 +03:00
1 parent d1d3df184f
commit ecdcdfb05f
4 files changed
+73 -5

No files matched your search

+8 -1
View File
@@ -10,9 +10,10 @@
package net.bdew.lib
import cpw.mods.fml.common.Mod
import cpw.mods.fml.common.event.FMLPreInitializationEvent
import cpw.mods.fml.common.event.{FMLServerStartingEvent, FMLPreInitializationEvent}
import org.apache.logging.log4j.Logger
import cpw.mods.fml.common.Mod.EventHandler
import net.minecraft.command.CommandHandler
@Mod(modid = "bdlib", name = "BD lib", version = "BDLIB_VER", modLanguage = "scala")
object BdLib {
@@ -29,4 +30,10 @@ object BdLib {
log = ev.getModLog
log.info("bdlib BDLIB_VER loaded")
}
@EventHandler
def serverStarting(event: FMLServerStartingEvent) {
val commandHandler = event.getServer.getCommandManager.asInstanceOf[CommandHandler]
commandHandler.registerCommand(new CommandDumpRegistry)
}
}
@@ -0,0 +1,64 @@
/*
* Copyright (c) bdew, 2013 - 2014
* 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
* https://raw.github.com/bdew/bdlib/master/MMPL-1.0.txt
*/
package net.bdew.lib
import net.minecraft.command.{CommandBase, ICommandSender}
import cpw.mods.fml.relauncher.FMLInjectionData
import java.io.{FileWriter, BufferedWriter, File}
import cpw.mods.fml.common.registry.GameData
import com.google.common.collect.Table
import net.minecraft.item.ItemStack
import net.minecraftforge.oredict.OreDictionary
import net.minecraftforge.fluids.FluidRegistry
class CommandDumpRegistry extends CommandBase {
def getCommandName = "dumpregistry"
override def getRequiredPermissionLevel = 2
def getCommandUsage(icommandsender: ICommandSender) = "dumpregistry"
def processCommand(sender: ICommandSender, params: Array[String]) {
val mcHome = FMLInjectionData.data()(6).asInstanceOf[File] //is there a better way to get this?
val dumpFile = new File(mcHome, "registry.dump")
val dumpWriter = new BufferedWriter(new FileWriter(dumpFile))
import scala.collection.JavaConversions._
try {
dumpWriter.write("==== BLOCKS ====\n")
dumpWriter.write(GameData.getBlockRegistry.map(GameData.getBlockRegistry.getNameForObject).toList.sorted.mkString("\n"))
dumpWriter.write("\n\n")
dumpWriter.write("==== ITEMS ====\n")
dumpWriter.write(GameData.getItemRegistry.map(GameData.getItemRegistry.getNameForObject).toList.sorted.mkString("\n"))
dumpWriter.write("\n\n")
dumpWriter.write("==== CUSTOM STACKS ====\n")
val stacksField = classOf[GameData].getDeclaredField("customItemStacks")
stacksField.setAccessible(true)
val stacksData = stacksField.get(null).asInstanceOf[Table[String, String, ItemStack]]
dumpWriter.write(stacksData.cellSet().map(x => x.getRowKey + ":" + x.getColumnKey).toList.sorted.mkString("\n"))
dumpWriter.write("\n\n")
dumpWriter.write("==== ORE DICT ====\n")
dumpWriter.write(OreDictionary.getOreNames.sorted.mkString("\n"))
dumpWriter.write("\n\n")
dumpWriter.write("==== FLUIDS ====\n")
dumpWriter.write(FluidRegistry.getRegisteredFluids.map(_._1).toList.sorted.mkString("\n"))
dumpWriter.write("\n\n")
CommandBase.notifyAdmins(sender, "Registry dumped to " + dumpFile.getCanonicalPath)
} catch {
case e: Throwable =>
CommandBase.notifyAdmins(sender, "Failed to save registry dump: " + e)
BdLib.logErrorException("Failed to save registry dump", e)
} finally {
dumpWriter.close()
}
}
}
@@ -13,7 +13,6 @@ import scala.collection.mutable
import net.bdew.lib.gui.widgets.BaseWidget
import net.minecraft.client.gui.FontRenderer
import org.lwjgl.opengl.GL11
import net.minecraft.util.IIcon
trait WidgetContainer extends DrawTarget {
val rect: Rect
+1 -3
View File
@@ -9,12 +9,10 @@
package net.bdew.lib.items
import net.minecraft.item.{ItemTool, Item}
import net.minecraft.item.Item
import net.minecraft.client.renderer.texture.IIconRegister
import cpw.mods.fml.relauncher.{Side, SideOnly}
import net.bdew.lib.Misc
import java.util
import net.minecraft.block.Block
trait NamedItem extends Item {
def name: String