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 all the things set up, but i dont know how to check for water and hydrate it, it seems that there is suppose to be a updateTick() method for it but i can't find it anywhere, and check neighbor update wont work because it is not suitable for this case, so how am i suppose to update its blockstate? Do i really have to go for Tile Entity? I did see they used a tick() method from block class which is depreciated and i tried and its not ticking at all. So how exactly did they do that on vanilla?

Edited by Thomas107500

23 minutes ago, Thomas107500 said:

i tried and its not ticking at all

What exactly did you try? Did you @Override the method?

Post code and logs please, it helps to see the big picture!

 

23 minutes ago, Thomas107500 said:

So how exactly did they do that on vanilla?

Did you look at farmland? And probably also at crop/bush blocks to make sure the logic is not in there.

  • Author

So what i did is this:

 

@Override

public void tick(BlockState state, ServerWorld worldIn, BlockPos pos, Random rand) 
    {
        LOGGER.error("farmland tick called !!!");
        breakCrop(state, worldIn, pos);
        super.tick(state, worldIn, pos, rand);
    }

 

i am extending FarmlandBlock, so i called its super method, breakCrop is another static method i made and wanted to call, the super method basicly contains the code to attempt to check for water and change blockstate:

 

public void tick(BlockState state, ServerWorld worldIn, BlockPos pos, Random rand) {
      if (!state.isValidPosition(worldIn, pos)) {
         turnToDirt(state, worldIn, pos);
      } else {
         int i = state.get(MOISTURE);
         if (!hasWater(worldIn, pos) && !worldIn.isRainingAt(pos.up())) {
            if (i > 0) {
               worldIn.setBlockState(pos, state.with(MOISTURE, Integer.valueOf(i - 1)), 2);
            } else if (!hasCrops(worldIn, pos)) {
               turnToDirt(state, worldIn, pos);
            }
         } else if (i < 7) {
            worldIn.setBlockState(pos, state.with(MOISTURE, Integer.valueOf(7)), 2);
         }

      }
   }

I tried stump on my farmland and it did turn to dirt, so something is running the turnToDirt static method from the super, but my logger message is not appearing on the console, so the tick method is not running.... so yeah i am kinda confused on that.....

  • Author

and for

49 minutes ago, Ugdhar said:

What exactly did you try? Did you @Override the method?

Post code and logs please, it helps to see the big picture!

 

Did you look at farmland? And probably also at crop/bush blocks to make sure the logic is not in there.

and for whether is the crop/bush blocks updating the blockstate, no i think not because even when plants are not there the farmland will get hydrated in vanilla, so i am kinda sure its not the crop/bush that do the blockstate update

  • Author

OK answer by another modder, so you need .getPendingBlockTicks().scheduleTick() and public boolean ticksRandomly(BlockState state) set to true so the game actually run the tick() method

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.