Перейти к содержимому

Fractal

Библиотека для подгрупп предметов в креативном меню

FabricNeoForgeQuilt
Загрузчики
FabricNeoForgeQuilt
Скачиваний на Modrinth
9,7 тыс.
Подписчиков на Modrinth
8
версий
25
Обновлён
20 июня 202620 июн.
Опубликован
в 2023
Это библиотека — она нужна другим модам и сама ничего не добавляет в игруНужна 1 модам. Скачайте её, если этого требует другой мод.
Subtabs in vanillas style · свайп

Коротко о моде

Библиотека — нужна другим модам: её требуют 1
Работает на Fabric, NeoForge и Quilt
Для Minecraft 1.20.6–1.21.1, 1.21.3–26.2 …
Нужен и в игре, и на сервере
Последняя версия — 2.1.2+26.2-neoforge от 20 июня 2026
Лицензия MIT — бесплатно
Где нужен
В игреобязателенНа сервереобязателен

Нужен и в игре, и на сервере

Версии игры1.20.1–1.20.2, 1.20.6–1.21.1, 1.21.3–26.2 …
Описание переведено автоматическиПоказать оригинал (EN)

О 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 на сервере?

Нужен и в игре, и на сервере

Лицензия и источник
MIT Licenseможно свободно использовать и распространять с указанием автора
Оригинал — Modrinth↗Файлы — без изменений, проверены по SHA-512Это ваш мод? Правообладателям

Сайт использует cookie: необходимые — для входа и темы, а также счётчики посещений Яндекс Метрика и LiveInternet — по ним мы видим, как пользуются сайтом. Рекламных cookie у нас нет. Подробнее