- Загрузчики
- FabricNeoForgeQuilt
- Скачиваний на Modrinth
- 9,7 тыс.
- Подписчиков на Modrinth
- 8
- версий
- 25
- Обновлён
- 20 июня 202620 июн.
- Опубликован
- в 2023
Коротко о моде
Нужен и в игре, и на сервере
О Fractal
Этот репозиторий — форк lib39/fractal от unascribed с добавленной поддержкой стилизованных групп. Я позабочусь об этом репозитории, пока unascribed занят.
Fractal добавляет предметные подгруппы для меню креатива.
Зачем нужен Fractal?
- Подгруппы Fractal очень компактны, что позволяет добавить до 12 подгрупп для каждой вашей вкладки
- Создание нового ItemSubGroup занимает всего одну строку кода и не требует изменений в том, как вы распределяете предметы по группам. Просто передайте им ItemSubGroup вместо вашей основной предметной группы
Ограничения
- Больше 12 подгрупп на предметную группу, хоть и полностью работоспособно, будет выглядеть странно.
- Мелкий шрифт, используемый для подписей, не поддерживает полный юникод
Примеры
Подгруппы в ванильном стиле

public static final Identifier GROUP_ID = new Identifier("mymod", "main");
public static final ItemGroup MAIN = FabricItemGroup.builder()
.icon(() -> new ItemStack(Blocks.REDSTONE_BLOCK))
.entries((displayContext, entries) -> entries.add(Items.APPLE))
.displayName(Text.translatable("mymod.1"))
.noRenderedName()
.build();
public static final ItemGroup EQUIPMENT = new ItemSubGroup.Builder(MAIN, Text.translatable("itemGroup.mymod.equipment")).entries((displayContext, entries) -> entries.add(Items.APPLE)).build();
public static final ItemGroup FUNCTIONAL = new ItemSubGroup.Builder(MAIN, Text.translatable("itemGroup.mymod.functional")).styled(STYLE).entries((displayContext, entries) -> entries.add(Items.BAKED_POTATO)).build();
public static final ItemGroup CUISINE = new ItemSubGroup.Builder(MAIN, Text.translatable("itemGroup.mymod.cuisine")).entries((displayContext, entries) -> entries.add(Items.CACTUS)).build();
public static final ItemGroup RESOURCES = new ItemSubGroup.Builder(MAIN, Text.translatable("itemGroup.mymod.resources")).styled(STYLE).entries((displayContext, entries) -> entries.add(Items.DANDELION)).build();
@Override
public void onInitialize() {
Registry.register(Registries.ITEM_GROUP, GROUP_ID, MAIN);
}Применение собственного стиля
Вы также можете применить стиль к своим ItemSubGroup, задав собственные текстуры фона, вкладки, подвкладки и полосы прокрутки. Их даже можно комбинировать как угодно! В этом примере первые две ItemSubGroup используют собственный стиль с текстурами, поставляемыми вместе с вашим модом. Последние две вкладки используют ванильный стиль.

