Minecraft Wiki

除另有声明,转载时均必须注明出处若簡繁轉換出錯,請以遊戲內為準请勇于扩充与修正内容有兴趣逛逛我们的微博沟通交流,欢迎到社区专页需要协助,请在告示板留言

了解更多

Minecraft Wiki
Advertisement
这是文档页面,它应该被放置到Module:Sandbox/AllConversion2。查看Template:Documentation以获取更多信息。

本模块用于方块和物品在id与英文名、本地化键名之间的转换。

功能[]

已支持的功能[]

  • Java版
    • 获取方块的直接物品形式
    • 获取方块的间接物品形式(鼠标中键获取到的物品形式)
    • 方块或物品id -> 本地化键名
    • 方块或物品id -> 英文名
    • 方块或物品的本地化键名 -> id
    • 本地化键名 -> 英文名
    • 方块或物品id -> 适用于sprite模块和autolink模块的英文名
  • 基岩版
    • 判断物品是否为方块的直接物品形式(id小于256的物品),并获取对应的方块id
    • 获取方块的直接物品形式
    • 方块id -> 数字id
    • 物品id -> 旧版数字id
    • 方块或物品id -> 本地化键名
    • 方块或物品id -> 英文名
    • 方块或物品的本地化键名 -> id
    • 本地化键名 -> 英文名
    • 方块或物品id -> 适用于sprite模块和autolink模块的英文名
    • 合理处置物品别名id(be.fromLegacy函数)
    • 物品id -> 物品的别名id

子模块的功能[]

  • /Data_Table
    • 生成java版方块列表
    • 生成java版物品列表
    • 生成基岩版方块列表(附带方块与其直接物品形式的id对照表)
    • 生成基岩版物品列表(附带旧版数字id)
    • 生成附带非开发者非教育版的运行时数字id的基岩版物品列表
    • 生成附带教育版运行时数字id的基岩版物品列表
    • 生成附带开发者版运行时数字id的基岩版物品列表
    • 生成基岩版物品别名id列表

潜在的功能[]

为以下功能提供了足够的数据或接口,但未直接实现这些功能。

  • 根据是否为开发者版、教育版获取物品的运行时id
  • 其他

维护[]

日常维护[]

  • 如果加入了新的方块或物品
    • 对于java版
      • 直接把id添加进模块:Sandbox/AllConversion2/doc/JE IDs
    • 对于基岩版
      • 下载附加包文档,获取addon.html中Items章节的表格。也可以在bedrock.dev/docs/beta/Addons#Items在线查看。
      • 从小到大进行排序,小于256的是方块,大于256的是物品。
        • 物品id应该按顺序放入模块:Sandbox/AllConversion2/doc/BE Items的“all”表和“new”表中。
        • 方块id应该按顺序放入模块:Sandbox/AllConversion2/doc/BE Blocks的“all”表格中。数字id为255减去文档中的数字id。
      • 检查setblock等命令的自动补全
        • 如果命令自动补全显示的方块id和文档Items章节小于255的方块id有所不同,模块:Sandbox/AllConversion2/doc/data的beItemToBlock表中填入相应的转换
  • 如果一个物品或方块的id发生改变
    • 更新各个页面的id。
  • 如果教育版更新
    • 模块:Sandbox/AllConversion2/doc/BE Items的“new”表中已加入教育版的物品删去(glow_stick除外)。
  • 如果语言文件改变
    • 请及时更新模块:Sandbox/AllConversion2/doc/JE lang模块:Sandbox/AllConversion2/doc/BE lang

