ModularPowersuits/src/main/scala/net/machinemuse/powersuits/client/render/item/ArmorModel.scala

100 lines
3.1 KiB
Scala

package net.machinemuse.powersuits.client.render.item
import net.machinemuse.numina.general.MuseLogger
import net.machinemuse.powersuits.client.render.modelspec._
import net.minecraft.client.model.{ModelBiped, ModelRenderer}
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.entity.{Entity, EntityLivingBase}
import net.minecraft.item.{EnumAction, ItemStack}
import net.minecraft.nbt.NBTTagCompound
import net.minecraftforge.client.model.obj.WavefrontObject
object ArmorModel {
def instance: ArmorModel = ArmorModelInstance.getInstance()
}
trait ArmorModel extends ModelBiped {
var renderSpec: NBTTagCompound = null
var visibleSection: Int = 0
def clearAndAddChildWithInitialOffsets(mr: ModelRenderer, xo: Float, yo: Float, zo: Float) {
mr.cubeList.clear()
val rp = new RenderPart(this, mr)
mr.addChild(rp)
setInitialOffsets(rp, xo, yo, zo)
}
def init(): Unit = {
clearAndAddChildWithInitialOffsets(bipedHead, 0.0F, 0.0F, 0.0F)
clearAndAddChildWithInitialOffsets(bipedBody, 0.0F, 0.0F, 0.0F)
clearAndAddChildWithInitialOffsets(bipedRightArm, 5, 2.0F, 0.0F)
clearAndAddChildWithInitialOffsets(bipedLeftArm, -5, 2.0F, 0.0F)
clearAndAddChildWithInitialOffsets(bipedRightLeg, 2, 12.0F, 0.0F)
clearAndAddChildWithInitialOffsets(bipedLeftLeg, -2, 12.0F, 0.0F)
bipedHeadwear.cubeList.clear()
bipedEars.cubeList.clear()
bipedCloak.cubeList.clear()
}
private def logModelParts(model: WavefrontObject) {
MuseLogger.logDebug(model.toString + ":")
import scala.collection.JavaConversions._
for (group <- model.groupObjects) {
MuseLogger.logDebug("-" + group.name)
}
}
def setInitialOffsets(r: ModelRenderer, x: Float, y: Float, z: Float) {
r.offsetX = x
r.offsetY = y
r.offsetZ = z
}
def prep(entity: Entity, par2: Float, par3: Float, par4: Float, par5: Float, par6: Float, scale: Float) {
try {
val entLive: EntityLivingBase = entity.asInstanceOf[EntityLivingBase]
val stack: ItemStack = entLive.getEquipmentInSlot(0)
heldItemRight = if (stack != null) 1 else 0
isSneak = entLive.isSneaking
isRiding = entLive.isRiding
val entPlayer = entLive.asInstanceOf[EntityPlayer]
if ((stack != null) && (entPlayer.getItemInUseCount > 0))
{
val enumaction = stack.getItemUseAction
if (enumaction == EnumAction.block) {
heldItemRight = 3
} else if (enumaction == EnumAction.bow) {
aimedBow = true
}
}
} catch {
case _: Exception =>
}
bipedHead.isHidden = false
bipedBody.isHidden = false
bipedRightArm.isHidden = false
bipedLeftArm.isHidden = false
bipedRightLeg.isHidden = false
bipedLeftLeg.isHidden = false
bipedHead.showModel = true
bipedBody.showModel = true
bipedRightArm.showModel = true
bipedLeftArm.showModel = true
bipedRightLeg.showModel = true
bipedLeftLeg.showModel = true
}
def post(entity: Entity, par2: Float, par3: Float, par4: Float, par5: Float, par6: Float, scale: Float): Unit = {
aimedBow = false
isSneak = false
heldItemRight = 0
}
}