工具信息 1.20 Fabric 长线教程计划
本篇教程的视频
本篇教程的源代码
GitHub地址:TutorialMod-Tooltips-1.20.1
本篇教程目标
- 理解原版一些物品的提示信息添加方法
- 学会为模组的物品、方块等添加提示信息
查看源代码
工具信息呢,也可以称为提示信息
像我们之前写的那些工具,当鼠标悬停在那些物品上的时候,会有在主手时...的一些提示信息,这也就是我们今天来学习的Tooltip
当然,工具信息并不是工具类独有的,任何物品都可以添加,方块亦可
另外结合别的方法,你也可以实现像机械动力那样的,按住某个键开始思索
这里我们先来看看原版的那些工具信息是怎么添加的,这里我们以山羊角为例,找到GoatHornItem
1 |
|
找到一个appendTooltip方法,这个方法就是用来添加提示信息的
山羊角在游戏中是可以拿来吹的,不同的山羊角吹出的声音也是不一样的,而它能够吹出的声音是有工具信息来提示的
那么在这里,我们要看的其实就tooltip.add这个方法
上面的这一串呢,其实是就是按照不同山羊角对应的不同声音来添加不同的提示信息
tooltip.add方法接受的是一个MutableText类型的参数
Text.translatable是我们之前写物品栏的时候也接触过的一个方法,这个就是提供翻译键的
add方法里面的formatted方法呢,就是用来设置提示信息的颜色的
那么,原版的工具类的话,它的提示信息添加方法或许有点麻烦,它是在ItemStack这个类中添加的
添加工具信息
那么接下来我们就来为我们之前写的物品添加提示信息
我们来到PickaxeAxeItem这个类,然后重写appendTooltip方法
1 |
|
简单一点就像这样直接加就可以了,然后到语言文件里去翻译这个翻译键即可
不过,我们可以变得稍微复杂一点,比如实现很多模组中有的按住Shift获取更多信息
那么问题来了,如何判断玩家是否按下了SHIFT?
其实原版的Screen类已经定义好了一个方法hasShiftDown,它就是用来判断SHIFT键是否被按下
1 |
|
为了与不按下SHIFT的提示信息区分开来,我们在字符串的末尾添加了一个.shift
语言文件
1 | translationBuilder.add("tooltip.tutorial.pickaxe_axe.shift", "This is a item that can be used as a pickaxe and an axe"); |
同样的,简单一点就是像这样直接写翻译键对应的信息就好了
但是,我们也可以利用格式化代码来添加一些特殊的形式,比如我们想让SHIFT突出强调
格式化代码又称为颜色代码,如果写过数据包的同学,或许知道这个东西
这里我们先到Wiki上来看看格式化代码,Wiki
我们要使用分节符§来为某些字符来格式化文本,颜色代码和格式代码也在Wiki上给出了
不过,分节符如果不通过复制得到的话,是有点难打的,我们可以拿/u00A7代替分节符,a和A都可以
在Wiki界面往下翻,我们可以看到一个编辑器,在这个编辑器里我们可以直接输入编辑我们想要编辑的文本
比如我们将SHIFT输入,然后让它变成金色,加粗、斜体、下划线都给它加上
在输出栏中,我们就得到了这么一段
1 | §6§n§l§oSHIFT§r§r§r§r |
然后在语言文件中替换一下就可以了
1 | translationBuilder.add("tooltip.tutorial.pickaxe_axe.shift", "This is a item that can be used as a pickaxe and an axe"); |
测试
那么跑个数据生成,随后我们进入游戏,当鼠标悬停在这个物品上面的时候,我们看到SHIFT是金色的,同时加粗、带下划线、斜体
接下去按住SHIFT,我们就能看到这个物品的详细信息了











