Files
netease-bedrock-wiki/mcguide/20-玩法开发/10-基本概念/1-我的世界基础概念.md
2024-12-23 10:57:59 +08:00

14 KiB
Raw Blame History

front, hard, time
front hard time
入门 分钟

我的世界基础概念

世界

表示游戏的单位,单个游戏存档、单个网络服务器等都是一个世界。

区块

区块是世界里一个大小为16×384×16的部分是游戏地图加载卸载的基本单位。

当玩家第一次出现在世界时会在其周围生成区块,随着玩家对世界的探索,相邻的区块也会被生成。

区块的X坐标Floor(X坐标 / 16)区块的Z坐标Floor(Z坐标 / 16)Floor意为向下取整。

一个区块(X, Z)中坐标最小点的坐标为(X * 16, -64, Z * 16),坐标最大点的坐标为(X * 16 + 15, 320, Z * 16 + 15)。

实体

具有可区别性的物体,不一定是物理存在的实体。

包括服务端运算的,会保存到存档的生物实体、物品实体、方块实体、抛射物实体等

以及纯客户端表现,退出游戏后就销毁的特效实体(粒子实体、序列帧实体)、文字面板实体等。

生物

指游戏世界中有生命的,可移动的一类实体。其中玩家也属于生物的一种。

玩家

玩家所控制的实体对象,同时也属于生物的一种。包括本地玩家和其他玩家,在游戏中,由玩家自己控制的称为本地玩家,否则为其他玩家。

物品

物品栏中具有使用属性的物品、地面上的掉落物等都称为物品。其中掉落物也是实体的一种。

附魔信息字典

该字典的内容如下

关键字 数据类型 说明
identifier str 自定义附魔id
description str 对于zh_CN.lang中的langStr
primary_slots list[str] 附魔槽位,详见自定义附魔自定义附魔
cost list[int] 附魔威力等级对应的经验消耗会影响砂轮移除魔咒时返回的经验值以及在附魔台上被附魔到该魔咒的概率cost越大附魔概率越小;列表内元素数量需与max_level一致否则注册失败
frequency str 附魔稀有度影响铁砧结合附魔物品的经验消耗默认为common详见自定义附魔自定义附魔
is_treasure_only bool 设为true时为宝藏型魔咒将影响附魔获取方式默认为false
is_discoverable bool 设为false时为宝藏型魔咒将影响附魔获取方式默认为true
is_lootable bool 设为true时可以通过与图书管理员交易获得默认为true
is_curse bool 设为true时为诅咒附魔不可通过砂轮移除默认为false
max_level int 附魔威力等级设置后会自动在创造物品栏注册各等级的附魔书默认为1
incompatible list[str] ["unbreaking"] // 冲突附魔名称

物品信息字典

也叫itemDict。是python事件与接口中获取物品信息以及生成物品时使用的dict类型的变量。

该字典的内容如下

关键字 数据类型 说明
newItemName str 必须设置物品的identifier即"命名空间:物品名"
newAuxValue int 必须设置,物品附加值
itemName str 废弃1.22及以前版本的旧identifier详见1.23版本物品id变更
auxValue int 废弃1.22及以前版本的旧物品附加值,详见1.23版本物品id变更
count int 必须设置物品数量。设置为0时为空物品
showInHand bool 可选是否显示在手上默认为True
enchantData list(tuple(EnchantType, int)) 可选附魔数据tuple中 EnchantType 为附魔类型int为附魔等级
modEnchantData list(tuple(str, int)) 可选自定义附魔数据tuple中str为自定义附魔idint为自定义附魔等级
customTips str 可选物品的自定义tips修改该内容后会覆盖实例的组件netease:customtips的内容
extraId str 可选,物品自定义标识符。可以用于保存数据, 区分物品
userData dict 可选物品userData用于灾厄旗帜、旗帜等物品请勿随意设置该值
durability int 可选,物品耐久度,不存在耐久概念的物品默认值为零

customTips 设置支持自定义格式:包含四种自带格式:

格式字符串 说明
%name% 物品名
%category% 物品类型
%enchanting% 附魔属性
%attack_damage% 攻击伤害

自带格式可以与自定义文本自由组合,顺序可以打乱,物品的自定义格式的文本不存在时不予显示。

自带格式的字符串采用原版的显示格式,物品名前面不带换行符,物品类型、附魔属性前面自带一个换行符,攻击伤害前面自带两个换行符。

举个例子:head%name%after%category%%enchanting%\nnewline%attack_damage%\n\nend,效果如下:

customTips自定义格式示例

记分板记分准则信息字典

也叫scoreDict。是python事件与接口中获取的记分准则及其分数

该字典的内容如下

关键字 数据类型 说明
displayName str 记分项显示名称
name str 记分项名称
criteriaName str 记分准则类型名称,目前基岩版只支持(dummy) ,只有获取所有记分项数据时才会有该字段
value int 玩家分数(只有获取玩家分数接口时会有该字段)

