Files
netease-bedrock-wiki/mcguide/20-玩法开发/10-基本概念/1-我的世界基础概念.md
2025-08-25 18:36:29 +08:00

265 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
front:
hard: 入门
time: 分钟
---
# <span id="我的世界基础概念"></span>我的世界基础概念
<span id='世界'></span>
## 世界
表示游戏的单位,单个游戏存档、单个网络服务器等都是一个世界。
<span id='区块'></span>
## 区块
区块是世界里一个大小为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)。
<span id='实体'></span>
## 实体
具有可区别性的物体,不一定是物理存在的实体。
包括服务端运算的,会保存到存档的生物实体、物品实体、方块实体、抛射物实体等
以及纯客户端表现,退出游戏后就销毁的特效实体(粒子实体、序列帧实体)、文字面板实体等。
<span id='生物'></span>
## 生物
指游戏世界中有生命的,可移动的一类实体。其中玩家也属于生物的一种。
<span id='玩家'></span>
## 玩家
玩家所控制的实体对象,同时也属于生物的一种。包括本地玩家和其他玩家,在游戏中,由玩家自己控制的称为本地玩家,否则为其他玩家。
<span id='物品'></span>
## 物品
物品栏中具有使用属性的物品、地面上的掉落物等都称为物品。其中掉落物也是实体的一种。
<span id='附魔信息字典'></span>
## 附魔信息字典
该字典的内容如下
| 关键字 | 数据类型 | 说明 |
| ---------------- | --------- | ---- |
| identifier | str | 自定义附魔id|
| description | str | 对于zh_CN.lang中的langStr |
| primary_slots | list[str] | 附魔槽位,详见自定义附魔<a href="../15-自定义游戏内容/11-自定义附魔文档.html">自定义附魔</a> |
| cost | list[int] | 附魔威力等级对应的经验消耗会影响砂轮移除魔咒时返回的经验值以及在附魔台上被附魔到该魔咒的概率cost越大附魔概率越小;列表内元素数量需与max_level一致否则注册失败 |
| frequency | str | 附魔稀有度影响铁砧结合附魔物品的经验消耗默认为common详见自定义附魔<a href="../15-自定义游戏内容/11-自定义附魔文档.html">自定义附魔</a>|
| 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"] // 冲突附魔名称 |
<span id='物品信息字典'></span>
## 物品信息字典
也叫itemDict。是python事件与接口中获取物品信息以及生成物品时使用的dict类型的变量。
该字典的内容如下
| 关键字 | 数据类型 | 说明 |
| -------------- | ----------------------------- | ------------------------------------------------------------ |
| newItemName | str | 必须设置物品的identifier即"命名空间:物品名" |
| newAuxValue | int | 必须设置,物品附加值 |
| itemName | str | 废弃1.22及以前版本的旧identifier详见<a href="../13-模组SDK编程/2-Python脚本开发/99-1.23版本物品id变更.html">1.23版本物品id变更</a> |
| auxValue | int | 废弃1.22及以前版本的旧物品附加值,详见<a href="../13-模组SDK编程/2-Python脚本开发/99-1.23版本物品id变更.html">1.23版本物品id变更</a> |
| count | int | 必须设置物品数量。设置为0时为空物品 |
| showInHand | bool | 可选是否显示在手上默认为True |
| enchantData | list(tuple(EnchantType, int)) | 可选附魔数据tuple中<a href="../../../mcdocs/1-ModAPI/枚举值/EnchantType.html" rel="noopenner"> EnchantType </a>为附魔类型int为附魔等级 |
| modEnchantData | list(tuple(str, int)) | 可选自定义附魔数据tuple中str为自定义附魔idint为自定义附魔等级 |
| customTips | str | 可选物品的自定义tips修改该内容后会覆盖实例的组件<a href="../15-自定义游戏内容/1-自定义物品/1-自定义基础物品.html">netease:customtips</a>的内容 |
| extraId | str | 可选,物品自定义标识符。可以用于保存数据, 区分物品 |
| userData | dict | 可选物品userData用于灾厄旗帜、旗帜等物品请勿随意设置该值 |
| durability | int | 可选,物品耐久度,不存在耐久概念的物品默认值为零 |
customTips 设置支持自定义格式:包含四种自带格式:
| 格式字符串 | 说明 |
| --------------- | -------- |
| %name% | 物品名 |
| %category% | 物品类型 |
| %enchanting% | 附魔属性 |
| %attack_damage% | 攻击伤害 |
自带格式可以与自定义文本自由组合,顺序可以打乱,物品的自定义格式的文本不存在时不予显示。
自带格式的字符串采用原版的显示格式,物品名前面不带换行符,物品类型、附魔属性前面自带一个换行符,攻击伤害前面自带两个换行符。
举个例子:`head%name%after%category%%enchanting%\nnewline%attack_damage%\n\nend`,效果如下:
![customTips自定义格式示例](./picture/customtips_example.png)
<span id='记分板记分准则信息字典'></span>
## 记分板记分准则信息字典
也叫scoreDict。是python事件与接口中获取的记分准则及其分数
该字典的内容如下
| 关键字 | 数据类型 | 说明 |
| ------ | -------- | ------------------------------------------------------------ |
| displayName | str | 记分项显示名称 |
| name | str | 记分项名称 |
| criteriaName | str | 记分准则类型名称,目前基岩版只支持(dummy) ,只有获取所有记分项数据时才会有该字段 |
| value | int | 玩家分数(只有获取玩家分数接口时会有该字段) |
* 记分板相关释义详见 [官方wiki](https://zh.minecraft.wiki/w/%E8%AE%B0%E5%88%86%E6%9D%BF)
<span id='玩家记分项信息字典'></span>
## 玩家记分项信息字典
也叫playerScoreDict。是python事件与接口中获取单个玩家所有的记分准则及其分数
该字典的内容如下
| 关键字 | 数据类型 | 说明 |
| ------ | -------- | ------------------------------------------------------------ |
| playerId | str | 玩家id |
| scoreList | list(scoreDict) | 记分准则及分数列表 |
* 记分板相关释义详见 [官方wiki](https://zh.minecraft.wiki/w/%E8%AE%B0%E5%88%86%E6%9D%BF)
<span id='方块'></span>
## 方块
游戏中场景的基本组成单位长宽高均为1单位长度的立方体网格不同的方块具有不同的材质。
<span id='方块信息字典'></span>
## 方块信息字典
也叫blockDict。是python事件与接口中获取方块信息以及生成方块时使用的dict类型的变量。
该字典的内容如下
| 关键字 | 数据类型 | 说明 |
| ------ | -------- | ------------------------------------------------------------ |
| name | str | 必须设置方块identifier包含命名空间及名称如minecraft:air |
| aux | int | 方块附加值可缺省默认为0 |
* 原版方块的identifier可以查看[官方wiki](https://zh.minecraft.wiki/w/基岩版数据值)
<span id='方块状态'></span>
## 方块状态
一种方块可能存在多种方块状态例如不同颜色的羊毛。一个auxvalue实际上也是对应一种方块状态只是相比于用int来表示的auxvalue方块状态更为可读。
例如橙色羊毛的identifier为minecraft:woolauxvalue为1而用方块状态则表示为
```json
{
"name": "minecraft:wool",
"states": {
"color": "orange"
}
}
```
可以在游戏内使用GetBlockStates将方块状态打印出来。也可以在[Block_states页面](https://learn.microsoft.com/en-us/minecraft/creator/reference/content/blockreference/examples/intrinsicblockstateslist?view=minecraft-bedrock-stable)中查阅。
<span id='方块基本信息字典'></span>
## 方块基本信息字典
也叫blockBasicDict。是python事件与接口中获取方块基本信息时使用的dict类型的变量。
该字典的内容如下
| 关键字 | 数据类型 | 说明 |
| ------ | -------- | ------------------------------------------------------------ |
| blockLightAbsorption | int | 方块透光率, 具体见[官方wiki](https://zh.minecraft.wiki/w/%E4%BA%AE%E5%BA%A6)
| blockLightEmission | int | 方块亮度, 具体见[官方wiki](https://zh.minecraft.wiki/w/%E4%BA%AE%E5%BA%A6)|
| breathability | int | 方块的<a href="../../../mcdocs/1-ModAPI/枚举值/BlockBreathability.html" rel="noopenner"> 可呼吸性 </a>(只有定义了"minecraft:breathability"组件的方块有数据,其余默认为solid的枚举值)(需要开启假日创造者功能)|
| explosionResistance | float | 方块爆炸抗性|
| loot | str | loot table控制掉落物(只有定义了"minecraft:loot"组件的方块有数据,其余默认为空字符串"")|
| mapColor | str | 用十六进制颜色定义该方块在地图上显示的颜色(只有定义了"minecraft:map_color"组件的方块以及部分原版方块有数据,其余默认为"#0")|
| unwalkable | bool | 生物是否可在上方行走,默认为false(只有定义了"<a href="../../../mconline/20-玩法地图教程/第07章使用实验玩法增加自定义内容/课程01.接触新自定义方块.html#minecraft-unwalkable">minecraft:unwalkable</a>"组件的方块有数据,其余默认为false)|
| tier | dict/None | 与挖掘相关的属性,具体见<a href="../../20-玩法开发/15-自定义游戏内容/2-自定义方块/1-JSON组件.html">挖掘属性</a>(只有定义了"netease:tier"组件的方块有数据,其余默认为None)|
| renderLayer | int | 方块渲染时使用的<a href="../../../mcdocs/1-ModAPI/枚举值/RenderLayer.html" rel="noopenner"> 材质 </a>|
| solid | bool | 方块是否为实心方块,影响生物在方块内是否受到窒息伤害|
| pathable | bool | 游戏内AI在进行寻路时方块是否被当作障碍物(只有定义了"netease:pathable"组件的方块有数据,其余默认为false)|
| fireResistant | bool | 方块是否防火(只有定义了"netease:fire_resistant"组件的方块有数据,其余默认为false)|
| creativeCategory | int | 方块所在<a href="../../../mcdocs/1-ModAPI/枚举值/ItemCategory.html" rel="noopenner"> 创造栏目录 </a>|
| destroyTime | float | 方块摧毁时间|
<span id='NBT数据格式'></span>
## NBT数据格式
原版方块实体数据、物品userData使用[NBT格式](https://zh.minecraft.wiki/w/NBT%E6%A0%BC%E5%BC%8F)存取再通过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} |
<span id='抛射物'></span>
## 抛射物
受外力被抛射空中飞行的实体,受重力与摩擦力影响,例如游戏中射出的箭。
<span id='生物群系'></span>
## 生物群系
游戏中生成的世界被划分为一个个不同的自然环境,例如森林、丛林、沙漠和针叶林等,这些都是不同的生物群系。
<span id='模型'></span>
## 骨骼模型
与基岩版原版的基于cube搭建的模型不同是使用3dmax等建模软件搭建的模型。游戏中的大部分生物都可以被替换为骨骼模型进而实现不同的表现效果。
<span id='序列帧'></span>
## 序列帧
通过一帧帧的图片不断进行切换形成的动画效果,在游戏中为一个平面面片。
<span id='粒子'></span>
## 粒子
通过不断发射多个不同大小规模的平面面片形成的特效效果,通过替换贴图材质等可以模拟丰富的表现。
<span id='文字面板'></span>
## 文字面板
本质上为序列帧的文字面板,功能上与文本类似,在游戏中包括伤害飘字,实体头顶名称等内容。
<span id='UI'></span>
## UI
UI界面游戏和用户之间进行交互和信息交换的界面。玩家可以通过触发UI来控制对应的游戏逻辑。