Posted April 23, 20205 yr 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 April 23, 20205 yr by Thomas107500
April 23, 20205 yr 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.
April 23, 20205 yr 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.....
April 23, 20205 yr 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
April 23, 20205 yr I think tick is called only if you use world.getPendingTick.scheduleTick (check redstone repeater/comparator)
April 23, 20205 yr 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.