J3ramy Posted October 10, 2022 Share Posted October 10, 2022 Hey modders, I hope you can help me. I want to right click my custom item on my custom block so that the useOn-method gets called - but it's actually not getting called. If I try right clicking a vanilla block with my item it works... Did I forgot to override a method in my custom block class or something? Thanks in advance My custom item class Spoiler public class PatchCableItem extends Item { public PatchCableItem(Properties pProperties) { super(pProperties); } @Override public InteractionResult useOn(UseOnContext pContext) { System.out.println("TEST"); return InteractionResult.sidedSuccess(level.isClientSide()); } } My custom block Spoiler public class RouterBlock extends BaseEntityBlock { protected static final DirectionProperty FACING = BlockStateProperties.FACING; protected static final VoxelShape X_POSITIVE = Block.box(0.0D, 4.0D, 4.0D, 2.0D, 12.0D, 12.0D); protected static final VoxelShape X_NEGATIVE = Block.box(14.0D, 4.0D, 4.0D, 16.0D, 12.0D, 12.0D); protected static final VoxelShape Y_POSITIVE = Block.box(4.0D, 0.0D, 4.0D, 12.0D, 2.0D, 12.0D); protected static final VoxelShape Y_NEGATIVE = Block.box(4.0D, 14.0D, 4.0D, 12.0D, 16.0D, 12.0D); protected static final VoxelShape Z_POSITIVE = Block.box(4.0D, 4.0D, 0.0D, 12.0D, 12.0D, 2.0D); protected static final VoxelShape Z_NEGATIVE = Block.box(4.0D, 4.0D, 14.0D, 12.0D, 12.0D, 16.0D); public RouterBlock(Properties properties) { super(properties); } @Override public RenderShape getRenderShape(BlockState pState) { return RenderShape.MODEL; } @Nullable @Override public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { return new RouterBlockEntity(pPos, pState); } @Override public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, CollisionContext pContext) { Direction dir = pState.getValue(FACING); if(dir.getAxis() == Direction.Axis.X){ return dir.getAxisDirection() == Direction.AxisDirection.POSITIVE ? X_POSITIVE : X_NEGATIVE; } else if(dir.getAxis() == Direction.Axis.Y){ return dir.getAxisDirection() == Direction.AxisDirection.POSITIVE ? Y_POSITIVE : Y_NEGATIVE; }else{ return dir.getAxisDirection() == Direction.AxisDirection.POSITIVE ? Z_POSITIVE : Z_NEGATIVE; } } @Nullable @Override public BlockState getStateForPlacement(BlockPlaceContext pContext) { return this.defaultBlockState().setValue(FACING, pContext.getClickedFace()); } @Override public BlockState rotate(BlockState state, LevelAccessor level, BlockPos pos, Rotation direction) { return state.setValue(FACING, direction.rotate(state.getValue(FACING))); } @Override public BlockState mirror(BlockState pState, Mirror pMirror) { return pState.rotate(pMirror.getRotation(pState.getValue(FACING))); } @Override protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> pBuilder) { pBuilder.add(FACING); } } My block register Spoiler public class ModBlocks { public static final DeferredRegister<Block> BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, EdomEconomyMod.MOD_ID); public static final RegistryObject<Block> ROUTER = registerBlock("router", () -> new RouterBlock(BlockBehaviour.Properties.copy(Blocks.IRON_BLOCK).noOcclusion()), ModCreativeModeTab.EDOM_ECONOMY_TAB); private static <T extends Block> RegistryObject<T> registerBlock(String name, Supplier<T> block, CreativeModeTab tab){ RegistryObject<T> toReturn = BLOCKS.register(name, block); registerBlockItem(name, toReturn, tab); return toReturn; } private static <T extends Block> RegistryObject<Item> registerBlockItem(String name, RegistryObject<T> block, CreativeModeTab tab){ return ModItems.ITEMS.register(name, ()-> new BlockItem(block.get(), new Item.Properties().tab(tab))); } public static void register(IEventBus eventBus){ BLOCKS.register(eventBus); } } My mod class Spoiler @Mod(EdomEconomyMod.MOD_ID) public class EdomEconomyMod { public static final String MOD_ID = "edomeconomy"; public EdomEconomyMod() { IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); Network.registerMessages(); ModItems.register(modEventBus); ModBlocks.register(modEventBus); ModBlockEntities.register(modEventBus); ModMenuTypes.register(modEventBus); modEventBus.addListener(this::setup); modEventBus.addListener(this::clientSetup); MinecraftForge.EVENT_BUS.register(this); } private void setup(final FMLCommonSetupEvent event) {} private void clientSetup(final FMLClientSetupEvent event){ ItemBlockRenderTypes.setRenderLayer(ModBlocks.ROUTER.get(), RenderType.cutout()); } } Quote Link to comment Share on other sites More sharing options...
warjort Posted October 10, 2022 Share Posted October 10, 2022 I don't see how the relevant code for your question even compiles? @Override public InteractionResult useOn(UseOnContext pContext) { System.out.println("TEST"); // level is not defined here return InteractionResult.sidedSuccess(level.isClientSide()); } Please show the real code, preferably by uploading it to github so we can try it for ourselves, but at least see all the relevant context. Quote Boilerplate: If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one. If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install Large files should be posted to a file sharing site like https://gist.github.com You should also read the support forum sticky post. Link to comment Share on other sites More sharing options...
J3ramy Posted October 11, 2022 Author Share Posted October 11, 2022 Hey @warjort, I'm sorry, you're right... I removed some "unneccessary" code but I deleted this as well. Here's my link to my github repo: https://github.com/j3ramy/edomeconomy-1.18.2 You can find the relevant files here PatchCableItem (custom item): src/main/java/de/j3ramy/edomeconomy/item/custom/PatchCableItem.java RouterBlock (custom block): src/main/java/de/j3ramy/edomeconomy/block/custom/RouterBlock.java Block register: src/main/java/de/j3ramy/edomeconomy/block/ModBlocks.java Main class: src/main/java/de/j3ramy/edomeconomy/EdomEconomyMod.java Hope, this helps more Quote Link to comment Share on other sites More sharing options...
warjort Posted October 11, 2022 Share Posted October 11, 2022 Your router block also has use() method which takes precedence over the item useOn() If I shift right click to activate the item useOn() I get messages in the chat log. See MultiplayerGameMode.useItemOn() and Forge's RightClickBlock event if you want to change this behaviour. Quote Boilerplate: If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one. If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install Large files should be posted to a file sharing site like https://gist.github.com You should also read the support forum sticky post. Link to comment Share on other sites More sharing options...
J3ramy Posted October 11, 2022 Author Share Posted October 11, 2022 That's good to know. Thank you very much! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.