Added IMC microblock material registering. modId = "ForgeMicroblock", key = "microMaterial", value = ItemStack(block, _, meta)

Fixed some material icon loading inconsistencies.
This commit is contained in:
Chicken-Bones committed 2013-11-12 17:52:14 +10:00
1 parent bb13dbd65c
commit ee4071384d
5 files changed
+49 -16

No files matched your search

@@ -120,12 +120,17 @@ object BlockMicroMaterial
{
def createAndRegister(block:Block)
{
MicroMaterialRegistry.registerMaterial(new BlockMicroMaterial(block), block.getUnlocalizedName)
createAndRegister(block, 0)
}
def createAndRegister(block:Block, meta:Int)
{
MicroMaterialRegistry.registerMaterial(new BlockMicroMaterial(block, meta),
block.getUnlocalizedName+(if(meta > 0) "_"+meta else ""))
}
def createAndRegister(block:Block, meta:Seq[Int])
{
val name = block.getUnlocalizedName
meta.foreach(m => MicroMaterialRegistry.registerMaterial(new BlockMicroMaterial(block, m), name+(if(m > 0) "_"+m else "")))
meta.foreach(m => createAndRegister(block, m))
}
}
+24 -2
View File
@@ -8,6 +8,9 @@ import java.io.FileReader
import scala.collection.mutable.{Map => MMap}
import net.minecraft.block.Block
import java.lang.Exception
import cpw.mods.fml.common.event.FMLInterModComms.IMCMessage
import net.minecraft.item.ItemStack
import BlockMicroMaterial.createAndRegister
object ConfigContent
{
@@ -113,8 +116,6 @@ object ConfigContent
def load()
{
import BlockMicroMaterial._
for(i <- 0 until idMap.length)
{
val block = Block.blocksList(i)
@@ -139,4 +140,25 @@ object ConfigContent
nameMap.foreach(e => System.err.println("Warning: Unable to add micro material for block with unlocalised name "+e._1+" as it doesn't exist"))
}
def handleIMC(messages:Seq[IMCMessage]) {
messages.filter(_.key == "microMaterial").foreach{msg =>
def error(s:String) {
System.err.println("Invalid microblock IMC message from "+msg.getSender+": "+s)
}
if(msg.getMessageType != classOf[ItemStack])
error("value is not an instanceof ItemStack")
else {
val stack = msg.getItemStackValue
if(stack.itemID >= Block.blocksList.length || Block.blocksList(stack.itemID) == null)
System.err.println("Invalid blockID: "+stack.itemID)
else if(stack.getItemDamage < 0 || stack.getItemDamage >= 16)
System.err.println("Invalid metadata: "+stack.getItemDamage)
else
createAndRegister(Block.blocksList(stack.itemID), stack.getItemDamage)
}
}
}
}
@@ -110,6 +110,7 @@ object MicroMaterialRegistry
private val nameMap:HashMap[String, Int] = new HashMap
private var idMap:Array[(String, IMicroMaterial)] = _
private val idWriter = new IDWriter
private var state = 0
private val highlightRenderers = ListBuffer[IMicroHighlightRenderer]()
@@ -152,7 +153,7 @@ object MicroMaterialRegistry
highlightRenderers+=handler
}
def setupIDMap()
private [microblock] def setupIDMap()
{
idMap = typeMap.toList.sortBy(_._1).toArray
idWriter.setMax(idMap.length)
@@ -28,7 +28,7 @@ object MicroblockEventHandler extends IConnectionHandler
@SideOnly(Side.CLIENT)
def postTextureStitch(event:TextureStitchEvent.Post)
{
if(Loader.instance.hasReachedState(LoaderState.POSTINITIALIZATION))
if(event.map.textureType == 0 && Loader.instance.hasReachedState(LoaderState.POSTINITIALIZATION))
MicroMaterialRegistry.getIdMap.foreach(e => e._2.loadIcons())
}
@@ -4,10 +4,7 @@ import cpw.mods.fml.common.Mod
import cpw.mods.fml.common.event.FMLInitializationEvent
import cpw.mods.fml.common.event.FMLPreInitializationEvent
import cpw.mods.fml.common.SidedProxy
import cpw.mods.fml.common.Mod.PreInit
import cpw.mods.fml.common.Mod.Init
import cpw.mods.fml.common.Mod.PostInit
import cpw.mods.fml.common.Mod.ServerAboutToStart
import cpw.mods.fml.common.Mod.EventHandler
import cpw.mods.fml.common.event.FMLServerAboutToStartEvent
import cpw.mods.fml.common.network.NetworkMod
import cpw.mods.fml.common.Mod.Instance
@@ -15,12 +12,14 @@ import codechicken.microblock.MicroMaterialRegistry
import codechicken.microblock.DefaultContent
import cpw.mods.fml.common.event.FMLPostInitializationEvent
import codechicken.microblock.ConfigContent
import cpw.mods.fml.common.event.FMLInterModComms.IMCEvent
import scala.collection.JavaConversions._
@Mod(modid = "ForgeMicroblock", acceptedMinecraftVersions = "[1.6.4]",
dependencies="required-after:ForgeMultipart;after:*", modLanguage="scala")
object MicroblockMod
{
@PreInit
@EventHandler
def preInit(event:FMLPreInitializationEvent)
{
MicroblockProxy.preInit()
@@ -28,23 +27,29 @@ object MicroblockMod
ConfigContent.parse(event.getModConfigurationDirectory)
}
@Init
@EventHandler
def init(event:FMLInitializationEvent)
{
MicroblockProxy.init()
ConfigContent.load()
MicroMaterialRegistry.setupIDMap()
}
@PostInit
@EventHandler
def postInit(event:FMLPostInitializationEvent)
{
MicroblockProxy.postInit()
MicroMaterialRegistry.setupIDMap()
}
@ServerAboutToStart
@EventHandler
def beforeServerStart(event:FMLServerAboutToStartEvent)
{
MicroMaterialRegistry.setupIDMap()
}
@EventHandler
def handleIMC(event:IMCEvent)
{
ConfigContent.handleIMC(event.getMessages)
}
}