Files
CustomNPC-Plus/src/main/java/noppes/npcs/client/renderer/RenderCustomNpc.java
T
KAMKEEL 9ddbf2ee45 Changes to ModelMPM and Renderer
Attempting to get SkinUrls to match for 1.8 Skins
2021-04-29 01:10:15 -04:00

124 lines
4.2 KiB
Java

package noppes.npcs.client.renderer;
import java.lang.reflect.Method;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.renderer.entity.NPCRendererHelper;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.entity.RendererLivingEntity;
import net.minecraft.entity.EntityList;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import noppes.npcs.client.model.ModelMPM;
import noppes.npcs.client.model.util.ModelRenderPassHelper;
import noppes.npcs.controllers.PixelmonHelper;
import noppes.npcs.entity.EntityCustomNpc;
import noppes.npcs.entity.EntityNPCInterface;
import org.lwjgl.opengl.GL11;
public class RenderCustomNpc extends RenderNPCHumanMale{
private RendererLivingEntity renderEntity;
private EntityLivingBase entity;
private ModelRenderPassHelper renderpass = new ModelRenderPassHelper();
// Default Renderer
public RenderCustomNpc() {
super(new ModelMPM(0), new ModelMPM(1), new ModelMPM(0.5f));
}
// 64x64 Version
// True = Alex Arms
// False = Steve Arms
public RenderCustomNpc(boolean arms) {
super(new ModelMPM(0, arms), new ModelMPM(1, arms), new ModelMPM(0.5f, arms));
}
@Override
public void renderPlayer(EntityNPCInterface npcInterface, double d, double d1, double d2, float f, float f1){
EntityCustomNpc npc = (EntityCustomNpc) npcInterface;
entity = npc.modelData.getEntity(npc);
ModelBase model = null;
renderEntity = null;
if(entity != null){
renderEntity = (RendererLivingEntity) RenderManager.instance.getEntityRenderObject(entity);
model = NPCRendererHelper.getMainModel(renderEntity);
if(PixelmonHelper.isPixelmon(entity)){
try {
Class c = Class.forName("com.pixelmonmod.pixelmon.entities.pixelmon.Entity2HasModel");
Method m = c.getMethod("getModel");
model = (ModelBase) m.invoke(entity);
} catch (Exception e) {
e.printStackTrace();
}
}
if(EntityList.getEntityString(entity).equals("doggystyle.Dog")){
try {
Method m = entity.getClass().getMethod("getBreed");
Object breed = m.invoke(entity);
m = breed.getClass().getMethod("getModel");
model = (ModelBase) m.invoke(breed);
model.getClass().getMethod("setPosition", int.class).invoke(model, 0);
} catch (Exception e) {
e.printStackTrace();
}
}
renderPassModel = renderpass;
renderpass.renderer = renderEntity;
renderpass.entity = entity;
}
((ModelMPM)this.modelArmor).entityModel = model;
((ModelMPM)this.modelArmor).entity = entity;
((ModelMPM)this.modelArmorChestplate).entityModel = model;
((ModelMPM)this.modelArmorChestplate).entity = entity;
((ModelMPM)this.mainModel).entityModel = model;
((ModelMPM)this.mainModel).entity = entity;
super.renderPlayer(npc, d, d1, d2, f, f1);
}
@Override
protected void renderEquippedItems(EntityLivingBase entityliving, float f){
if(renderEntity != null)
NPCRendererHelper.renderEquippedItems(entity, f, renderEntity);
else
super.renderEquippedItems(entityliving, f);
}
@Override
protected int shouldRenderPass(EntityLivingBase par1EntityLivingBase, int par2, float par3){
if(renderEntity != null){
return NPCRendererHelper.shouldRenderPass(entity, par2, par3, renderEntity);
}
return this.func_130006_a((EntityLiving)par1EntityLivingBase, par2, par3);
}
@Override
protected void preRenderCallback(EntityLivingBase entityliving, float f){
if(renderEntity != null){
EntityNPCInterface npc = (EntityNPCInterface) entityliving;
int size = npc.display.modelSize;
if(entity instanceof EntityNPCInterface){
((EntityNPCInterface)entity).display.modelSize = 5;
}
NPCRendererHelper.preRenderCallback(entity, f, renderEntity);
npc.display.modelSize = size;
GL11.glScalef(0.2f * npc.display.modelSize, 0.2f * npc.display.modelSize, 0.2f * npc.display.modelSize);
}
else
super.preRenderCallback(entityliving, f);
}
@Override
protected float handleRotationFloat(EntityLivingBase par1EntityLivingBase, float par2){
if(renderEntity != null){
return NPCRendererHelper.handleRotationFloat(entity, par2, renderEntity);
}
return super.handleRotationFloat(par1EntityLivingBase, par2);
}
}