Table of Contents

Группы предметов

Создание простой группы предметов

Чтобы ваша ItemGroup правильно отображалась в меню креатива, используйте FabricItemGroupBuilder для их создания:

  1. public class ExampleMod implements ModInitializer {
  2.  
  3. public static final ItemGroup ITEM_GROUP = FabricItemGroupBuilder.build(
  4. new Identifier("tutorial", "general"),
  5. () -> new ItemStack(Blocks.COBBLESTONE));
  6.  
  7. public static final ItemGroup OTHER_GROUP = FabricItemGroupBuilder.create(
  8. new Identifier("tutorial", "other"))
  9. .icon(() -> new ItemStack(Items.BOWL))
  10. .build();
  11. // ...
  12. }

Как только будет вызван FabricItemGroupBuilder#build, ваша группа будет добавлена в список групп предметов в меню креатива.

Убедитесь, что вы заменили аргументы 1), вы переходите к конструктору Identifier с вашим фактическим идентификатором мода и ключом перевода, который вы хотите предоставить своей группе предметов для локализации 2) позже.

Добавление ваших предметов в группу предметов

При создании своего предмета вызовите команду Item.Settings#group в ваших настройках и перейдите в свою группу:

public static final Item YOUR_ITEM = new Item(new Item.Settings().group(ExampleMod.ITEM_GROUP));

Отображение в группе предметов определенных предметов в заданном порядке

Вызовите FabricItemGroupBuilder#appendItems и передайте любой Consumer<List<ItemStack>>. Затем вы можете добавить любые стаки, которые вы хотите, в данный список в определенном порядке. ItemStack.EMPTY можно использовать для размещения пустых мест в вашей группе.

  1. public class ExampleMod implements ModInitializer {
  2.  
  3. public static final ItemGroup ITEM_GROUP = FabricItemGroupBuilder.build(
  4. new Identifier("tutorial", "general"),
  5. () -> new ItemStack(Blocks.COBBLESTONE));
  6.  
  7. public static final ItemGroup OTHER_GROUP = FabricItemGroupBuilder.create(
  8. new Identifier("tutorial", "other"))
  9. .icon(() -> new ItemStack(Items.BOWL))
  10. .appendItems(stacks -> {
  11. stacks.add(new ItemStack(Blocks.BONE_BLOCK));
  12. stacks.add(new ItemStack(Items.APPLE));
  13. stacks.add(PotionUtil.setPotion(new ItemStack(Items.POTION), Potions.WATER));
  14. stacks.add(ItemStack.EMPTY);
  15. stacks.add(new ItemStack(Items.IRON_SHOVEL));
  16. })
  17. .build();
  18. // ...
  19. }

1)
Помните, что аргументы, которые вы передаете конструктору Identifier, могут содержать только определенные символы.
Оба аргумента (namespace и path) могут содержать строчные буквы, цифры, подчеркивания, точки или тире. [a-z0-9_.-]
Второй аргумент (path) также может включать косые черты. [a-z0-9/._-]
Избегайте использования других символов, иначе будет выдано InvalidIdentifierException!
2)
Полный ключ перевода для первого примера ItemGroup будет itemGroup.mod_id.general