Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Awesome_Spider

Forge Modder
  • Posts

    892
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by Awesome_Spider

  1. So I recently added an entity to my mod. It is supposed to render a standard biped, but instead it renders like this:cBGvT9M

    Here is the code:

    The entity's class:

    public class GreyMan
    			extends EntityMob{
    
    public GreyMan(World par1World) {
    	super(par1World);
            this.isImmuneToFire = true;
            this.experienceValue = 10;
            
            this.getNavigator().setBreakDoors(true);
            this.tasks.addTask(0, new EntityAISwimming(this));
            this.tasks.addTask(2, new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.0D, false));
            this.tasks.addTask(4, new EntityAIAttackOnCollide(this, EntityVillager.class, 1.0D, true));
            this.tasks.addTask(5, new EntityAIMoveTowardsRestriction(this, 1.0D));
            this.tasks.addTask(6, new EntityAIMoveThroughVillage(this, 1.0D, false));
            this.tasks.addTask(7, new EntityAIWander(this, 1.0D));
            this.tasks.addTask(8, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F));
            this.tasks.addTask(8, new EntityAILookIdle(this));
            this.tasks.addTask(9, new EntityAIOpenDoor(this, true));
            this.targetTasks.addTask(1, new EntityAIHurtByTarget(this, true));
            this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 0, true));
            this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityVillager.class, 0, false));
            this.setSize(0.6F, 1.8F);
    }
    
        protected void applyEntityAttributes()
        {
            super.applyEntityAttributes();
            this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(20.0D);
            this.getEntityAttribute(SharedMonsterAttributes.followRange).setBaseValue(40.0D);
            this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.23000000417232513D);
            this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(5.0D);
        }
    
        /**
         * Returns the sound this mob makes while it's alive.
         */
        protected String getLivingSound()
        {
            return "mob.blaze.breathe";
        }
        
        /**
        * Returns the sound this mob makes when it is hurt.
        */
       protected String getHurtSound()
       {
           return "mob.blaze.hit";
       }
    
       /**
        * Returns the sound this mob makes on death.
        */
       protected String getDeathSound()
       {
           return "mob.blaze.death";
       }
       
       protected void func_145780_a(int p_145780_1_, int p_145780_2_, int p_145780_3_, Block p_145780_4_)
       {
           this.playSound("mob.skeleton.step", 0.15F, 1.0F);
       }
       
       /**
        * Called frequently so the entity can update its state every tick as required. For example, zombies and skeletons
        * use this to react to sunlight and start to burn.
        */
       public void onLivingUpdate()
       {
       if (this.isWet())
    	   this.teleportRandomly();
       }
       
       /**
        * Teleport the grey man to a random nearby position
        */
       protected boolean teleportRandomly()
       {
           double d0 = this.posX + (this.rand.nextDouble() - 0.5D) * 64.0D;
           double d1 = this.posY + (double)(this.rand.nextInt(64) - 32);
           double d2 = this.posZ + (this.rand.nextDouble() - 0.5D) * 64.0D;
           return this.teleportTo(d0, d1, d2);
       }
       
       /**
        * Teleport the grey man
        */
       protected boolean teleportTo(double par1, double par3, double par5)
       {
           EnderTeleportEvent event = new EnderTeleportEvent(this, par1, par3, par5, 0);
           if (MinecraftForge.EVENT_BUS.post(event)){
               return false;
           }
           double d3 = this.posX;
           double d4 = this.posY;
           double d5 = this.posZ;
           this.posX = event.targetX;
           this.posY = event.targetY;
           this.posZ = event.targetZ;
           boolean flag = false;
           int i = MathHelper.floor_double(this.posX);
           int j = MathHelper.floor_double(this.posY);
           int k = MathHelper.floor_double(this.posZ);
    
           if (this.worldObj.blockExists(i, j, k))
           {
               boolean flag1 = false;
    
               while (!flag1 && j > 0)
               {
                   Block block = this.worldObj.getBlock(i, j - 1, k);
    
                   if (block.getMaterial().blocksMovement())
                   {
                       flag1 = true;
                   }
                   else
                   {
                       --this.posY;
                       --j;
                   }
               }
    
               if (flag1)
               {
                   this.setPosition(this.posX, this.posY, this.posZ);
    
                   if (this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox).isEmpty() && !this.worldObj.isAnyLiquid(this.boundingBox))
                   {
                       flag = true;
                   }
               }
           }
    
           if (!flag)
           {
               this.setPosition(d3, d4, d5);
               return false;
           }
           else
           {
               short short1 = 128;
    
               for (int l = 0; l < short1; ++l)
               {
                   double d6 = (double)l / ((double)short1 - 1.0D);
                   float f = (this.rand.nextFloat() - 0.5F) * 0.2F;
                   float f1 = (this.rand.nextFloat() - 0.5F) * 0.2F;
                   float f2 = (this.rand.nextFloat() - 0.5F) * 0.2F;
                   double d7 = d3 + (this.posX - d3) * d6 + (this.rand.nextDouble() - 0.5D) * (double)this.width * 2.0D;
                   double d8 = d4 + (this.posY - d4) * d6 + this.rand.nextDouble() * (double)this.height;
                   double d9 = d5 + (this.posZ - d5) * d6 + (this.rand.nextDouble() - 0.5D) * (double)this.width * 2.0D;
                   this.worldObj.spawnParticle("portal", d7, d8, d9, (double)f, (double)f1, (double)f2);
               }
    
               this.worldObj.playSoundEffect(d3, d4, d5, "mob.endermen.portal", 1.0F, 1.0F);
               this.playSound("mob.endermen.portal", 1.0F, 1.0F);
               return true;
           }
       }
    }
    

     

    The model's code:

    // Date: 9/7/2014 6:33:49 AM
    // Template version 1.1
    // Java generated by Techne
    // Keep in mind that you still need to fill in some blanks
    // - ZeuX
    
    package com.awsp8.wizardry.entity.model;
    
    import net.minecraft.client.model.ModelBase;
    import net.minecraft.client.model.ModelRenderer;
    import net.minecraft.entity.Entity;
    
    public class ModelGreyMan extends ModelBase{
      //fields
        ModelRenderer head;
        ModelRenderer body;
        ModelRenderer rightarm;
        ModelRenderer leftarm;
        ModelRenderer rightleg;
        ModelRenderer leftleg;
      
      public ModelGreyMan()
      {
        textureWidth = 64;
        textureHeight = 32;
        
          head = new ModelRenderer(this, 0, 0);
          head.addBox(-4F, -8F, -4F, 8, 8, ;
          head.setRotationPoint(0F, 0F, 0F);
          head.setTextureSize(64, 32);
          head.mirror = true;
          setRotation(head, 0F, 0F, 0F);
          body = new ModelRenderer(this, 16, 16);
          body.addBox(-4F, 0F, -2F, 8, 12, 4);
          body.setRotationPoint(0F, 0F, 0F);
          body.setTextureSize(64, 32);
          body.mirror = true;
          setRotation(body, 0F, 0F, 0F);
          rightarm = new ModelRenderer(this, 40, 16);
          rightarm.addBox(-3F, -2F, -2F, 4, 12, 4);
          rightarm.setRotationPoint(-5F, 2F, 0F);
          rightarm.setTextureSize(64, 32);
          rightarm.mirror = true;
          setRotation(rightarm, 0F, 0F, 0F);
          leftarm = new ModelRenderer(this, 40, 16);
          leftarm.addBox(-1F, -2F, -2F, 4, 12, 4);
          leftarm.setRotationPoint(5F, 2F, 0F);
          leftarm.setTextureSize(64, 32);
          leftarm.mirror = true;
          setRotation(leftarm, 0F, 0F, 0F);
          rightleg = new ModelRenderer(this, 0, 16);
          rightleg.addBox(-2F, 0F, -2F, 4, 12, 4);
          rightleg.setRotationPoint(-2F, 12F, 0F);
          rightleg.setTextureSize(64, 32);
          rightleg.mirror = true;
          setRotation(rightleg, 0F, 0F, 0F);
          leftleg = new ModelRenderer(this, 0, 16);
          leftleg.addBox(-2F, 0F, -2F, 4, 12, 4);
          leftleg.setRotationPoint(2F, 12F, 0F);
          leftleg.setTextureSize(64, 32);
          leftleg.mirror = true;
          setRotation(leftleg, 0F, 0F, 0F);
      }
      
      public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
      {
        super.render(entity, f, f1, f2, f3, f4, f5);
        setRotationAngles(f, f1, f2, f3, f4, f5, entity);
        head.render(f5);
        body.render(f5);
        rightarm.render(f5);
        leftarm.render(f5);
        rightleg.render(f5);
        leftleg.render(f5);
      }
      
      private void setRotation(ModelRenderer model, float x, float y, float z)
      {
        model.rotateAngleX = x;
        model.rotateAngleY = y;
        model.rotateAngleZ = z;
      }
      
      public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity)
      {
        super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
      }
    
    }
    

     

    The rendering class:

    package com.awsp8.wizardry.entity.render;
    
    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.entity.Entity;
    import net.minecraft.entity.EntityLiving;
    import net.minecraft.util.ResourceLocation;
    
    import com.awsp8.wizardry.Entities.GreyMan;
    import com.awsp8.wizardry.entity.model.ModelGreyMan;
    
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    
    @SideOnly(Side.CLIENT)
    public class RenderGreyMan
    			extends RenderLiving{
    
    public RenderGreyMan(ModelBase modelBase, float par2) {
    	super(modelBase, par2);
    }
    
    @Override
    protected ResourceLocation getEntityTexture(Entity var1) {
    	return new ResourceLocation("wizardry", "/textures/entities/greyMan.png");
    }
    }

     

    The proxy class:

    package com.awsp8.wizardry;
    
    import net.minecraft.client.model.ModelBiped;
    
    import com.awsp8.wizardry.Entities.GreyMan;
    import com.awsp8.wizardry.entity.model.ModelGreyMan;
    import com.awsp8.wizardry.entity.render.RenderGreyMan;
    
    import cpw.mods.fml.client.registry.RenderingRegistry;
    
    public class ClientProxy
    			extends CommonProxy {
    
    @Override
        public void registerRenderers() {
            RenderingRegistry.registerEntityRenderingHandler(GreyMan.class, new RenderGreyMan(new ModelGreyMan(), 0.5F)); 
        }
    }
    

     

    In the main class the proxy is registered like this:

        @SidedProxy(clientSide = Info.clientSide, serverSide = Info.serverSide)
        public static CommonProxy proxy;
    

     

    My mod's init method in the main class:

        	registerEntity(GreyMan.class, "greyMan", 660000, 050505);
            addSpawn(GreyMan.class, 25, 2, 6, new BiomeGenBase[] {});
    

    Later in the main class:

    
    
        public void registerEntity(Class<? extends Entity> entityClass, String entityName, int bkEggColor, int fgEggColor) {
        	int id = EntityRegistry.findGlobalUniqueEntityId();
        	EntityRegistry.registerGlobalEntityID(entityClass, entityName, id);
        	EntityList.entityEggs.put(Integer.valueOf(id), new EntityList.EntityEggInfo(id, bkEggColor, fgEggColor));
        }
    
    
    public void addSpawn(Class<? extends EntityLiving> entityClass, int spawnProb, int min, int max, BiomeGenBase[] biomes) {
    	if (spawnProb > 0) {
    			EntityRegistry.addSpawn(entityClass, spawnProb, min, max, EnumCreatureType.creature, biomes);
    	}
    }
    

     

    I have been troubleshooting this code for a week now, any help is appreciated. :)

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.