玩家记分项信息字典

也叫playerScoreDict。是python事件与接口中获取单个玩家所有的记分准则及其分数

该字典的内容如下

关键字 数据类型 说明
playerId str 玩家id
scoreList list(scoreDict) 记分准则及分数列表

方块

游戏中场景的基本组成单位长宽高均为1单位长度的立方体网格不同的方块具有不同的材质。

方块信息字典

也叫blockDict。是python事件与接口中获取方块信息以及生成方块时使用的dict类型的变量。

该字典的内容如下

关键字 数据类型 说明
name str 必须设置方块identifier包含命名空间及名称如minecraft:air
aux int 方块附加值可缺省默认为0

方块状态

一种方块可能存在多种方块状态例如不同颜色的羊毛。一个auxvalue实际上也是对应一种方块状态只是相比于用int来表示的auxvalue方块状态更为可读。

例如橙色羊毛的identifier为minecraft:woolauxvalue为1而用方块状态则表示为

{
    "name": "minecraft:wool",
    "states": {
        "color": "orange"
    }
}

可以在游戏内使用GetBlockStates将方块状态打印出来。

也可以在Block_states页面中查阅,一些没有的可以在方块的页面找到,例如羊毛泥土。注意要使用基岩版及Bedrock Edition里的内容。不排除wiki上有遗漏或错误

方块基本信息字典

也叫blockBasicDict。是python事件与接口中获取方块基本信息时使用的dict类型的变量。

该字典的内容如下

关键字 数据类型 说明
blockLightAbsorption int 方块透光率, 具体见官方wiki
blockLightEmission int 方块亮度, 具体见官方wiki
breathability int 方块的 可呼吸性 (只有定义了"minecraft:breathability"组件的方块有数据,其余默认为solid的枚举值)(需要开启假日创造者功能)
explosionResistance float 方块爆炸抗性
loot str loot table控制掉落物(只有定义了"minecraft:loot"组件的方块有数据,其余默认为空字符串"")
mapColor str 用十六进制颜色定义该方块在地图上显示的颜色(只有定义了"minecraft:map_color"组件的方块以及部分原版方块有数据,其余默认为"#0")
unwalkable bool 生物是否可在上方行走,默认为false(只有定义了"minecraft:unwalkable"组件的方块有数据,其余默认为false)
tier dict/None 与挖掘相关的属性,具体见挖掘属性(只有定义了"netease:tier"组件的方块有数据,其余默认为None)
renderLayer int 方块渲染时使用的 材质
solid bool 方块是否为实心方块,影响生物在方块内是否受到窒息伤害
pathable bool 游戏内AI在进行寻路时方块是否被当作障碍物(只有定义了"netease:pathable"组件的方块有数据,其余默认为false)
fireResistant bool 方块是否防火(只有定义了"netease:fire_resistant"组件的方块有数据,其余默认为false)
creativeCategory int 方块所在 创造栏目录
destroyTime float 方块摧毁时间

NBT数据格式

原版方块实体数据、物品userData使用NBT格式存取再通过Python接口获取时会进行一定的转换具体转换规则如下

NBT类型 转换后Python数据
Byte {"__type__" : 1, "___value__": True/False}
Short {"__type__" : 2, "___value__": ShortValue}
Int {"__type__" : 3, "__value__": IntValue}
Int64 {"__type__" : 4, "__value__": Int64Value}
Float {"__type__" : 5, "__value__": FloatValue}
Double {"__type__" : 6, "__value__": DoubleValue}
ByteArray {"__type__" : 7, "__value__": IntList}
String {"__type__" : 8, "__value__": String}
List {"__type__" : 9, "__value__": ...(递归转换)}
Compound {"__type__" : 10, "__value__": ...(递归转换)}
IntArray {"__type__" : 11, "__value__": IntList}

抛射物

受外力被抛射空中飞行的实体,受重力与摩擦力影响,例如游戏中射出的箭。

生物群系

游戏中生成的世界被划分为一个个不同的自然环境,例如森林、丛林、沙漠和针叶林等,这些都是不同的生物群系。

骨骼模型

与基岩版原版的基于cube搭建的模型不同是使用3dmax等建模软件搭建的模型。游戏中的大部分生物都可以被替换为骨骼模型进而实现不同的表现效果。

序列帧

通过一帧帧的图片不断进行切换形成的动画效果,在游戏中为一个平面面片。

粒子

通过不断发射多个不同大小规模的平面面片形成的特效效果,通过替换贴图材质等可以模拟丰富的表现。

文字面板

本质上为序列帧的文字面板,功能上与文本类似,在游戏中包括伤害飘字,实体头顶名称等内容。

UI

UI界面游戏和用户之间进行交互和信息交换的界面。玩家可以通过触发UI来控制对应的游戏逻辑。