Jump to content

Recommended Posts

Posted

I want to disable crop trampling.  The two relevant pieces of code are:

 

BlockFarmland.class

    /**
     * Block's chance to react to a living entity falling on it.
     */
    public void onFallenUpon(World worldIn, BlockPos pos, Entity entityIn, float fallDistance)
    {
        if (!worldIn.isRemote && entityIn.canTrample(worldIn, this, pos, fallDistance)) // Forge: Move logic to Entity#canTrample
        {
            this.turnToDirt(worldIn, pos);
        }

        super.onFallenUpon(worldIn, pos, entityIn, fallDistance);
    }

 

Entity.class

    public boolean canTrample(World world, Block block, BlockPos pos, float fallDistance)
    {
        return world.rand.nextFloat() < fallDistance - 0.5F
            && this instanceof EntityLivingBase
            && (this instanceof EntityPlayer || world.getGameRules().getBoolean("mobGriefing"))
            && this.width * this.width * this.height > 0.512F;
    }

 

The only way I can think of to turn off trampling globally is to create a new subclass Entity for every Entity in the game, override the canTrample method, and then replace all the default spawns with my new subclass.  This... seems like a bad idea.  (Maybe there is an easier way, but I don't see any place here for a global override)

 

I suggest adding an event to onFallenUpon.  First fire the TrampledEvent where it could be set to Result.Deny.  If left on Result.Default, it would call the Entity.canTrample method to produce the default behavior.  This would allow for not only global overrides, but also more detailed behavior like allowing/denying based off what's growing.

Posted

What version are you using?

This was added 3 months ago.

This is my Forum Signature, I am currently attempting to transform it into a small guide for fixing easier issues using spoiler blocks to keep things tidy.

 

As the most common issue I feel I should put this outside the main bulk:

The only official source for Forge is https://files.minecraftforge.net, and the only site I trust for getting mods is CurseForge.

If you use any site other than these, please take a look at the StopModReposts project and install their browser extension, I would also advise running a virus scan.

 

For players asking for assistance with Forge please expand the spoiler below and read the appropriate section(s) in its/their entirety.

  Reveal hidden contents

 

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.