其他维护[]

  • 如果Java版加入新方块,模块:Sandbox/AllConversion2/doc/data中的jeBlockToItem、jeBlockToItem2、jeBlockIndirectItem三个表根据实际情况更新。
    • jeBlockToItem和jeBlockToItem2可以通过自定义超平坦,输入方块id,观察显示的图标和名称是哪个方块或物品的。如果是空气,则意味着该方块没有物品形式。
      • jeBlockToItem表是方块id->物品id
      • jeBlockToItem2表是方块id->方块id
    • jeBlockIndirectItem则通过创造模式对方块按鼠标中键获取物品,如果获取到的物品和上一条不同,则填入jeBlockIndirectItem表。
  • 如果新加入的方块或物品的本地化键名不是标准格式(java版:block/item.minecraft.id,基岩版:tile/item.id.name)
    • 根据实际需求填写模块:Sandbox/AllConversion2/doc/data中的jeItemIdToTrkey、jeBlockIdToTrkey、beItemIdToTrkey、beBlockIdToTrkey、beItemTrkeyToId、beBlockTrkeyToId
  • 如果游戏内名称不能很好地描述一个方块或物品,根据实际需求填写jeItemIdToEnname、jeBlockIdToEnname、beItemIdToEnname、beBlockIdToEnname。
  • 如果数据值页面的sprite不能正常显示,更据实际需求更新beItemSprite、beBlockSprite

基岩版的向下兼容[]

  • 如果基岩版加入了新的生物桶、刷怪蛋、旗帜图案类物品
    • 更新模块:Sandbox/AllConversion2/doc/BE Items的complexAlias表
    • 格式为{附加值, id}
      • 附加值可以通过/give @s (bucket/spawn_egg/banner_pattern) 1 <附加值>命令测试得到。
  • 如果基岩版物品的命名空间id改变
    • 更新各个页面的id。
    • 通过/give @s 旧id测试旧id是否依旧被支持。
      • 如果是,在模块:Sandbox/AllConversion2/doc/BE Items的alias表中添加一项“旧id=新id”
      • (通常实验性玩法中的物品的旧id不被支持,非实验性玩法的旧id保持支持。)
  • 如果基岩版加入了新的物品
    • 向了解这方面的人询问该新增物品是否有旧版数字id
      • 如果有,在模块:Sandbox/AllConversion2/doc/BE Items的legacyId表添加一项{旧版数字id, id}
    • (新物品的旧版数字id的两个获取方法:反汇编BDS;通过内存修改器或存档编辑器修改物品栏逐个数字进行测试。)

用法[]

此模块为元数据模块,不建议在条目中直接使用。应在其他模块中调用,或根据所需功能封装成模板后使用。

子模块Data Table应在条目中直接通过#invoke调用。

convert[]

通过{{#invoke:Sandbox/AllConversion2/doc|convert|...}}调用已封装的convert函数,需要传入多个参数。

  • type: block/item
  • from: 'enname','id','trkey'
  • to: 'enname','id','trkey'
  • 1: 要处理的对象
  • ver: 版本。je或be
  • aux: 可选。基岩版方块或物品的附加值
  • legacy: 可选。基岩版处理物品的别名id的方式
    • no: 默认。已知不会传入普通别名id,且传入的复杂别名id一定属于新版。
    • unknown-give: 不清楚传入的复杂别名id是否是属于旧版,但要求输出的是具体的物品种类。效果类似于战利品表中的id。
    • unknown-all: 不清楚传入的复杂别名id是否是属于旧版,输出该id可以表示的所有情况。效果类似于配方表中的id。可能会返回'err',如传入coal,无法判断是否应该包含木炭,因此输出'err'。
    • yes: 已知传入的复杂别名id一定属于旧版。

注:复杂别名id是指,因在新版中已被拆分而对应了多个物品ID的别名ID。如coal、spawn_egg、bucket等。

BE与JE[]

可以通过{{#invoke:Sandbox/AllConversion2/doc|BE|...}}或{{#invoke:Sandbox/AllConversion2/doc|JE|...}}调用内部函数。

其他[]

在其他模块中调用该模块时,对于基岩版,建议先用p.be.fromLegacy(id, aux, legacy)以处理别名id,返回两个值,把第一个作为id,第二个作为spec,传入要调用的函数。对于传入的参数既可能是方块的直接物品形式(数字id小于256的物品)又可能是普通物品(数字id大于256的去皮)的情况,建议先调用p.be.getIfBlock判断是否为方块的直接物品形式。



Advertisement