Posted February 27, 20205 yr Hello, I've been trying to create an item that places wheat seeds in a 3x3 grid. To do that I have created the item as a new BlockNamedItem for the wheat block. My implementation works fine, however I just realized I seem to be overriding the vanilla minecraft seeds with this approach. I am wondering what the proper way is to go about this. Any help would be appreciated. Edited February 27, 20205 yr by ericos
February 28, 20205 yr Author This is the way I am currently registering the item: Spoiler event.getRegistry().register(ItemList.seed_bag = new CustomSeedItem(Blocks.WHEAT, (new Item.Properties()).group(rebrandGroup)).setRegistryName(location("seed_bag"))); With the location function returning a new Resource Location like this: Spoiler private static ResourceLocation location(String name) { return new ResourceLocation(MOD_ID, name); } The CustomSeedItem I create extends the BlockItem class. Spoiler public class CustomSeedItem extends BlockItem { public CustomSeedItem(Block p_i50041_1_, Properties p_i50041_2_) { super(p_i50041_1_, p_i50041_2_); } @Override public ActionResultType onItemUse(ItemUseContext context) { ActionResultType actionresulttype = this.tryPlace(new BlockItemUseContext(context)); BlockPos clickedOn = context.getPos(); World world = context.getWorld(); boolean playedSound = false; boolean placedWheat = false; for (int i = -1; i <= 1; i++) { for (int j = -1; j <= 1; j++) { BlockPos neighbor; BlockPos aboveNeighbor; neighbor = clickedOn.add(new Vec3i(i,0,j)); aboveNeighbor = neighbor.add(new Vec3i(0,1,0)); if(world.getBlockState(neighbor).getBlock() == Blocks.FARMLAND && world.getBlockState(aboveNeighbor).getBlock() == Blocks.AIR){ if(i == 0 && j ==0){ playedSound = true; continue; } placedWheat = true; world.setBlockState(aboveNeighbor, Blocks.WHEAT.getDefaultState(), 0); } } } if (placedWheat == true && playedSound == false){ world.playSound(context.getPlayer(), context.getPos(), SoundEvents.BLOCK_GRASS_BREAK, SoundCategory.BLOCKS, 1, 1); } return actionresulttype != ActionResultType.SUCCESS && this.isFood() ? this.onItemRightClick(context.getWorld(), context.getPlayer(), context.getHand()).getType() : actionresulttype; } }
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.