I have a block that changes it's blockstate when you click on it with another copy of this block.
I have a method for this and it works but I wonder if there are better ways of doing the exact same thing.
public InteractionResult use(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer, InteractionHand pHand, BlockHitResult pHit) {
if (!pLevel.isClientSide){
// check if player is holding a pot block
// it is required to change the state "POTS" - the amount of pots that block contains
// the amount of pots must not exeed 4
if (pHand == InteractionHand.MAIN_HAND && pPlayer.getMainHandItem().is((ModBlocks.LITTLE_POT.get().asItem())) && pState.getValue(POTS)<4) {
// update block with new "POTS" state value
pLevel.setBlock(pPos, pState.cycle(POTS), 3);
// success
return InteractionResult.CONSUME;
}
// otherwise fail
}
return InteractionResult.FAIL;
}
Thank you.