第1周:给物品添加信息

在我们添加完了第一个物品之后我们想让物品的功能更加强大。所以我们准备给物品添加提示信息。

给物品添加普通提示信息

我们会看到有些物品在我们把鼠标放上去时会显示一段信息,现在我们就想给我们的物品添加一段这样的信息。

我们在物品 Rubber的类里添加如下代码:

    @Override
    public void addInformation(ItemStack stack, World worldIn, List<String> tooltip, ITooltipFlag flagIn) {
        tooltip.add("this is ");
        tooltip.add("a rubber");
    }
  • List<String> tooltip:把要显示的东西储存在这里,显示时会一个元素一行。
  • ITooltipFlag flagIn:玩家是否打开了高级显示功能(调试功能),即玩家按下F3+H键后显示的内容。

现在我们打开游戏就可以看到显示的显示了。

为提示信息添加本地化

我们此时的提示信息是硬编码上去的,不利于本地化,所以我们要将其国际化。 我们想在玩家不打开高级调试功能时显示本地化过的信息。

我们更改addInformation方法中为如下代码:

        if(flagIn.isAdvanced()){
            tooltip.add("this is ");
            tooltip.add("a rubber");
        }
        else{
            tooltip.add(I18n.format(this.getUnlocalizedName()+".1."+"desc"));
        }

现在我们打开游戏就可以看到显示的显示了。

Shift显示特定的提示信息

我们想到物品在按下Shift的时候显示特别的信息,那我我们可以在方法中判断是否按下了Shift按键,在addInformation添加如下代码:

        if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)){
            tooltip.add(I18n.format(this.getUnlocalizedName()+".shift.1."+"desc"));
        }

并且在lang文件中添加上相应的本地化。

显示文字颜色

现在我们显然我们的物品提示显示一些颜色,我们只需要在lang文件中进行修改:

item.examplemod:rubber.shift.1.desc=§b这是§r一个橡胶
  • §是颜色标识符,颜色有16进制0-f16种大家可以试一下。
  • §r是结束一个颜色标识 (应该是这样的)

results matching ""

    No results matching ""