Minecraft Mod 开发:4-创造模式物品栏

今天我们来补一补上一期的坑。

4.0.前言(可跳过)

Q 为什么托更?
A 疫情&开学。

4.1.基础部分

4.1.1.创建创造模式物品栏

在主包com.rycb.etech下新建一个包tab,作为创造模式物品栏的包。
com.rycb.etech.tab包下新建类ECTab.java并继承CreativeTabs类,作为你的创造模式物品栏。

package com.rycb.easycraft.tab;

import com.rycb.easycraft.init.ModItems;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.ItemStack;

/**
 * @author RYCBStudio/Java Department
 * <p>Create Time: 2022/8/23 9:08</p>
 * <p>Use the IntelliJ IDEA</p>
 * <p>Location: Easycraft/com.rycb.easycraft.tab/ECTab.java</p>
 * <h1><center>ECTab</center></h1>
 */
public class ECTab extends CreativeTabs {
    public ECTab() {
        super("ec_tab");
    }

    @Override
    public ItemStack getTabIconItem() {
        return new ItemStack(ModItems.OMEGA_GEM);
    }
}

super("ec_tab")中的"ec_tab"是你的创造模式物品栏注册名,用于本地化;

接下来我们来看这一段:
src/main/java/com/rycb/easycraft/tab/ECTab.java:

	//...省略部分代码
	@Override
    public ItemStack getTabIconItem() {
        return new ItemStack(ModItems.OMEGA_GEM);
    }
   //...

这里的getTabIconItem是你的物品栏的图标物品,比如此处为OMEGA_GEM
这样,你的物品栏基本就完成了。

4.1.2.注册创造模式物品栏

创建完物品栏,就该注册它了。
这里提供了三种注册方法:

4.1.2.1.方法一:在主类中注册

只需在主类EasyCraft.java中添加这样一条语句即可:

public static CreativeTabs EC_TAB = new ECTab();
4.1.2.2.方法二:新建一个类进行注册
在此感谢 FMLTutor

在创造模式物品栏包下下新建类CreativeTabsLoader
src/main/java/com/github/ustc_zzzz/fmltutor/creativetab/CreativeTabsLoader.java:

package com.github.ustc_zzzz.fmltutor.creativetab;

import net.minecraft.creativetab.CreativeTabs;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

public class CreativeTabsLoader
{
    public static CreativeTabs tabFMLTutor;

    public CreativeTabsLoader()
    {
        tabFMLTutor = new CreativeTabsFMLTutor();
    }
}

再在主类EasyCraft中加入实例化它的代码:

new CreativeTabsLoader();
4.1.2.3.方法三:匿名类实现
在此感谢 Harbinger

因为该方法比较复杂,对程序员的技术水平及对 MinecraftForge 的掌握程度要求较高,且容易造成代码混乱,不适于批量添加物品,故请读者自行查阅。

4.1.3.将你的物品放进物品栏

创造模式物品栏是完成了,可怎么把它放进我们的物品栏里呢?
还记得第三节的创建的ItemBasicBase.java吗?

package com.rycb.etech.items.base;

import com.rycb.etech.EasyTech;
import com.rycb.etech.init.ModItems;
import com.rycb.etech.util.IHasModel;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;

public class ItemBasicBase extends Item implements IHasModel {
    /**
     *
     * @param UnlocalizedName 未初始化名
     * @param RegistryName 注册名
     * @param tab 创造模式物品栏
     */
    public ItemBasicBase(String UnlocalizedName, String RegistryName, CreativeTabs tab) {
        setUnlocalizedName(UnlocalizedName);
        setCreativeTab(tab);
        setRegistryName(RegistryName);
        ModItems.ITEMS.add(this);
    }

    @Override
    public void registerModels() {
        EasyTech.proxy.registerItemRender(this, 0, "inventory");
    }
}

其中,setCreativeTab()方法就是将物品放进物品栏的。
随机在ModItems.java中抽取一个幸运儿,来具体展示:
src/main/java/com/rycb/easycraft/init/ModItems.java (部分):

public static final Item DARK_INGOT = new ItemBasicBase("ingotDark", "dark_ingot", EasyCraft.EC_TAB);

这里的EasyCraft.EC_TAB就是你的自定义物品栏啦~

4.1.4.进行本地化

en_us.lang中加入这样一条语句:

itemGroup.ec_tab=Easy Craft

zh_cn.lang中加入这样一条语句:

itemGroup.ec_tab=简单工艺

接着,运行游戏,你就能发现你的创造模式物品栏物品栏了~

4.2.进阶部分

CreativeTab类提供了hasSearchBar方法,可以用于设置是否有搜索框,这里我们通过覆写这个方法设置为true:
src/main/java/com/rycb/easycraft/tab/ECTab.java(部分):

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

我们就可以在打开的创造模式物品栏上看到搜索框了。同时还有的是一个名为getSearchbarWidth的方法,用于设置搜索框的宽度。

现在我们再进一步,设置一下创造模式物品栏的背景。这里我们需要的是一个名为setBackgroundImageName的方法,这个方法传入的参数最终会和一个非常长的路径接合,这里我们先设置一下:

    public CreativeTabsFMLTutor()
    {
        super("fmltutor");
        this.setBackgroundImageName("etech.png");
    }

然后我们需要新建文件夹assets/minecraft/textures/gui/container/creative_inventory(注意这里的名称是minecraft不是Mod id),然后建立一个以tab_开头的PNG文件,名字由刚刚设置的字符串决定,这里就是tab_etech.png,注意,这里的图片尺寸大小需要是256x256,其他的尺寸大小会出问题,需要设置的背景放置在左上角,其他的位置设置成透明就可以了:

(在此借用一下FMLTutor的背景:)

FMLTutor Tab

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值