谁知道基岩版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 到中文名称的查找表,但这需要大量的前期准备工作和后期维护。