我的世界mod开发本地化和创造模式物品栏

Wzhrdx 发布于

创造模式物品栏

那么显而易见的是,give命令实在是太麻烦了,所以我们需要将物品放进一个创造模式物品栏里。
我们直接在ItemSilverNugget()构造器里加一句this.setCreativeTab(CreativeTabs.FOOD);就好了,原版物品栏的名称可以在CreativeTabs类里找到
这里我们将银粒放入了食物栏(恶趣味)
#新的创造模式物品栏
创建物品栏有两种方法一种是直接添加到主类里,一种是新建一个Java类这里我推荐第二种方法

方法一

在XenoAge.java这个主类里添加字段:

1
2
3
4
5
6
7
public static final CreativeTabs TAB_XENO_AGE= new CreativeTabs(MODID) {
@Override
public ItemStack createIcon() {
return new ItemStack(ItemRegistryHandler.SILVER_NUGGET);
}

};

再在ItemSilverNugget()构造器里加入this.setCreativeTab(XenoAge.TAB_XENO_AGE);
重启游戏,你会看到一个新的创造模式物品栏。
这里SILVER_NUGGET的材质将作为创造物品栏的图标显示

注意:必须以某种方式设置 Tab 的 Icon,如果留 null会引发崩溃

方法二

新建一个类src/main/java/com/wzhrdx/XenoAge/creativetab/TabXenoAge.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package com.wzhrdx.XenoAge.creativetab;

import com.wzhrdx.XenoAge.item.ItemRegistryHandler;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.ItemStack;

public class TabXenoAge extends CreativeTabs {
public static final TabXenoAge TAB_XENO_AGE = new TabXenoAge();
public TabXenoAge(){
super("xenoage");
}
@Override
public ItemStack createIcon(){
return new ItemStack(ItemRegistryHandler.SILVER_NUGGET);
}

}

再在ItemSilverNugget()构造器里加入this.setCreativeTab(TabXenoAge.TAB_XENO_AGE);
重启游戏,你会看到一个新的创造模式物品栏。

物品本地化

现在我们的物品还是一个item.xenoage.silvernugget.name的名字,我们需要给他们添加语言文件

  • 我们需要语言文件,将上面的代指名称翻译成各种语言,翻译后的名称叫本地化名称
  • 代指名称使用物品的setUnlocalizedName()方法进行设置(新的版本为setTranslationKey())
  • 本地化名称使用语言文件(*.lang)进行设置。
    新建包resources/assets/mymod/lang/,新建 en_us.lang 文件,对应英文版本,在里面写入(无需多余空格、引号等字符):
    1
    2
    3
    item.xenoage.silvernugget.name=Silver Nugget
    itemGroup.xenoage=Xeno Age
    item.xenoage.silveringot.name=Silver Ingot
    然后我们新建 zh_cn.lang,对应中文版本,写法同上。
    1
    2
    3
    item.xenoage.silvernugget.name=银粒
    itemGroup.xenoage=魔法时代
    item.xenoage.silveringot.name=银锭
  • 注意:1.12语言文件名应该使用全小写,比如 zh_cn 而不是 zh_CN*

练习

  • 练习1 给silverore添加英文名字Silver Ore

  • 练习2 给silverore添加中文名字 银矿

  • 提示 方块和物品不一样,他是titl开头,你也可以打开游戏查看UnlocalizedName

    答案
    // en_us.lang
    tile.xenoage.silverore.name=Silver Org
    ························································
    // zh_cn.lang
    tile.xenoage.silverore.name=银矿