====== 必要的 Minecraft 概念 ====== 本节旨在为初学者提供最基本的概述,涵盖在您开始第一个模组之前所需的基本概念和定义,作为一些背景知识。一些概念与游戏中可见的元素有关,另一些概念与修改时经常使用的文件或类有关。理解这些术语和概念有望使您更容易理解 wiki 的其他部分。 ^ 概念 ^ 英文名 ^ 描述 ^ | 物品 | Item | 一些你可以拿在手上的东西,同样也可以丢在地上,放在物品栏中,或存储在容器中。物品可以是一些工具,或者是手中还未放置的方块。 | | 方块 | Block | Minecraft 中建造一切的关键元素。很多方块都是立方体(cubes),但大多数你在放置的东西其实都是作为方块实现的,例如熔炉。有些方块看上去并不像立方体,例如按钮、栅栏和门,但仍然视作方块。需要注意:在代码中,方块应该视为一类方块的定义,而不是你在游戏中看见的一个单个方块。 | | 方块状态 | Block states | 方块状态(有时简称为 state)是特定的由方块及其属性(properties)(例如方向、含水、生长阶段)组成的实例。方块状态在游玩时通常直接视作方块。每一个方块状态都有自己的 3D 模型。| | 方块物品 | Block item | 方块的物品形式,这样你可以拿在手里、堆叠或者存储。 | | 实体 | Entity | 世界中的动态对象,通常可以移动。例如,'''' 表示物品,当然还有 ''''。一些特定的东西有时也实现为实体,例如投射物、物品展示框和画。| | 生物实体 | Living entity | 实体的子类,是活的,并且可以在世界里移动,例如玩家和实体(牛、僵尸、蝙蝠等)。| | 方块实体 | Block entity | 为方块存储额外数据,例如容器物品或者合成进程。方块实体可以为方块提供额外的逻辑,例如每刻执行时。不是所有的方块都有方块实体——只有实现了 '''' 的才会。“方块实体”和“实体”**不是**同一概念!| | 方块/物品模型 | Block/item model | 模型是描述性数据的集,用来标线一个方块或者物品的外观。例如,一个铁块或者熔炉将会包含描述其形状和每个面的大小的信息,以及每个面应该从哪里查找纹理(图像)以基于独特外观的信息。大多数都是作为 JSON 文件描述的,但也可以通过 Java 代码生成。 | 实体模型 | Entity model | 实体也有自己的 3D 模型,通常是直接在代码中使用 '''' 的实例定义的。| | 纹理(旧称材质) | Texture | 纹理是图形图像,用来给面提供独特的外观。纹理通常是为方块或物品以 16×16 像素的 .PNG 文件实现的,对于实体和 GUI 元素则可以是更大的图像。| | 渲染器 | Renderer | 虽然大多数模组会利用方块状态和模型的 JSON 文件以及 .PNG 的纹理来为方块和物品提供完整外观,并依赖默认的渲染机制以在世界中显示,就像你预期的那样,但有时候你也需要更加复杂的行为。这些情况下,你需要创建自定义的渲染器以实现所需要的结果。实体都是使用了渲染器。 | | NBT | NBT | NBT 是 Minecraft 使用的数据存储文件格式。你在你的实体或方块类中就会使用 NBT 存储和加载方法,以确保数据会在世界存档中正确保存和加载。这似乎比较复杂,但是覆盖数个方法并在代码中添加几行并不复杂。在“添加方块实体”那一节中将会详细描述。| | 端 | Sides | Minecraft 设计为两个分离的部分:客户端(client)和服务器(server)。当你在服务器中游玩时,这分得很清楚,但是在你自己的电脑上游玩时,服务器这部分依然存在。你会经常看到一些被覆盖的方法被客户端和服务器两端同时调用,因此需要区分你对应的哪一端以进行检测。最简单常用的方法就是检测布尔值方法 ''world.()''。参见[[side|此链接]]以了解更详细的信息。| | 数据同步 | Data sync | 尽管你可以在方块实体中存储方块数据,但这些数据并不会在客户端和服务器中自动传输。你需要使用几行代码手动启用它,参见[[blockentity]]。| 这是“必要的 Minecraft 概念”页面的早期版本。还有很多概念都需要添加。对于初学者,如果您遇到没有描述且让您困惑的概念,请将其添加到此页(添加到[[tutorial:concepts|英文版页面]])。对于专家,请纠正您发现的任何错误,并尽可能保持简洁易懂,以确保没接触过 Minecraft 和 Fabric 模组编写的人也能够理解。