Pistol_Pangan
本帖最后由 Pistol_Pangan 于 2021-6-28 11:38 编辑

如题,版本1.12.2
ItemStack.getData().getItemType().name()获取到的是英文名
ItemStack.getItemMeta().getDisplayName()获取到的是null值
有没有什么办法能获取到玩家那里显示的中文名

#### 修改
额,使用的服务端是mohist端,我是想问有没有办法不需要客户端发包而得到显示名(包括mod物品)

byxiaobai
https://www.mcbbs.net/thread-1213792-1-1.html
三、特殊问题 3.怎么获取物品/药水的中文名?

Pistol_Pangan
byxiaobai 发表于 2021-6-28 09:45
https://www.mcbbs.net/thread-1213792-1-1.html
三、特殊问题 3.怎么获取物品/药水的中文名? ...

额,我获取的不是原版物品,是mod物品的名称

南柯郡守
[已解决]获取物品的中文名字
https://www.mcbbs.net/thread-1207394-1-1.html
(出处: Minecraft(我的世界)中文论坛)


善用搜索!

Pistol_Pangan
南柯郡守 发表于 2021-6-28 11:26
[已解决]获取物品的中文名字
https://www.mcbbs.net/thread-1207394-1-1.html
(出处: Minecraft(我的世界) ...

额,这个并不能解决我的问题,因为我不想服务端与客户端通信要求客户端告知服务端物品名
其他的贴子能解决原版物品的翻译名问题,不能解决mod物品
如此看来只能通过导出lang文件来解决了...

贺兰兰
本帖最后由 贺兰兰 于 2021-6-28 12:41 编辑
Pistol_Pangan 发表于 2021-6-28 11:41
额,这个并不能解决我的问题,因为我不想服务端与客户端通信要求客户端告知服务端物品名
其他的贴子能解 ...

请使用 BungeeChat 的 TranslatableComponent
,这能解决你的问题
from https://www.spigotmc.org/wiki/the-chat-component-api/

TranslatableComponents are used for client side translations. It can be used to send translation keys for the client translate client side, this means you are limited to the text provided by Minecraft (see here) unless a resource pack is used to add more. Some translations support arguments with can also be TranslatableComponents (or just TextComponents).

  1. TranslatableComponent giveMessage = new TranslatableComponent("commands.give.success");
  2. TranslatableComponent item = new TranslatableComponent("item.swordDiamond.name");
  3. item.setColor(net.md_5.bungee.api.ChatColor.GOLD);
  4. giveMessage.addWith(item);
  5. giveMessage.addWith("32");
  6. TextComponent username = new TextComponent("Thinkofdeath");
  7. username.setColor(net.md_5.bungee.api.ChatColor.AQUA);
  8. giveMessage.addWith(username);
  9. player.sendMessage(giveMessage);
复制代码


This will display "Given Diamond Sword * 32 to Thinkofdeath" for a client using en_US but a client using zh_CN will see "成功将 钻石剑 * 32 给予 Thinkofdeath"

南柯郡守
Pistol_Pangan 发表于 2021-6-28 11:41
额,这个并不能解决我的问题,因为我不想服务端与客户端通信要求客户端告知服务端物品名
其他的贴子能解 ...

TranslatableComponent

都 能 解 决

不过MOD的内部名称看你自己了

Pistol_Pangan
贺兰兰 发表于 2021-6-28 12:39
请使用 BungeeChat 的 TranslatableComponent
,这能解决你的问题
from https://www.spigotmc.org/wiki/th ...

这个看起来只能用于给客户端发送信息时正确显示物品的手持名称

但是我是希望实现setDisplayName时,保留物品原名,给物品添加后缀,所以需要服务端得知物品的手持名

第一页 上一页 下一页 最后一页