Jump to content

Adding a mob entity


julesmaster7

Recommended Posts

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:

2hdr9eo.png

 

This is what it looks like in game:

qs5liu.png

 

Thanks,

 

JulesMaster7

Link to comment
Share on other sites

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  :P

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.

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.