Posted January 4, 20223 yr Hey! I'm making a test tube item, which has an empty version of the item (prehistoric:test_tube), and another version of the item which is full of water (prehistoric:water_test_tube). I want to change the empty test tube to the filled one when you right click on water. How can I do this? Code so far (not including imports) public class TestTube extends Item { public TestTube(Properties properties) { super(properties); } @Override public ActionResultType onItemUseFirst(ItemStack stack, ItemUseContext context) { World world = context.getWorld(); if (!world.isRemote) { PlayerEntity playerEntity = Objects.requireNonNull(context.getPlayer()); BlockState clickedBlock = world.getBlockState(context.getPos()); rightClickOnCertainBlockState(clickedBlock, context, playerEntity); } return super.onItemUseFirst(stack, context); } private void rightClickOnCertainBlockState(BlockState clickedBlock, ItemUseContext context, PlayerEntity playerEntity) { // Check if the player right-clicked water (with the test tube in-hand) if(blockIsWaterForTestTube(clickedBlock)) { // Fill test tube with water } } // Define if the clicked block was water private boolean blockIsWaterForTestTube(BlockState clickedBlock) { return clickedBlock.getBlock() == Blocks.WATER; } // public static void fillTestTubeWater } Thanks!
January 13, 20223 yr Do you want to have a behaviour like the bucket item ? If it is the case you should look in the class BucketItem available using ctrl n with intellij. The function used is : Item#use.
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.