本模块用于方块和物品在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表中填入相应的转换。
- 对于java版
- 如果一个物品或方块的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表。
- jeBlockToItem和jeBlockToItem2可以通过自定义超平坦,输入方块id,观察显示的图标和名称是哪个方块或物品的。如果是空气,则意味着该方块没有物品形式。
- 如果新加入的方块或物品的本地化键名不是标准格式(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;通过内存修改器或存档编辑器修改物品栏逐个数字进行测试。)
- 向了解这方面的人询问该新增物品是否有旧版数字id
用法[]
此模块为元数据模块,不建议在条目中直接使用。应在其他模块中调用,或根据所需功能封装成模板后使用。
子模块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判断是否为方块的直接物品形式。