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.

[1.19.2] [SOLVED] How can i make a farmland wet in an area of 3x3?

Featured Replies

Posted

I making a block that can irrigate an area of 3x3 and this is how is should be like.

image.png
 

Once you click to activate the block, the particles are added to the area that will be irrigated. The problem i'm having is that i don't know how to make the farmland wet. I've tried to do so, asked ChatGPT for help but could not get to any result.
 

Full code of the custom block.

Spoiler
import net.minecraft.core.BlockPos;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.util.RandomSource;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.level.block.state.properties.BooleanProperty;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;

public class BaseIrrigatorBlock extends Block {
    public static final BooleanProperty IRRIGATING = BooleanProperty.create("irrigating");
    public BaseIrrigatorBlock(Properties properties) {
        super(properties);
    }

    private static final VoxelShape SHAPE =
            Block.box(0, 0, 0, 15.99, 6.5, 16);

    @Override
    public void animateTick(BlockState state, Level level, BlockPos pos, RandomSource rand) {
        if (state.getValue(BaseIrrigatorBlock.IRRIGATING)) {
            for (int i = 0; i < 9; i++) {
                double xOffset = rand.nextDouble() * 3 - 1.5;
                double zOffset = rand.nextDouble() * 3 - 1.5;

                level.addParticle(
                        ParticleTypes.RAIN,
                        pos.getX() + 0.5 + xOffset,
                        pos.getY() + 0.5,
                        pos.getZ() + 0.5 + zOffset,
                        0,
                        0.05d,
                        0d);
            }
        }
    }
  
  	private void moistenFarmland() {
    	// method to make farmland wet in the area
    }

    @Override
    public InteractionResult use(BlockState state, Level level, BlockPos blockPos, Player player, InteractionHand hand, BlockHitResult hitResult) {
        if (!level.isClientSide() && hand == InteractionHand.MAIN_HAND) {
            level.setBlock(blockPos, state.cycle(IRRIGATING), 3);
        }

        return super.use(state, level, blockPos, player, hand, hitResult);
    }

    @Override
    protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
        builder.add(IRRIGATING);
    }

    @Override
    public VoxelShape getShape(BlockState p_60555_, BlockGetter p_60556_, BlockPos p_60557_, CollisionContext p_60558_) {
        return SHAPE;
    }
}

 

How can i make the farmland wet? Should i receive any parameters in the moistenFarmland method? If so, what parameters?

Edited by lvcas
Solved

Did you take a look at the FarmBlock class, and see how Minecraft checks/sets moisture?

Looks like perhaps it's done in the randomTick method for that block:

p_221140_.setBlock(p_221141_, p_221139_.setValue(MOISTURE, Integer.valueOf(7)), 2);

See what you can cobble together, and if it doesn't work, show what you tried and what the results were vs. what you expect.

Also a github repo of your project so it can be cloned/downloaded and built/run/debugged would be useful for others to help find errors as well. :)

On 8/8/2023 at 3:43 AM, lvcas said:

I've tried to do so, asked ChatGPT for help but could not get to any result.

took me a while to stop shuddering.
you asked a guessing engine how to do something?

 

you have two options: one -
look inside the game code. if you have no patience to do so, you will not make a decent mod. ever. 
option two - ask living people on forge forum or NF discord.

please share the link then.

i would agree that redirecting towards NF communities is somewhat unfair, but only starting now that i know that there is a forge discord.

  • Author
On 8/11/2023 at 4:21 PM, MFMods said:

took me a while to stop shuddering.
you asked a guessing engine how to do something?

 

you have two options: one -
look inside the game code. if you have no patience to do so, you will not make a decent mod. ever. 
option two - ask living people on forge forum or NF discord.

Well, ChatGPT actually helped me tbh haha
I've looked through the game code and it helped me a lot too and eventually i made it work, with some bugs but it's working.
Gonna join forge discord and ask for help there! Thanks!

  • lvcas changed the title to [1.19.2] [SOLVED] How can i make a farmland wet in an area of 3x3?

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.