• 欢迎加入MineBBS QQ讨论群:点击查看所有的官方讨论群
  • 我们将于近期对服务器进行迁移,服务可能中断至多2日。请各位安排好自己的访问计划,造成不便敬请谅解!
  • MineBBS入站考试已经上线!想要成为【正式会员】解锁更多功能吗?快来参与吧!【点我去看】

问题 @minecraft/server中block.typeid

牛顿

【Lv:3】

正式会员
注册
2023/08/10
消息
14
金粒
340.29金粒
谁知道基岩版addon里@minecraft/server
block.typeid返回的物品id咋换成中文,例如输出minecraft.wool时变成输出羊毛
 
谁知道基岩版addon里@minecraft/server
block.typeid返回的物品id咋换成中文,例如输出minecraft.wool时变成输出羊毛
在 Minecraft 基岩版 (Bedrock Edition) 的 Add-on 环境下,@minecraft/server 模块提供的 API(例如 Block.typeId)返回的是游戏内部使用的 英文 ID (如 minecraft:wool)。这些 API 本身并不直接提供获取对应中文名称或本地化名称的功能。
Add-on 脚本运行在服务端上下文,它们的设计目标是修改游戏行为、添加新内容等,而不是直接处理用户界面或语言本地化。API 返回的 ID 是标准化的,与客户端的语言设置无关。
因此,无法通过 @minecraft/server API 直接将 minecraft:wool 转换为“羊毛”。
可行的替代方案(局限性较大)
如果你想在脚本中使用中文名称,只能通过 预先创建映射表 的方式来实现。你需要自己维护一个 JSON 文件或者在代码中定义一个对象,将英文 ID 映射到中文名称。
示例 (JavaScript):
// 定义一个简单的映射表 (这是一个非常不完整的例子)
const itemIdToChineseName = {
"minecraft:wool": "羊毛",
"minecraft:cobblestone": "圆石",
"minecraft:dirt": "泥土",
"minecraft:grass": "草方块",
"minecraft:oak_log": "橡木原木",
"minecraft:oak_planks": "橡木木板",
// ... 需要添加更多项目
};

import { world } from "@minecraft/server";

world.beforeEvents.chatSend.subscribe(event => {
const player = event.sender;
// 假设玩家输入 /getblockname 来获取脚下区块名称
if (event.message.startsWith("/getblockname")) {
const blockLocation = player.location; // 获取玩家位置
// 注意:需要稍微向下取整以指向脚下的方块
const block = player.dimension.getBlock({
x: Math.floor(blockLocation.x),
y: Math.floor(blockLocation.y - 1), // 脚下方块
z: Math.floor(blockLocation.z)
});

if (block) {
const typeId = block.typeId; // 例如 "minecraft:wool"
const chineseName = itemIdToChineseName[typeId] || `未知 (${typeId})`; // 查找映射,找不到则显示ID
player.sendMessage(`${typeId} 对应的中文名是: ${chineseName}`);
}
}
});
这种方案的缺点:
手动维护: 你必须自己找到一份完整的 Minecraft ID 到中文的对照表,并将其硬编码到你的脚本或资源文件中。这工作量巨大且容易出错。
版本更新: 当 Minecraft 更新,加入新的方块/物品时,你的映射表就会过时,需要手动更新。
不灵活: 这个映射表是静态的,不能自动适应不同的语言包(除非你自己也实现一套语言切换逻辑)。
总结: @minecraft/server API 本身不支持此功能。最实际的方法就是自己建立一个从英文 ID 到中文名称的查找表,但这需要大量的前期准备工作和后期维护。
 
SAPI提供了RawText,如果你的需求不需要在JS内部进行转换,完全可以使用RawText,它可以自动根据你客户端的语言进行修改,并且@minecraft/server的大部分接口(如sendMessage)都支持使用。
 

在线会员

  • RobertLalia
  • junlinxiao
  • CIKI3
  • Oreocookies_
  • FyK
  • zzss655
  • 一个墨铭
  • 洛风澜_Sea
  • 菜鸟VOID
  • 吃米na
  • SheSi_Qiang
  • 墨凡
  • 白泽罐头装
  • 天穹
  • 1h1h1
  • 白晨折
  • ljl12517
  • moqian
  • XyLuoDYS
...和 1 更多。
后退
顶部 底部