226 lines
5.8 KiB
Java
226 lines
5.8 KiB
Java
package mekanism.client.render;
|
|
|
|
import mekanism.client.model.ModelGasMask;
|
|
import mekanism.client.model.ModelJetpack;
|
|
import mekanism.client.model.ModelScubaTank;
|
|
import mekanism.common.util.MekanismUtils;
|
|
import mekanism.common.util.MekanismUtils.ResourceType;
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraft.client.model.ModelBiped;
|
|
import net.minecraft.client.model.ModelRenderer;
|
|
import net.minecraft.entity.Entity;
|
|
import net.minecraft.entity.EntityLivingBase;
|
|
import net.minecraft.util.ResourceLocation;
|
|
|
|
import org.lwjgl.opengl.GL11;
|
|
|
|
import cpw.mods.fml.relauncher.Side;
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
public class ModelCustomArmor extends ModelBiped
|
|
{
|
|
public static ModelCustomArmor INSTANCE = new ModelCustomArmor();
|
|
|
|
public static GlowArmor GLOW_BIG = new GlowArmor(1.0F);
|
|
public static GlowArmor GLOW_SMALL = new GlowArmor(0.5F);
|
|
|
|
public static Minecraft mc = Minecraft.getMinecraft();
|
|
|
|
public ArmorModel modelType;
|
|
|
|
public ModelCustomArmor()
|
|
{
|
|
resetPart(bipedHead, 0, 0, 0);
|
|
resetPart(bipedBody, 0, 0, 0);
|
|
resetPart(bipedRightArm, 5, 2, 0);
|
|
resetPart(bipedLeftArm, -5, 2, 0);
|
|
resetPart(bipedRightLeg, 2, 12, 0);
|
|
resetPart(bipedLeftLeg, -2, 12, 0);
|
|
|
|
bipedHeadwear.cubeList.clear();
|
|
bipedEars.cubeList.clear();
|
|
bipedCloak.cubeList.clear();
|
|
}
|
|
|
|
public void init(Entity entity, float f, float f1, float f2, float f3, float f4, float size)
|
|
{
|
|
reset();
|
|
|
|
if(entity instanceof EntityLivingBase)
|
|
{
|
|
isSneak = ((EntityLivingBase)entity).isSneaking();
|
|
isRiding = ((EntityLivingBase)entity).isRiding();
|
|
isChild = ((EntityLivingBase)entity).isChild();
|
|
}
|
|
|
|
if(modelType.armorSlot == 0)
|
|
{
|
|
bipedHead.isHidden = false;
|
|
bipedHead.showModel = true;
|
|
}
|
|
else if(modelType.armorSlot == 1)
|
|
{
|
|
bipedBody.isHidden = false;
|
|
bipedBody.showModel = true;
|
|
}
|
|
|
|
setRotationAngles(f, f1, f2, f3, f4, size, entity);
|
|
}
|
|
|
|
public void reset()
|
|
{
|
|
bipedHead.isHidden = true;
|
|
bipedBody.isHidden = true;
|
|
bipedRightArm.isHidden = true;
|
|
bipedLeftArm.isHidden = true;
|
|
bipedRightLeg.isHidden = true;
|
|
bipedLeftLeg.isHidden = true;
|
|
|
|
bipedHead.showModel = false;
|
|
bipedBody.showModel = false;
|
|
bipedRightArm.showModel = false;
|
|
bipedLeftArm.showModel = false;
|
|
bipedRightLeg.showModel = false;
|
|
bipedLeftLeg.showModel = false;
|
|
}
|
|
|
|
public void resetPart(ModelRenderer renderer, float x, float y, float z)
|
|
{
|
|
renderer.cubeList.clear();
|
|
ModelCustom model = new ModelCustom(this, renderer);
|
|
renderer.addChild(model);
|
|
setOffset(renderer, x, y, z);
|
|
}
|
|
|
|
public void setOffset(ModelRenderer renderer, float x, float y, float z)
|
|
{
|
|
renderer.offsetX = x;
|
|
renderer.offsetY = y;
|
|
renderer.offsetZ = z;
|
|
}
|
|
|
|
public class ModelCustom extends ModelRenderer
|
|
{
|
|
public ModelCustomArmor biped;
|
|
public ModelRenderer partRender;
|
|
|
|
public ModelCustom(ModelCustomArmor base, ModelRenderer renderer)
|
|
{
|
|
super(base);
|
|
biped = base;
|
|
partRender = renderer;
|
|
}
|
|
|
|
@Override
|
|
public void render(float size)
|
|
{
|
|
if(ModelCustomArmor.this.modelType != null)
|
|
{
|
|
GL11.glPushMatrix();
|
|
GL11.glTranslatef(0, 0, 0.06F);
|
|
|
|
mc.renderEngine.bindTexture(modelType.resource);
|
|
|
|
if(useModel(biped.modelType, partRender, biped))
|
|
{
|
|
if(biped.modelType == ArmorModel.JETPACK)
|
|
{
|
|
ArmorModel.jetpackModel.render(0.0625F);
|
|
}
|
|
else if(biped.modelType == ArmorModel.SCUBATANK)
|
|
{
|
|
ArmorModel.scubaTankModel.render(0.0625F);
|
|
}
|
|
else if(biped.modelType == ArmorModel.GASMASK)
|
|
{
|
|
ArmorModel.gasMaskModel.render(0.0625F);
|
|
}
|
|
}
|
|
|
|
GL11.glPopMatrix();
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void render(Entity entity, float par2, float par3, float par4, float par5, float par6, float par7)
|
|
{
|
|
init(entity, par2, par3, par4, par5, par6, par7);
|
|
super.render(entity, par2, par3, par4, par5, par6, par7);
|
|
}
|
|
|
|
public static boolean useModel(ArmorModel type, ModelRenderer partRender, ModelCustomArmor biped)
|
|
{
|
|
if(type.armorSlot == 0)
|
|
{
|
|
return partRender == biped.bipedHead;
|
|
}
|
|
else if(type.armorSlot == 1)
|
|
{
|
|
return partRender == biped.bipedBody;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public static enum ArmorModel
|
|
{
|
|
JETPACK(1, MekanismUtils.getResource(ResourceType.RENDER, "Jetpack.png")),
|
|
SCUBATANK(1, MekanismUtils.getResource(ResourceType.RENDER, "ScubaSet.png")),
|
|
GASMASK(0, MekanismUtils.getResource(ResourceType.RENDER, "ScubaSet.png"));
|
|
|
|
public int armorSlot;
|
|
public ResourceLocation resource;
|
|
|
|
public static ModelJetpack jetpackModel = new ModelJetpack();
|
|
public static ModelGasMask gasMaskModel = new ModelGasMask();
|
|
public static ModelScubaTank scubaTankModel = new ModelScubaTank();
|
|
|
|
private ArmorModel(int i, ResourceLocation r)
|
|
{
|
|
armorSlot = i;
|
|
resource = r;
|
|
}
|
|
}
|
|
|
|
public static ModelBiped getGlow(int index)
|
|
{
|
|
ModelBiped biped = index != 2 ? GLOW_BIG : GLOW_SMALL;
|
|
|
|
biped.bipedHead.showModel = index == 0;
|
|
biped.bipedHeadwear.showModel = index == 0;
|
|
biped.bipedBody.showModel = index == 1 || index == 2;
|
|
biped.bipedRightArm.showModel = index == 1;
|
|
biped.bipedLeftArm.showModel = index == 1;
|
|
biped.bipedRightLeg.showModel = index == 2 || index == 3;
|
|
biped.bipedLeftLeg.showModel = index == 2 || index == 3;
|
|
|
|
return biped;
|
|
}
|
|
|
|
public static class GlowArmor extends ModelBiped
|
|
{
|
|
public GlowArmor(float size)
|
|
{
|
|
super(size);
|
|
}
|
|
|
|
@Override
|
|
public void render(Entity entity, float par2, float par3, float par4, float par5, float par6, float par7)
|
|
{
|
|
if(entity instanceof EntityLivingBase)
|
|
{
|
|
isSneak = ((EntityLivingBase)entity).isSneaking();
|
|
isRiding = ((EntityLivingBase)entity).isRiding();
|
|
isChild = ((EntityLivingBase)entity).isChild();
|
|
}
|
|
|
|
setRotationAngles(par2, par3, par4, par5, par6, par7, entity);
|
|
|
|
MekanismRenderer.glowOn();
|
|
super.render(entity, par2, par3, par4, par5, par6, par7);
|
|
MekanismRenderer.glowOff();
|
|
}
|
|
}
|
|
}
|