Jump to content

Awesome_Spider

Forge Modder
  • Posts

    892
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by Awesome_Spider

  1. Well, I had that problem playing in 8u25 (on a forge modpack) did some research and I think 8u11 is safe (i think that's the one I'm on). There was a bug that forge was taking advantage of and in the latest java that bug was fixed. But you could always switch to Java 7 instead. :)

  2. 2nsrz45.jpg

     

    Is this how it looks like? If yes and you still have bad buildpath error, then you have some other more inside problem.

    Problems like that are hard to resolve via posts on forum, on Skype maybe.

     

    You can always download new forge and install it from very beginning and then move your src. (I recommend this option in order to save time).

     

    Ya it does. :/ I think i'll just move my src into a Forge that is already 1.7.10. Thanks for the help. :)

  3. Did you do gradlew eclipse again?

     

    That's what caused the problem.

     

    This is strictly buildpath problem, no eclipse command needed.

     

    WARNING - Before you do ANYTHING, make backup of your workspace/src file.

     

    Launch eclipse, right-click on project, go to properties. Click on Java Build Path (probably 4th on left), choose "Source" bookmark.

    "Build path duplicate entry." Is when you have 2 src folders in "Source" bookmark. Remove one (old one). In case you removed wrong one you will have to rebuild, or just retry with your backup.

     

    Ok, I will try that. :) wish me luck.

     

    Edit: which one is it? In "Source", there is "Minecraft/src/main/java" and "Minecraft/src/mail/resourses". I think they are both required. But if not, which one do I delete?

  4. All you usually have to do is change the forge version in your build.gradle and re-run the setup tasks.

     

    Well... I have a problem, I did what you said, and I opened it up after and it displayed an exclamation mark on the project. I looked at the errors and there is two. Error #1 says: "Build path duplicate entry: 'org.eclipse.jdt.launcher.JRE_CONTAINER' for project 'Minecraft'". And Error #2 says: "The project cannot be buit until build path errors are resolved". I think error #2 is the same thing wrong as Error #1, but I could be wrong. Help! :(

  5. Wow, two questions in one day, lol. Ok so I want to know how to update to forge 1.7.10. My current version is 1.7.2 and I heard that has errors. So, how do I update my Forge? My best guess I that I copy my coding that I have already, and paste it in too the 1.7.10 forge, but I doubt I'm even close to right since I'm a beginner at modding.

     

    Thanks In advance. :)

  6. I need some help How do I go about creating a dimension? I want to be structured kind of like the overworld, but with a custom type of stone and a custom type of grass and dirt. No trees. Oh and a custom type of liquid instead of water. I have already created the grass, dirt, and stone blocks. I need help with the rest (creating a dimension and creating a liquid). :)

  7. So, I tryed to do a google search for this and came up with nothing. So i decided to come here to see if the experts can answer my question. ;)

     

    My question is, how do I make an icon and text appear above the lives in game? For example, if you have seen flans mod, much like it does when it displays the ammo number when you have a gun, that is kind of like what I want.

     

    Thanks in advance. :)

  8. 1st of all, for what type to extend, that depends, do you want it to be peaceful? Do you want it to be aggressive? If peaceful: The EntityCreature class. If aggressive: The EntityMob class. 2nd of all, for strength, speed, life, etc, you use some code like this:

    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);
        }
    

    You could just paste that right in you mob class and change the values how you like. :)

    As for making mobs talk I don't know how other than recording your friend talking and incorporate the sound files from that... I'm not sure. Hope this helps. :)

  9. Try calling super.onLivingUpdate() in your override of onLivingUpdate()

     

    I can't recall precicely, but I know the AI and movement states are updated from one of the living-entity update methods -- and you have overridden it without calling the super-class method, which means those AI updates likely are not occurring at all.

     

    Also...use the @Override annotation where appropriate (such as on that onLivingUpdate() method) -- will remind you of times where super() should be called, and even give errors when the MC code changes between updates / method names change.

     

    Never thought of that... I will try that.

     

    Edit: Oh no way! It works, thx. :)

  10. So in my last topic my entity wasn't rendering, now I have another problem.  :-\ My entity's AIs aren't working. I spawn one in and it doesn't move, attack or track anything. Here is the code for it:

     

    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;
           }
       }
    }
    

     

    Any help is appreciated, if you need more info just ask.

  11. I don't see where you call registerRenderers, or the SidedProxy annotation. By the way, there is a version of registerGlobalEntityId that accepts color parameters.

     

    It's there now. Any other info you need?

     

    Oh and btw I know there is a version of registerGlobalEntityId that take colors, it just wasn't working for me. :)

     

    Edit: Wait a second... did you say I have to call registerRenderers? I think I just created it is all. I will try that :)

  12. 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 Terms of Use.