Перейти к содержанию

Вкладка в креативе#

Предметов и блоков становится всё больше, а получать их через команду /give становится проблематично и неудобно. Давайте создадим свою вкладку в творческом режиме!

package ru.mcmodding.tutorial.common.handler;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import ru.mcmodding.tutorial.McModding;

public class ModTab extends CreativeTabs {
    public static final ModTab INSTANCE = new ModTab();

    private ModTab() {
        super(McModding.MOD_ID);
    }

    @Override
    @SideOnly(Side.CLIENT)
    public Item getTabIconItem() {
        return ModItems.PAINT_CAN;
    }
}

В супер-класс мы передаём нелокализованное название нашей вкладки. Для локализации вкладки добавьте itemGroup.mcmodding=McModding в необходимый файл локализации.

Метод getTabIconItem возвращает предмет, который будет отображаться на самой вкладке. Для добавления блока используйте Item#getItemFromBlock.

Чтобы использовать нашу вкладку в предмете или блоке, воспользуемся методом setCreativeTab, добавим его в конструктор ранее созданных нами предметов и блоков.

public class RingItem extends Item {
    public RingItem() {
        // Какой-то код...
        setCreativeTab(ModTab.INSTANCE);
    }
}

Запускаем игру и видим:

Вкладка

Всё работает, но отображается банка с краской чёрного цвета, а мы хотим жёлтый цвет. Для этого нам понадобится метод func_151243_f.

public class ModTab extends CreativeTabs {
    @Override
    @SideOnly(Side.CLIENT)
    public int func_151243_f() {
        return 11;
    }
}

Данный метод возвращает damage для предмета, который будет отображаться во вкладке. Банка с жёлтой краской имеет 11 damage, поэтому пишем 11.

Вкладка с метой

Поиск во вкладке#

Представим, что предметов и блоков во вкладке стало настолько много, что их становится тяжело искать, глаза разбегаются в разные стороны. Для того чтобы исправить данную проблему, добавим поле поиска, как во вкладке со всеми предметами!

public class ModTab extends CreativeTabs {
    private ModTab() {
        super(McModding.MOD_ID);
        setBackgroundImageName("item_search.png");// Чтобы отображалось поле поиска
    }

    @Override
    public boolean hasSearchBar() {
        return true;
    }
}

Вы также можете изменять длину поля для поиска с помощью метод CreativeTabs#getSearchbarWidth.

public class ModTab extends CreativeTabs {
    @Override
    public int getSearchbarWidth() {
        return 70;
    }
}

Вкладка с поиском

Фон вкладки#

Мы добавили свою вкладку, добавили поиск по ней, но кажется чего-то не хватает... К вкладкам можно добавлять свои фоны, ранее мы уже выставляли готовый фон для отображения поиска, так давайте создадим собственный фон!

Помещать фоны придётся по такому пути: assets/minecraft/textures/gui/container/creative_inventory. Название текстуры с фоном должно начинаться с tab_!

Собственный фон вкладки

Теперь укажем setBackgroundImageName(String) аналогично, как мы делали с item_search в предыдущей главе, только в нашем случае это будет tab_mcmodding.png

public class ModTab extends CreativeTabs {
    private ModTab() {
        super(McModding.MOD_ID);
        setBackgroundImageName("mcmodding.png");
    }
}

Фон вкладки в игре