# 3.2版本物品id变更 ## 简介 微软在1.20.50继续修改了部分方块ID,取消了附加值,相关链接请参阅[基岩版扁平化](https://zh.minecraft.wiki/w/%E5%AE%98%E6%96%B9%E9%A1%B5%E9%9D%A2/%E5%9F%BA%E5%B2%A9%E7%89%88%E6%89%81%E5%B9%B3%E5%8C%96),请开发者注意适配。 ## 处理方法 在ModSDK的接口与事件中,我们针对上述情况做了以下处理: 1. 对于返回物品信息字典的接口与事件: newItemName及newAuxValue返回新版名称与附加值。 原字段itemName及auxValue返回旧版名称与附加值。 2. 对于接受物品信息字典的接口与事件: 当字典存在newItemName及newAuxValue时,使用这两个字段。 不存在时,使用旧字段itemName及auxValue。 ## 注意事项 * 通过附加值获取获取方块状态接口没有做兼容,例如GetBlockAuxValueFromStates、GetBlockStatesFromAuxValue、GetBlockStates、SetBlockStates,如果您的组件对此有依赖,则需要对这次的改动自行做兼容处理。 * **开发完成或正在开发的组件,建议统一采用newItemName及newAuxValue字段,也不要新旧字段混用。** * 某些写法可能会失效,例如 ```python # 获取itemDict,然后在他基础上修改itemName或auxValue后再用来生成 itemdict = GetPlayerItem() itemdict['itemName'] = 'xxx' itemdict['auxValue'] = itemdict['auxValue']+1 SpawnItemToPlayerInv(itemdict) ``` 因为GetPlayerItem返回的itemDict含有新字段,再传入SpawnItemToPlayerInv时,会读取新字段生成物品,因此对原字段的修改无效。 ## 物品名称变更表 以下为3.2版本变更了名称的物品列表,表格内的名称省略了minecraft命名空间。 | 中文名称 | 旧命名 | 旧附加值 | 新命名 | | :------- | ------ | -------- | ------ | | 花岗岩 | stone | 1 | granite | | 磨制花岗岩 | stone | 2 | polished_granite | | 闪长岩 | stone | 3 | diorite | | 磨制闪长岩 | stone | 4 | polished_diorite | | 安山岩 | stone | 5 | andesite | | 磨制安山岩 | stone | 6 | polished_andesite | | 云杉树木板 | planks | 1 | spruce_planks | | 白桦木板 | planks | 2 | birch_planks | | 丛林树木板 | planks | 3 | jungle_planks | | 金合欢木板 | planks | 4 | acacia_planks | | 深色橡木板 | planks | 5 | dark_oak_planks | | 橙色玻璃 | stained_glass | 1 | orange_stained_glass | | 品红色玻璃 | stained_glass | 2 | magenta_stained_glass | | 淡蓝色玻璃 | stained_glass | 3 | light_blue_stained_glass | | 黄色玻璃 | stained_glass | 4 | yellow_stained_glass | | 黄绿色玻璃 | stained_glass | 5 | lime_stained_glass | | 粉红色玻璃 | stained_glass | 6 | pink_stained_glass | | 灰色玻璃 | stained_glass | 7 | gray_stained_glass | | 淡灰色玻璃 | stained_glass | 8 | light_gray_stained_glass | | 青色玻璃 | stained_glass | 9 | cyan_stained_glass | | 紫色玻璃 | stained_glass | 10 | purple_stained_glass | | 蓝色玻璃 | stained_glass | 11 | blue_stained_glass | | 棕色玻璃 | stained_glass | 12 | brown_stained_glass | | 绿色玻璃 | stained_glass | 13 | green_stained_glass | | 红色玻璃 | stained_glass | 14 | red_stained_glass | | 黑色玻璃 | stained_glass | 15 | black_stained_glass | | 橙色玻璃板 | stained_glass_pane | 1 | orange_stained_glass_pane | | 品红色玻璃板 | stained_glass_pane | 2 | magenta_stained_glass_pane | | 淡蓝色玻璃板 | stained_glass_pane | 3 | light_blue_stained_glass_pane | | 黄色玻璃板 | stained_glass_pane | 4 | yellow_stained_glass_pane | | 黄绿色玻璃板 | stained_glass_pane | 5 | lime_stained_glass_pane | | 粉红色玻璃板 | stained_glass_pane | 6 | pink_stained_glass_pane | | 灰色玻璃板 | stained_glass_pane | 7 | gray_stained_glass_pane | | 淡灰色玻璃板 | stained_glass_pane | 8 | light_gray_stained_glass_pane | | 青色玻璃板 | stained_glass_pane | 9 | cyan_stained_glass_pane | | 紫色玻璃板 | stained_glass_pane | 10 | purple_stained_glass_pane | | 蓝色玻璃板 | stained_glass_pane | 11 | blue_stained_glass_pane | | 棕色玻璃板 | stained_glass_pane | 12 | brown_stained_glass_pane | | 绿色玻璃板 | stained_glass_pane | 13 | green_stained_glass_pane | | 红色玻璃板 | stained_glass_pane | 14 | red_stained_glass_pane | | 黑色玻璃板 | stained_glass_pane | 15 | black_stained_glass_pane | | 橙色陶瓦 | stained_hardened_clay | 1 | orange_terracotta | | 品红色陶瓦 | stained_hardened_clay | 2 | magenta_terracotta | | 淡蓝色陶瓦 | stained_hardened_clay | 3 | light_blue_terracotta | | 黄色陶瓦 | stained_hardened_clay | 4 | yellow_terracotta | | 黄绿色陶瓦 | stained_hardened_clay | 5 | lime_terracotta | | 粉红色陶瓦 | stained_hardened_clay | 6 | pink_terracotta | | 灰色陶瓦 | stained_hardened_clay | 7 | gray_terracotta | | 淡灰色陶瓦 | stained_hardened_clay | 8 | light_gray_terracotta | | 青色陶瓦 | stained_hardened_clay | 9 | cyan_terracotta | | 紫色陶瓦 | stained_hardened_clay | 10 | purple_terracotta | | 蓝色陶瓦 | stained_hardened_clay | 11 | blue_terracotta | | 棕色陶瓦 | stained_hardened_clay | 12 | brown_terracotta | | 绿色陶瓦 | stained_hardened_clay | 13 | green_terracotta | | 红色陶瓦 | stained_hardened_clay | 14 | red_terracotta | | 黑色陶瓦 | stained_hardened_clay | 15 | black_terracotta | | 橙色混凝土粉末 | concretepowder | 1 | orange_concrete_powder | | 品红色混凝土粉末 | concretepowder | 2 | magenta_concrete_powder | | 淡蓝色混凝土粉末 | concretepowder | 3 | light_blue_concrete_powder | | 黄色混凝土粉末 | concretepowder | 4 | yellow_concrete_powder | | 黄绿色混凝土粉末 | concretepowder | 5 | lime_concrete_powder | | 粉红色混凝土粉末 | concretepowder | 6 | pink_concrete_powder | | 灰色混凝土粉末 | concretepowder | 7 | gray_concrete_powder | | 淡灰色混凝土粉末 | concretepowder | 8 | light_gray_concrete_powder | | 青色混凝土粉末 | concretepowder | 9 | cyan_concrete_powder | | 紫色混凝土粉末 | concretepowder | 10 | purple_concrete_powder | | 蓝色混凝土粉末 | concretepowder | 11 | blue_concrete_powder | | 棕色混凝土粉末 | concretepowder | 12 | brown_concrete_powder | | 绿色混凝土粉末 | concretepowder | 13 | green_concrete_powder | | 红色混凝土粉末 | concretepowder | 14 | red_concrete_powder | | 黑色混凝土粉末 | concretepowder | 15 | black_concrete_powder | 为方便开发者转换数据,下面提供了一个Python函数,该函数根据旧命名和旧附加值返回新命名。将以下代码保存在一个py文件中,导入后调用其中的get_new_name函数即可: ```python # -*- coding: utf-8 -*- # 定义旧命名和新命名的映射关系 mapping = { ('stone', 1): 'granite', ('stone', 2): 'polished_granite', ('stone', 3): 'diorite', ('stone', 4): 'polished_diorite', ('stone', 5): 'andesite', ('stone', 6): 'polished_andesite', ('planks', 1): 'spruce_planks', ('planks', 2): 'birch_planks', ('planks', 3): 'jungle_planks', ('planks', 4): 'acacia_planks', ('planks', 5): 'dark_oak_planks', ('stained_glass', 1): 'orange_stained_glass', ('stained_glass', 2): 'magenta_stained_glass', ('stained_glass', 3): 'light_blue_stained_glass', ('stained_glass', 4): 'yellow_stained_glass', ('stained_glass', 5): 'lime_stained_glass', ('stained_glass', 6): 'pink_stained_glass', ('stained_glass', 7): 'gray_stained_glass', ('stained_glass', 8): 'light_gray_stained_glass', ('stained_glass', 9): 'cyan_stained_glass', ('stained_glass', 10): 'purple_stained_glass', ('stained_glass', 11): 'blue_stained_glass', ('stained_glass', 12): 'brown_stained_glass', ('stained_glass', 13): 'green_stained_glass', ('stained_glass', 14): 'red_stained_glass', ('stained_glass', 15): 'black_stained_glass', ('stained_glass_pane', 1): 'orange_stained_glass_pane', ('stained_glass_pane', 2): 'magenta_stained_glass_pane', ('stained_glass_pane', 3): 'light_blue_stained_glass_pane', ('stained_glass_pane', 4): 'yellow_stained_glass_pane', ('stained_glass_pane', 5): 'lime_stained_glass_pane', ('stained_glass_pane', 6): 'pink_stained_glass_pane', ('stained_glass_pane', 7): 'gray_stained_glass_pane', ('stained_glass_pane', 8): 'light_gray_stained_glass_pane', ('stained_glass_pane', 9): 'cyan_stained_glass_pane', ('stained_glass_pane', 10): 'purple_stained_glass_pane', ('stained_glass_pane', 11): 'blue_stained_glass_pane', ('stained_glass_pane', 12): 'brown_stained_glass_pane', ('stained_glass_pane', 13): 'green_stained_glass_pane', ('stained_glass_pane', 14): 'red_stained_glass_pane', ('stained_glass_pane', 15): 'black_stained_glass_pane', ('stained_hardened_clay', 1): 'orange_terracotta', ('stained_hardened_clay', 2): 'magenta_terracotta', ('stained_hardened_clay', 3): 'light_blue_terracotta', ('stained_hardened_clay', 4): 'yellow_terracotta', ('stained_hardened_clay', 5): 'lime_terracotta', ('stained_hardened_clay', 6): 'pink_terracotta', ('stained_hardened_clay', 7): 'gray_terracotta', ('stained_hardened_clay', 8): 'light_gray_terracotta', ('stained_hardened_clay', 9): 'cyan_terracotta', ('stained_hardened_clay', 10): 'purple_terracotta', ('stained_hardened_clay', 11): 'blue_terracotta', ('stained_hardened_clay', 12): 'brown_terracotta', ('stained_hardened_clay', 13): 'green_terracotta', ('stained_hardened_clay', 14): 'red_terracotta', ('stained_hardened_clay', 15): 'black_terracotta', ('concretepowder', 1): 'orange_concrete_powder', ('concretepowder', 2): 'magenta_concrete_powder', ('concretepowder', 3): 'light_blue_concrete_powder', ('concretepowder', 4): 'yellow_concrete_powder', ('concretepowder', 5): 'lime_concrete_powder', ('concretepowder', 6): 'pink_concrete_powder', ('concretepowder', 7): 'gray_concrete_powder', ('concretepowder', 8): 'light_gray_concrete_powder', ('concretepowder', 9): 'cyan_concrete_powder', ('concretepowder', 10): 'purple_concrete_powder', ('concretepowder', 11): 'blue_concrete_powder', ('concretepowder', 12): 'brown_concrete_powder', ('concretepowder', 13): 'green_concrete_powder', ('concretepowder', 14): 'red_concrete_powder', ('concretepowder', 15): 'black_concrete_powder' } def get_new_name(old_name, old_aux): # 根据旧命名和旧附加值返回新命名 return mapping.get((old_name, old_aux), old_name) ``` 这个函数 `get_new_name` 接受两个参数:`old_name` 和 `old_aux`,并返回对应的新命名。如果输入的旧命名和旧附加值在映射表中找不到,会返回 `old_name`。