mirror of
https://github.com/GTNewHorizons/ForgeMultipart.git
synced 2026-11-12 16:37:38 +00:00
Added IMC microblock material registering. modId = "ForgeMicroblock", key = "microMaterial", value = ItemStack(block, _, meta)
Fixed some material icon loading inconsistencies.
This commit is contained in:
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))
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user