Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

I have a problem with a mob I have made.

I am trying to spawn it with a custom item.

But if I spawn it with a custom item my mob falls just through the ground.

 

Here is the mob class:

I have copied the most from EntityCow

public class EntityUndeadMage extends EntityAnimal{
private static final String __OBFID = "CL_00001640";

    public EntityUndeadMage(World p_i1683_1_)
    {
        super(p_i1683_1_);
        this.setSize(0.9F, 1.3F);
        this.getNavigator().setAvoidsWater(true);
        this.tasks.addTask(0, new EntityAISwimming(this));
        this.tasks.addTask(1, new EntityAIPanic(this, 2.0D));
        this.tasks.addTask(2, new EntityAIMate(this, 1.0D));
        this.tasks.addTask(3, new EntityAITempt(this, 1.25D, Items.wheat, false));
        this.tasks.addTask(4, new EntityAIFollowParent(this, 1.25D));
        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 EntityUndeadMage(World world, EntityPlayer player, double x, double y, double z){
    	super(world);
    	posX = x;
    	posY = y;
    	posZ = z;
    }

    /**
     * Returns true if the newer Entity AI code should be run
     */
    public boolean isAIEnabled()
    {
        return true;
    }

    protected void applyEntityAttributes()
    {
        super.applyEntityAttributes();
        this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(10.0D);
        this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.20000000298023224D);
    }

    /**
     * Returns the sound this mob makes while it's alive.
     */
    protected String getLivingSound()
    {
        return "mob.cow.say";
    }

    /**
     * Returns the sound this mob makes when it is hurt.
     */
    protected String getHurtSound()
    {
        return "mob.cow.hurt";
    }

    /**
     * Returns the sound this mob makes on death.
     */
    protected String getDeathSound()
    {
        return "mob.cow.hurt";
    }

    protected void func_145780_a(int p_145780_1_, int p_145780_2_, int p_145780_3_, Block p_145780_4_)
    {
        this.playSound("mob.cow.step", 0.15F, 1.0F);
    }

    /**
     * Returns the volume for the sounds this mob makes.
     */
    protected float getSoundVolume()
    {
        return 0.4F;
    }

    protected Item getDropItem()
    {
        return Items.leather;
    }

    /**
     * Drop 0-2 items of this living's type. @param par1 - Whether this entity has recently been hit by a player. @param
     * par2 - Level of Looting used to kill this mob.
     */
    protected void dropFewItems(boolean p_70628_1_, int p_70628_2_)
    {
        int j = this.rand.nextInt(3) + this.rand.nextInt(1 + p_70628_2_);
        int k;

        for (k = 0; k < j; ++k)
        {
            this.dropItem(Items.leather, 1);
        }

        j = this.rand.nextInt(3) + 1 + this.rand.nextInt(1 + p_70628_2_);

        for (k = 0; k < j; ++k)
        {
            if (this.isBurning())
            {
                this.dropItem(Items.cooked_beef, 1);
            }
            else
            {
                this.dropItem(Items.beef, 1);
            }
        }
    }

    /**
     * Called when a player interacts with a mob. e.g. gets milk from a cow, gets into the saddle on a pig.
     */
    public boolean interact(EntityPlayer p_70085_1_){
	return false;
    	
    }


    public EntityUndeadMage createChild(EntityAgeable p_90011_1_)
    {
        return new EntityUndeadMage(this.worldObj);
    }

}

 

This is the way I spawn it:

public ItemStack onItemRightClick(ItemStack item, World world, EntityPlayer player){
	world.spawnEntityInWorld(new EntityUndeadMage(world, player, player.posX, player.posY, player.posZ));
	return item;

}

 

Does anybody know why it falls through the ground?

You should spawn it on server side only and away from player position. You are now trying to spawn it on both sides (client and server) and inside of players bounding box.

  • Author

I have added the !world.Isremote check and it doesn't spawn in the player boundingbox anymore.

But it still falls through the ground.

Here is the new code for summoning:

 public ItemStack onItemRightClick(ItemStack item, World world, EntityPlayer player){
	if(!world.isRemote){
	world.spawnEntityInWorld(new EntityUndeadMage(world, player, player.posX, player.posY, player.posZ - 2));
	}
	return item;

}

Try adding 0.5F or 1.0F to Y-coordinate and let me know what happens.

  • Author

I spawn it 1 meter above the player now.

 

public ItemStack onItemRightClick(ItemStack item, World world, EntityPlayer player){
	if(!world.isRemote){
	world.spawnEntityInWorld(new EntityUndeadMage(world, player, player.posX, player.posY + 1, player.posZ - 2));
	}
	return item;

}

 

There happens the same as before and I have used glass this time.

now I see that the entity disappears after 1 second.

In the Entity constructor try this:

public EntityUndeadMage(World world, EntityPlayer player, double x, double y, double z){
    	super(world);
setSize(1.0F, 1.0F);
setPosition(x, y, z);
    	prevPosX = x;
    	prevPosY = y;
    	prevPosZ = z;
}

  • Author

I have changed the constructor.

The entity doesn't fall through blocks anymore and doesn't disappear.

This really helped but my entity can't walk.

It's because you haven't add any AI tasks, so put this.tasks.addTask(1, new EntityAIWander(this, 1.0D)); to your constructor as well.

  • Author

Oops :D.

The tasks are in the another constructor.

My problem is solved now, I am going to make the entity further myself.

Thank you.

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...

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.