Posted January 6, 20178 yr I'm new to modding so been plowing through tutorials, I created my first items and blocks and am now venturing into custom entities. I'm trying to created a custom dog (EntityDog). I think I've got things layed out right, but the dogs body looks like it's rotated ninety degrees and I am struggling to figure out why. I basically copied the ModelWolf and RenderWolf class hoping that would help me narrow in on my error but it's not. Help would be greatly appreciated! package weible.ultramod.client.render; import weible.ultramod.client.model.ModelWolf; import weible.ultramod.entity.EntityDog; import weible.ultramod.client.render.LayerWolfCollar; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.client.renderer.entity.RenderManager; //import net.minecraft.entity.passive.EntityWolf; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class RenderWolf extends RenderLiving<EntityDog> { private static final ResourceLocation DOGTEXTURE = new ResourceLocation("ultramod:textures/entity/dog/dog.png"); private static final ResourceLocation WOLFTEXTURE = new ResourceLocation("textures/entity/wolf/wolf_tame.png"); public RenderWolf(RenderManager p_i47187_1_) { super(p_i47187_1_, new ModelWolf(), 0.5F); this.addLayer(new LayerWolfCollar(this)); } /** * Defines what float the third param in setRotationAngles of ModelBase is */ protected float handleRotationFloat(EntityDog livingBase, float partialTicks) { return livingBase.getTailRotation(); } /** * Renders the desired {@code T} type Entity. */ public void doRender(EntityDog entity, double x, double y, double z, float entityYaw, float partialTicks) { if (entity.isWolfWet()) { float f = entity.getBrightness(partialTicks) * entity.getShadingWhileWet(partialTicks); GlStateManager.color(f, f, f); } super.doRender(entity, x, y, z, entityYaw, partialTicks); } /** * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture. */ protected ResourceLocation getEntityTexture(EntityDog entity) { return DOGTEXTURE; } } package weible.ultramod.client.model; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.entity.Entity; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class ModelWolf extends ModelBase { public ModelRenderer wolfHeadMain; public ModelRenderer wolfBody; public ModelRenderer wolfLeg1; public ModelRenderer wolfLeg2; public ModelRenderer wolfLeg3; public ModelRenderer wolfLeg4; ModelRenderer wolfTail; ModelRenderer wolfMane; public ModelWolf() { float f = 0.0F; float f1 = 13.5F; this.wolfHeadMain = new ModelRenderer(this, 0, 0); this.wolfHeadMain.addBox(-2.0F, -3.0F, -2.0F, 6, 6, 4, 0.0F); this.wolfHeadMain.setRotationPoint(-1.0F, 13.5F, -7.0F); this.wolfBody = new ModelRenderer(this, 18, 14); this.wolfBody.addBox(-3.0F, -2.0F, -3.0F, 6, 9, 6, 0.0F); this.wolfBody.setRotationPoint(0.0F, 14.0F, 2.0F); this.wolfMane = new ModelRenderer(this, 21, 0); this.wolfMane.addBox(-3.0F, -3.0F, -3.0F, 8, 6, 7, 0.0F); this.wolfMane.setRotationPoint(-1.0F, 14.0F, 2.0F); this.wolfLeg1 = new ModelRenderer(this, 0, 18); this.wolfLeg1.addBox(0.0F, 0.0F, -1.0F, 2, 8, 2, 0.0F); this.wolfLeg1.setRotationPoint(-2.5F, 16.0F, 7.0F); this.wolfLeg2 = new ModelRenderer(this, 0, 18); this.wolfLeg2.addBox(0.0F, 0.0F, -1.0F, 2, 8, 2, 0.0F); this.wolfLeg2.setRotationPoint(0.5F, 16.0F, 7.0F); this.wolfLeg3 = new ModelRenderer(this, 0, 18); this.wolfLeg3.addBox(0.0F, 0.0F, -1.0F, 2, 8, 2, 0.0F); this.wolfLeg3.setRotationPoint(-2.5F, 16.0F, -4.0F); this.wolfLeg4 = new ModelRenderer(this, 0, 18); this.wolfLeg4.addBox(0.0F, 0.0F, -1.0F, 2, 8, 2, 0.0F); this.wolfLeg4.setRotationPoint(0.5F, 16.0F, -4.0F); this.wolfTail = new ModelRenderer(this, 9, 18); this.wolfTail.addBox(0.0F, 0.0F, -1.0F, 2, 8, 2, 0.0F); this.wolfTail.setRotationPoint(-1.0F, 12.0F, 8.0F); this.wolfHeadMain.setTextureOffset(16, 14).addBox(-2.0F, -5.0F, 0.0F, 2, 2, 1, 0.0F); this.wolfHeadMain.setTextureOffset(16, 14).addBox(2.0F, -5.0F, 0.0F, 2, 2, 1, 0.0F); this.wolfHeadMain.setTextureOffset(0, 10).addBox(-0.5F, 0.0F, -5.0F, 3, 3, 4, 0.0F); } public void render(Entity entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scale) { super.render(entityIn, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scale); this.setRotationAngles(limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scale, entityIn); if (this.isChild) { float f = 2.0F; GlStateManager.pushMatrix(); GlStateManager.translate(0.0F, 5.0F * scale, 2.0F * scale); this.wolfHeadMain.renderWithRotation(scale); GlStateManager.popMatrix(); GlStateManager.pushMatrix(); GlStateManager.scale(0.5F, 0.5F, 0.5F); GlStateManager.translate(0.0F, 24.0F * scale, 0.0F); this.wolfBody.render(scale); this.wolfLeg1.render(scale); this.wolfLeg2.render(scale); this.wolfLeg3.render(scale); this.wolfLeg4.render(scale); this.wolfTail.renderWithRotation(scale); this.wolfMane.render(scale); GlStateManager.popMatrix(); } else { this.wolfHeadMain.renderWithRotation(scale); this.wolfBody.render(scale); this.wolfLeg1.render(scale); this.wolfLeg2.render(scale); this.wolfLeg3.render(scale); this.wolfLeg4.render(scale); this.wolfTail.renderWithRotation(scale); this.wolfMane.render(scale); } } public void setRotationAngles(float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scaleFactor, Entity entityIn) { super.setRotationAngles(limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scaleFactor, entityIn); this.wolfHeadMain.rotateAngleX = headPitch * 0.017453292F; this.wolfHeadMain.rotateAngleY = netHeadYaw * 0.017453292F; this.wolfTail.rotateAngleX = ageInTicks; } } package weible.ultramod.entity; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraftforge.fml.client.registry.IRenderFactory; import net.minecraftforge.fml.client.registry.RenderingRegistry; import weible.ultramod.client.model.ModelDeadCow; import weible.ultramod.client.model.ModelDog; import weible.ultramod.client.model.ModelDogDecent; import weible.ultramod.client.model.ModelWolf; import weible.ultramod.client.render.RenderDeadCow; import weible.ultramod.client.render.RenderDog; import weible.ultramod.client.render.RenderStandardDog; import weible.ultramod.client.render.RenderWolf; public class ModEntities { public static void init() { MobRegistryProcessor mbpr = new MobRegistryProcessor(); mbpr.registerEntity(EntityDeadCow.class, "dead_cow"); mbpr.registerEntity(EntityDog.class, "hershey"); RenderingRegistry.registerEntityRenderingHandler(EntityDog.class, new IRenderFactory<EntityDog>() { @Override public Render<EntityDog> createRenderFor(RenderManager manager) { // return new RenderWolf(manager, new ModelWolf(), 0.5F); return new RenderWolf(manager); } } ); RenderingRegistry.registerEntityRenderingHandler(EntityDeadCow.class, new IRenderFactory<EntityDeadCow>() { @Override public Render<EntityDeadCow> createRenderFor(RenderManager manager) { return new RenderDeadCow(manager, new ModelDeadCow(), 0.5F); } } ); } }
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.