Posted October 15, 20168 yr Hi there, I am adding a mob to the game in forge 1.8 and my model is all gliched up in the game. There is transparent bits, bits in the wrong spot and more! I used Techne to create my model and this is the model file: package com.julesmaster7.awesomemod.entity.passive; 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.minecraft.util.MathHelper; public class ModelAwesomeMob extends ModelBase { ModelRenderer leg1; ModelRenderer leg2; ModelRenderer body; ModelRenderer arm1; ModelRenderer arm2; ModelRenderer head; ModelRenderer hair1; ModelRenderer hair2; ModelRenderer hair3; ModelRenderer ear1; ModelRenderer ear2; ModelRenderer eye1; ModelRenderer eye2; ModelRenderer nose; ModelRenderer mouth; public ModelAwesomeMob() { int textureWidth = 64; int textureHeight = 64; leg1 = new ModelRenderer(this, 24, 25); leg1.addBox(0F, 0F, 0F, 2, 8, 2); leg1.setRotationPoint(-1F, 16F, -4F); leg1.setTextureSize(64, 64); leg1.mirror = true; setRotation(leg1, 0F, 0F, 0F); leg2 = new ModelRenderer(this, 33, 25); leg2.addBox(0F, 0F, 0F, 2, 8, 2); leg2.setRotationPoint(-1F, 16F, 2F); leg2.setTextureSize(64, 64); leg2.mirror = true; setRotation(leg2, 0F, 0F, 0F); body = new ModelRenderer(this, 0, 0); body.addBox(0F, 0F, 0F, 8, 15, 10); body.setRotationPoint(-4F, 2F, -5F); body.setTextureSize(64, 64); body.mirror = true; setRotation(body, 0F, 0F, 0F); arm1 = new ModelRenderer(this, 36, 12); arm1.addBox(0F, 0F, 0F, 2, 10, 2); arm1.setRotationPoint(0F, 5F, 4F); arm1.setTextureSize(64, 64); arm1.mirror = true; setRotation(arm1, 0.2602503F, 0F, 0F); arm2 = new ModelRenderer(this, 36, 0); arm2.addBox(0F, 0F, 0F, 2, 10, 2); arm2.setRotationPoint(0F, 4F, -6F); arm2.setTextureSize(64, 64); arm2.mirror = true; setRotation(arm2, -0.2602503F, 0F, 0F); head = new ModelRenderer(this, 0, 25); head.addBox(0F, 0F, 0F, 6, 7, 6); head.setRotationPoint(-3F, -4F, -3F); head.setTextureSize(64, 64); head.mirror = true; setRotation(head, 0F, 0F, 0F); hair1 = new ModelRenderer(this, 0, 38); hair1.addBox(0F, 0F, 0F, 7, 1, 4); hair1.setRotationPoint(-3.5F, -4.5F, -1F); hair1.setTextureSize(64, 64); hair1.mirror = true; setRotation(hair1, 0F, 0F, 0F); hair2 = new ModelRenderer(this, 24, 39); hair2.addBox(0F, 0F, 0F, 7, 1, 2); hair2.setRotationPoint(-3.5F, -3.5F, -4.5F); hair2.setTextureSize(64, 64); hair2.mirror = true; setRotation(hair2, 0.5948578F, 0F, 0F); hair3 = new ModelRenderer(this, 24, 35); hair3.addBox(0F, 0F, 0F, 7, 1, 2); hair3.setRotationPoint(-3.5F, -4.5F, 2.5F); hair3.setTextureSize(64, 64); hair3.mirror = true; setRotation(hair3, -0.5948606F, 0F, 0F); ear1 = new ModelRenderer(this, 26, 0); ear1.addBox(0F, 0F, 0F, 2, 2, 1); ear1.setRotationPoint(-1F, -2F, 2.5F); ear1.setTextureSize(64, 64); ear1.mirror = true; setRotation(ear1, 0F, 0F, 0F); ear2 = new ModelRenderer(this, 26, 4); ear2.addBox(0F, 0F, 0F, 2, 2, 1); ear2.setRotationPoint(-1F, -2F, -3.5F); ear2.setTextureSize(64, 64); ear2.mirror = true; setRotation(ear2, 0F, 0F, 0F); eye1 = new ModelRenderer(this, 0, 25); eye1.addBox(0F, 0F, 0F, 1, 1, 1); eye1.setRotationPoint(2.5F, -2F, 1F); eye1.setTextureSize(64, 64); eye1.mirror = true; setRotation(eye1, 0F, 0F, 0F); eye2 = new ModelRenderer(this, 0, 27); eye2.addBox(0F, 0F, 0F, 1, 1, 1); eye2.setRotationPoint(2.5F, -2F, -2F); eye2.setTextureSize(64, 64); eye2.mirror = true; setRotation(eye2, 0F, 0F, 0F); nose = new ModelRenderer(this, 18, 25); nose.addBox(0F, 0F, 0F, 1, 1, 1); nose.setRotationPoint(2.5F, -1F, -0.5F); nose.setTextureSize(64, 64); nose.mirror = true; setRotation(nose, 0F, 0F, 0F); mouth = new ModelRenderer(this, 0, 0); mouth.addBox(0F, 0F, 0F, 1, 1, 4); mouth.setRotationPoint(2.5F, 0.5F, -2F); mouth.setTextureSize(64, 64); mouth.mirror = true; setRotation(mouth, 0F, 0F, 0F); } public void render(Entity entity, float time, float limbSwingDistance, float f2, float headYRotation, float headXRotation, float Ytranslation) { super.render(entity, time, limbSwingDistance, f2, headYRotation, headXRotation, Ytranslation); setRotationAngles(time, limbSwingDistance, f2, headYRotation, headXRotation, Ytranslation, entity); if (this.isChild) { float div = 2.0F; GlStateManager.pushMatrix(); GlStateManager.scale(1.0F / div, 1.0F / div, 1.0F / div); GlStateManager.translate(0.0F, 24.0F * Ytranslation, 0.0F); leg1.render(Ytranslation); leg2.render(Ytranslation); body.render(Ytranslation); arm1.render(Ytranslation); arm2.render(Ytranslation); head.render(Ytranslation); hair1.render(Ytranslation); hair2.render(Ytranslation); hair3.render(Ytranslation); ear1.render(Ytranslation); ear2.render(Ytranslation); eye1.render(Ytranslation); eye2.render(Ytranslation); nose.render(Ytranslation); mouth.render(Ytranslation); GlStateManager.popMatrix(); } else { leg1.render(Ytranslation); leg2.render(Ytranslation); body.render(Ytranslation); arm1.render(Ytranslation); arm2.render(Ytranslation); head.render(Ytranslation); hair1.render(Ytranslation); hair2.render(Ytranslation); hair3.render(Ytranslation); ear1.render(Ytranslation); ear2.render(Ytranslation); eye1.render(Ytranslation); eye2.render(Ytranslation); nose.render(Ytranslation); mouth.render(Ytranslation); } } private void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = x; model.rotateAngleY = y; model.rotateAngleZ = z; } public void setRotationAngles(float time, float limbSwingDistance, float f2, float headYRotation, float headXRotation, float f5, Entity entity) { super.setRotationAngles(time, limbSwingDistance, f2, headYRotation, headXRotation, f5, entity); this.head.rotateAngleX = headXRotation / (180F / (float)Math.PI); this.head.rotateAngleY = headYRotation / (180F / (float)Math.PI); this.body.rotateAngleX = ((float)Math.PI / 2F); this.leg1.rotateAngleX = MathHelper.cos(time * 0.6662F) * 1.4F * limbSwingDistance; //this.leg2.rotateAngleX = Math this.arm1.rotateAngleX = MathHelper.cos(time * 0.6662F) * 1.4F * limbSwingDistance; this.arm2.rotateAngleX = MathHelper.cos(time * 0.6662F + (float)Math.PI) * 1.4F * limbSwingDistance; this.arm1.rotateAngleZ = 0.0F; this.arm2.rotateAngleZ = 0.0F; this.leg1.rotateAngleX = MathHelper.cos(time * 0.6662F) * 1.4F * limbSwingDistance; this.leg2.rotateAngleX = MathHelper.cos(time * 0.6662F + (float)Math.PI) * 1.4F * limbSwingDistance; this.leg1.rotateAngleY = 0.0F; this.leg2.rotateAngleY = 0.0F; } } Here is the Entity class: package com.julesmaster7.awesomemod.entity.passive; import com.julesmaster7.awesomemod.init.AwesomeItems; import net.minecraft.entity.EntityAgeable; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.EntityAIFollowParent; import net.minecraft.entity.ai.EntityAILookIdle; import net.minecraft.entity.ai.EntityAIMate; import net.minecraft.entity.ai.EntityAIPanic; import net.minecraft.entity.ai.EntityAISwimming; import net.minecraft.entity.ai.EntityAITempt; import net.minecraft.entity.ai.EntityAIWander; import net.minecraft.entity.ai.EntityAIWatchClosest; import net.minecraft.entity.monster.EntityMob; import net.minecraft.entity.passive.EntityAnimal; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.pathfinding.PathNavigateGround; import net.minecraft.world.World; public class EntityAwesomeMob extends EntityAnimal { public EntityAwesomeMob(World worldIn) { super(worldIn); this.setSize(0.7F, 2.0F); ((PathNavigateGround)this.getNavigator()).setAvoidsWater(true); this.tasks.addTask(0, new EntityAISwimming(this)); this.tasks.addTask(1, new EntityAIPanic(this, 1.5D)); this.tasks.addTask(2, new EntityAIMate(this, 1.0D)); this.tasks.addTask(3, new EntityAITempt(this, 1.5D, AwesomeItems.itemCandy, false)); this.tasks.addTask(3, new EntityAITempt(this, 1.5D, AwesomeItems.itemChewyCandy, false)); this.tasks.addTask(4, new EntityAIFollowParent(this, 1.5D)); this.tasks.addTask(5, new EntityAIWander(this, 1.0D)); this.tasks.addTask(6, new EntityAIWatchClosest(this, EntityPlayer.class, 6.0F)); this.tasks.addTask(7, new EntityAILookIdle(this)); } public boolean isAIEnabled() { return true; } protected void applyEntityAttributes() { super.applyEntityAttributes(); this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(10.0D); this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.20000000298023224D); } public boolean isBreedingItem(ItemStack itemstack) { return itemstack == null ? false :itemstack.getItem() == AwesomeItems.itemCandy || itemstack.getItem() == AwesomeItems.itemChewyCandy; } public EntityAwesomeMob createChild(EntityAgeable ageable) { return new EntityAwesomeMob(worldObj); } } Here is the Render Class that I made: package com.julesmaster7.awesomemod.entity.passive; import com.julesmaster7.awesomemod.Reference; import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.renderer.entity.RenderBiped; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; public class RenderBipedAwesome extends RenderLiving { private String mobTextures; public RenderBipedAwesome(ModelBase modelBipedIn, float shadowSizeIn, String mobTextures) { super(Minecraft.getMinecraft().getRenderManager(), modelBipedIn, shadowSizeIn); this.mobTextures = mobTextures; } protected ResourceLocation getEntityTexture(Entity entity) { return new ResourceLocation(Reference.MOD_ID, mobTextures); } /*protected ResourceLocation getEntityTexture(Entity entity) { return this.getEntityTexture((EntityAwesomeMob)entity); }*/ } And lastly here is my client proxy class: package com.julesmaster7.awesomemod.proxy; import com.julesmaster7.awesomemod.entity.passive.ModelAwesomeMob; import com.julesmaster7.awesomemod.entity.EntityAwesome; import com.julesmaster7.awesomemod.entity.passive.EntityAwesomeMob; import com.julesmaster7.awesomemod.entity.passive.RenderBipedAwesome; import com.julesmaster7.awesomemod.init.AwesomeBlocks; import com.julesmaster7.awesomemod.init.AwesomeItems; import com.julesmaster7.awesomemod.tileentity.TileEntityAwesomeJar; import com.julesmaster7.awesomemod.tileentity.render.RendererAwesomeJar; import net.minecraft.client.Minecraft; import net.minecraftforge.fml.client.registry.ClientRegistry; import net.minecraftforge.fml.client.registry.RenderingRegistry; public class ClientProxy extends CommonProxy { @Override public void init() { AwesomeBlocks.registerRenders(); AwesomeItems.registerRenders(); EntityAwesome.mainRegistry(); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityAwesomeJar.class, new RendererAwesomeJar()); RenderingRegistry.registerEntityRenderingHandler(EntityAwesomeMob.class, new RenderBipedAwesome(new ModelAwesomeMob(), 0.4F, "textures/entity/awesome_mob.png")); } @Override public void preInit() { } } This is what it is supposed to look like: This is what it looks like in game: Thanks, JulesMaster7
October 15, 20168 yr A couple pics might draw comments from the modelers here, especially if you have a pic of what your mob is supposed to look like (can Techne show you that?) and can compare it to what's glitched. Unfortunately, I can't help with model design. I've only added one mob, and I "cheated" by copying a vanilla model to recolor The debugger is a powerful and necessary tool in any IDE, so learn how to use it. You'll be able to tell us more and get better help here if you investigate your runtime problems in the debugger before posting.
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.