// Текстура (положить в \resources\assets\fractal\textures\gui\container\creative_inventory)
public static final Identifier BACKGROUND_TEXTURE = new Identifier("fractal", "textures/gui/container/creative_inventory/custom_background.png");
// Спрайты (положить в \resources\assets\fractal\textures\gui\sprites\container\creative_inventory)
public static final Identifier SCROLLBAR_ENABLED_TEXTURE = new Identifier("fractal", "container/creative_inventory/custom_scrollbar_enabled");
public static final Identifier SCROLLBAR_DISABLED_TEXTURE = new Identifier("fractal", "container/creative_inventory/custom_scrollbar_disabled");
public static final Identifier SUBTAB_SELECTED_TEXTURE = new Identifier("fractal", "container/creative_inventory/custom_subtab_selected");
public static final Identifier SUBTAB_UNSELECTED_TEXTURE = new Identifier("fractal", "container/creative_inventory/custom_subtab_unselected");
public static final Identifier TAB_TOP_FIRST_SELECTED_TEXTURE = new Identifier("fractal", "container/creative_inventory/custom_tab_top_first_selected");
public static final Identifier TAB_TOP_SELECTED_TEXTURE = new Identifier("fractal", "container/creative_inventory/custom_tab_top_selected");
public static final Identifier TAB_TOP_LAST_SELECTED_TEXTURE = new Identifier("fractal", "container/creative_inventory/custom_tab_top_last_selected");
public static final Identifier TAB_TOP_FIRST_UNSELECTED_TEXTURE = new Identifier("fractal", "container/creative_inventory/custom_tab_top_first_unselected");
public static final Identifier TAB_TOP_UNSELECTED_TEXTURE = new Identifier("fractal", "container/creative_inventory/custom_tab_top_unselected");
public static final Identifier TAB_TOP_LAST_UNSELECTED_TEXTURE = new Identifier("fractal", "container/creative_inventory/custom_tab_top_last_unselected");
public static final Identifier TAB_BOTTOM_FIRST_SELECTED_TEXTURE = new Identifier("fractal", "container/creative_inventory/custom_tab_bottom_first_selected");
public static final Identifier TAB_BOTTOM_SELECTED_TEXTURE = new Identifier("fractal", "container/creative_inventory/custom_tab_bottom_selected");
public static final Identifier TAB_BOTTOM_LAST_SELECTED_TEXTURE = new Identifier("fractal", "container/creative_inventory/custom_tab_bottom_last_selected");
public static final Identifier TAB_BOTTOM_FIRST_UNSELECTED_TEXTURE = new Identifier("fractal", "container/creative_inventory/custom_tab_bottom_first_unselected");
public static final Identifier TAB_BOTTOM_UNSELECTED_TEXTURE = new Identifier("fractal", "container/creative_inventory/custom_tab_bottom_unselected");
public static final Identifier TAB_BOTTOM_LAST_UNSELECTED_TEXTURE = new Identifier("fractal", "container/creative_inventory/custom_tab_bottom_last_unselected");
public static final ItemSubGroup.Style STYLE = new ItemSubGroup.Style.Builder()
.background(BACKGROUND_TEXTURE)
.scrollbar(SCROLLBAR_ENABLED_TEXTURE, SCROLLBAR_DISABLED_TEXTURE)
.subtab(SUBTAB_SELECTED_TEXTURE, SUBTAB_UNSELECTED_TEXTURE)
.tab(TAB_TOP_FIRST_SELECTED_TEXTURE, TAB_TOP_SELECTED_TEXTURE, TAB_TOP_LAST_SELECTED_TEXTURE, TAB_TOP_FIRST_UNSELECTED_TEXTURE, TAB_TOP_UNSELECTED_TEXTURE, TAB_TOP_LAST_UNSELECTED_TEXTURE,
TAB_BOTTOM_FIRST_SELECTED_TEXTURE, TAB_BOTTOM_SELECTED_TEXTURE, TAB_BOTTOM_LAST_SELECTED_TEXTURE, TAB_BOTTOM_FIRST_UNSELECTED_TEXTURE, TAB_BOTTOM_UNSELECTED_TEXTURE, TAB_BOTTOM_LAST_UNSELECTED_TEXTURE)
.build();
public static final ItemGroup EQUIPMENT = new ItemSubGroup.Builder(MAIN, Text.translatable("itemGroup.mymod.equipment")).styled(STYLE).entries((displayContext, entries) -> entries.add(Items.APPLE)).build();
public static final ItemGroup FUNCTIONAL = new ItemSubGroup.Builder(MAIN, Text.translatable("itemGroup.mymod.functional")).styled(STYLE).entries((displayContext, entries) -> entries.add(Items.BAKED_POTATO)).build();
public static final ItemGroup CUISINE = new ItemSubGroup.Builder(MAIN, Text.translatable("itemGroup.mymod.cuisine")).entries((displayContext, entries) -> entries.add(Items.CACTUS)).build();
public static final ItemGroup RESOURCES = new ItemSubGroup.Builder(MAIN, Text.translatable("itemGroup.mymod.resources")).entries((displayContext, entries) -> entries.add(Items.DANDELION)).build();
Частые вопросы
Как установить Fractal?
Установите Fabric под свою версию Minecraft, скачайте Fractal под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть Fractal?
У Fractal есть сборки для Minecraft 1.19.4, 1.20.1–1.20.2, 1.20.6–1.21.1, 1.21.3–26.2 ….
Нужен ли Fractal на сервере?
Нужен и в игре, и на сервере