Skip to content

3.2版本物品id变更

简介

微软在1.20.50继续修改了部分方块ID,取消了附加值,相关链接请参阅基岩版扁平化,请开发者注意适配。

处理方法

在ModSDK的接口与事件中,我们针对上述情况做了以下处理:

  1. 对于返回物品信息字典的接口与事件:

newItemName及newAuxValue返回新版名称与附加值。

原字段itemName及auxValue返回旧版名称与附加值。

  1. 对于接受物品信息字典的接口与事件:

当字典存在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命名空间。

中文名称旧命名旧附加值新命名
花岗岩stone1granite
磨制花岗岩stone2polished_granite
闪长岩stone3diorite
磨制闪长岩stone4polished_diorite
安山岩stone5andesite
磨制安山岩stone6polished_andesite
云杉树木板planks1spruce_planks
白桦木板planks2birch_planks
丛林树木板planks3jungle_planks
金合欢木板planks4acacia_planks
深色橡木板planks5dark_oak_planks
橙色玻璃stained_glass1orange_stained_glass
品红色玻璃stained_glass2magenta_stained_glass
淡蓝色玻璃stained_glass3light_blue_stained_glass
黄色玻璃stained_glass4yellow_stained_glass
黄绿色玻璃stained_glass5lime_stained_glass
粉红色玻璃stained_glass6pink_stained_glass
灰色玻璃stained_glass7gray_stained_glass
淡灰色玻璃stained_glass8light_gray_stained_glass
青色玻璃stained_glass9cyan_stained_glass
紫色玻璃stained_glass10purple_stained_glass
蓝色玻璃stained_glass11blue_stained_glass
棕色玻璃stained_glass12brown_stained_glass
绿色玻璃stained_glass13green_stained_glass
红色玻璃stained_glass14red_stained_glass
黑色玻璃stained_glass15black_stained_glass
橙色玻璃板stained_glass_pane1orange_stained_glass_pane
品红色玻璃板stained_glass_pane2magenta_stained_glass_pane
淡蓝色玻璃板stained_glass_pane3light_blue_stained_glass_pane
黄色玻璃板stained_glass_pane4yellow_stained_glass_pane
黄绿色玻璃板stained_glass_pane5lime_stained_glass_pane
粉红色玻璃板stained_glass_pane6pink_stained_glass_pane
灰色玻璃板stained_glass_pane7gray_stained_glass_pane
淡灰色玻璃板stained_glass_pane8light_gray_stained_glass_pane
青色玻璃板stained_glass_pane9cyan_stained_glass_pane
紫色玻璃板stained_glass_pane10purple_stained_glass_pane
蓝色玻璃板stained_glass_pane11blue_stained_glass_pane
棕色玻璃板stained_glass_pane12brown_stained_glass_pane
绿色玻璃板stained_glass_pane13green_stained_glass_pane
红色玻璃板stained_glass_pane14red_stained_glass_pane
黑色玻璃板stained_glass_pane15black_stained_glass_pane
橙色陶瓦stained_hardened_clay1orange_terracotta
品红色陶瓦stained_hardened_clay2magenta_terracotta
淡蓝色陶瓦stained_hardened_clay3light_blue_terracotta
黄色陶瓦stained_hardened_clay4yellow_terracotta
黄绿色陶瓦stained_hardened_clay5lime_terracotta
粉红色陶瓦stained_hardened_clay6pink_terracotta
灰色陶瓦stained_hardened_clay7gray_terracotta
淡灰色陶瓦stained_hardened_clay8light_gray_terracotta
青色陶瓦stained_hardened_clay9cyan_terracotta
紫色陶瓦stained_hardened_clay10purple_terracotta
蓝色陶瓦stained_hardened_clay11blue_terracotta
棕色陶瓦stained_hardened_clay12brown_terracotta
绿色陶瓦stained_hardened_clay13green_terracotta
红色陶瓦stained_hardened_clay14red_terracotta
黑色陶瓦stained_hardened_clay15black_terracotta
橙色混凝土粉末concretepowder1orange_concrete_powder
品红色混凝土粉末concretepowder2magenta_concrete_powder
淡蓝色混凝土粉末concretepowder3light_blue_concrete_powder
黄色混凝土粉末concretepowder4yellow_concrete_powder
黄绿色混凝土粉末concretepowder5lime_concrete_powder
粉红色混凝土粉末concretepowder6pink_concrete_powder
灰色混凝土粉末concretepowder7gray_concrete_powder
淡灰色混凝土粉末concretepowder8light_gray_concrete_powder
青色混凝土粉末concretepowder9cyan_concrete_powder
紫色混凝土粉末concretepowder10purple_concrete_powder
蓝色混凝土粉末concretepowder11blue_concrete_powder
棕色混凝土粉末concretepowder12brown_concrete_powder
绿色混凝土粉末concretepowder13green_concrete_powder
红色混凝土粉末concretepowder14red_concrete_powder
黑色混凝土粉末concretepowder15black_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_nameold_aux,并返回对应的新命名。如果输入的旧命名和旧附加值在映射表中找不到,会返回 old_name