Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
211 changes: 211 additions & 0 deletions src/docs/core-concepts/blueprints/zh-cn.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,211 @@
---
title: 蓝图
description: 学习蓝图与其配置
---

# 蓝图

## 蓝图是什么?

**蓝图**(`.ajblueprint`)是 Animated Java 的 BlockBench 项目文件。它包含 Animated Java 构建绑定体所需的一切:模型、材质、动画、[变种](/docs/core-concepts/variants)、[材质槽位](/docs/core-concepts/texture-slots)与导出配置。

当蓝图[导出](/docs/core-concepts/exporting)时,Animated Java 将其转变为 **资源包** (模型与材质)与 **数据包** (在游戏内生成绑定体、播放动画并控制绑定体的命令)。

打开旧版本的蓝图时 Animated Java 将自动更新其版本。 `0.x` 版本的项目(`.ajmodel` 类型文件)也可以转换,见 [历史发布版本](/docs/resources/legacy-releases)。

---

## 蓝图设置

在菜单栏中点击 **Animated Java <i class="minecraft-right-arrow"></i> Blueprint Settings** 打开蓝图设置。设置界面被分为多个页面,有些界面仅在特定 [目标环境](#目标环境) 中出现。切换界面或关闭都会保存修改。

### 常规

- #### 目标环境

你的模型在游戏中将如何运行:

- **Datapack** :导出一个资源包与数据包。这是默认选项,也是这些文档大部分描述的情形。
- **Plugin** :导出单独的 JSON 文件供服务器插件读取。数据包、资源包、绑定体与函数的界面都由 [插件](#插件) 页面替换。见 [插件导出](/docs/core-concepts/exporting#plugin-exports)。

- #### 蓝图名

蓝图的名字。同时也作为文件名。

- #### 蓝图 ID

一个命名空间的 ID (例如 `my_pack:my_rig`) 标识了该蓝图。所有生成的函数、标签、存储与模型都将存于此 ID 下。

:::info[例子]
`my_pack:my_rig` 会将函数放置于 `data/my_pack/function/my_rig/`,所以你需要使用 `function my_pack:my_rig/summon` 生成它。
:::

:::tip[提示]
给每个蓝图设置单独的 ID。两个同 ID 的蓝图导出时会互相覆盖。
:::

:::danger[限制]

- 必须包含命名空间与路径,例如 `namespace:path`。
- 命名空间只允许使用小写字母、数字与下划线。路径还可以使用 `/`。
- 不能使用 `minecraft` 命名空间。
- 不能使用 `animated_java:global`。

:::

- #### 目标 Minecraft 版本

需导出的 Minecraft 版本,例如 `26.2` (默认) 或 `1.20.4`。Animated Java 支持 **1.20.4** 及以上。

这将决定包如何生成与你可以使用哪些特性。例如:

- [方块旋转](/docs/nodes/cubes#rotation-limitations) 在 1.21.11 版本前受限制。
- [材质槽位](/docs/core-concepts/texture-slots) 命令、材质槽位帧与 [物品模型属性](/docs/configs/item-model-properties) 需要 1.21.4 及以上版本。
- [使用实体堆叠](#使用实体堆叠) 只允许在 1.21.4 或更高版本关闭。

修改后需重导出。

- #### 材质尺寸

UV 编辑器的分辨率。它需要与你使用的最大的材质尺寸相同且是 2 的整数次幂,否则 Animated Java 将会发出警告。

### 资源包

仅在目标环境选为 **Datapack** 时出现。

- #### 资源包导出格式

- **Folder**:将生成的文件放入已有的资源包文件夹。当项目正在制作时使用最佳。
- **Zip**:将生成的文件打包为单独的 `.zip` 资源包。
- **None**:不生成资源包。只在蓝图不包含方块时可用,例如仅使用 [物品展示](/docs/nodes/item-displays)、[方块展示](/docs/nodes/block-displays) 与 [文本展示](/docs/nodes/text-displays) 的模型。

- #### 资源包文件夹 / 压缩包

写入资源包的位置。文件夹必须包含 `pack.mcmeta` 文件。压缩包路径必须指向 `.zip` 类型文件。

- #### 展示物品

为了展示绑定体骨骼而被覆盖模型的物品。只在 1.21.2 版本以下可见。新版本使用 `minecraft:item_model` 物品组件代替,所以不需要覆盖物品。

需选择一个模型的父级为 `minecraft:item/generated` 的物品,例如 `minecraft:white_dye` (默认)。不同的蓝图可以共用一个展示物品。

### 数据包

仅在目标环境选为 **Datapack** 时出现。

- #### 数据包导出格式

**Folder**、**Zip** 或 **None**,与 [资源包导出格式](#资源包导出格式) 相同。

- #### 数据包文件夹 / 压缩包

写入数据包的位置。文件夹必须包含 `pack.mcmeta` 文件。压缩包路径必须指向 `.zip` 类型文件。

- #### 动画系统

决定动画如何存储:

- **Functions** (默认):为每一帧写一个函数。游戏内运行很快,但是会生成很多文件。
- **Storage** :在 storage 中存储帧数据。生成的文件很少,但是运行稍慢。

### 绑定体

仅在目标环境选为 **Datapack** 且数据包已经导出过之后才出现。

- #### 自定义绑定体实体标签

额外的标签,使用逗号分隔。生成绑定体时,它会被添加到该绑定体中的 **每一个** 实体。

:::note[例子]
`my_pack.boss, my_pack.hostile`
:::

- #### 插值时长

Minecraft 在动画帧之间平滑移动展示实体所需的刻数(即 NBT 标签 `interpolation_duration`)。更高的值看起来更平滑,但是反应更慢。默认为 `1`。

- #### 传送时长

Minecraft 传送绑定体的实体时,平滑移动它们所需的刻数(即 NBT 标签 `teleport_duration`)。 Minecraft 最高允许值为 `59`,默认为 `1`。

- #### 阴影半径

根实体的阴影的半径。设为 `0`(默认)以禁用。

- #### 阴影强度

根实体的阴影的黑暗程度。只在阴影半径大于 `0` 时有效。默认为 `1`。

- #### 自动更新绑定体方位

当 **开启**(默认)时,绑定体每刻都会跟随其根实体:骨骼朝向跟随根实体,悬浮实体(定位器实体,摄像机与交互实体)移动到它们在绑定体中的位置。你可以通过传送根实体移动整个绑定体。开启会消耗较高性能。

当 **关闭** 时,绑定体只会在你使用 [`move`](/docs/function-api/utilities#move) 命令时移动。对于不需要每刻移动的绑定体建议关闭。

- #### 使用实体堆叠

当 **开启**(默认)时,每个骨骼实体都会骑乘根实体。你可以使用 `execute on passengers` 选中它们,但是它们的旋转角度会不太精确。

当 **关闭** 时,骨骼实体会是相互独立的实体,需要每刻传送到对应位置。骨骼的旋转角度会非常精确,所以绑定体移动时会很平滑。使用 [`as_node`](/docs/function-api/utilities#as_node) 来将其作为骨骼移动。

关闭该选项需要 Minecraft 1.21.4 及以上版本,旧版本始终使用堆叠。

### 事件函数

仅在目标环境选为 **Datapack** 才出现。

在绑定体生命周期内特定情况下运行的函数。其运行时的位置与执行实体为根实体。支持 [MC-Build](https://mcbuild.dev) 语法。 编写时格式与 `.mcfunction` 文件相同。

- #### 生成函数

在 [`summon`](/docs/function-api/summon) 函数执行的结尾,所有节点都准备好之后调用。

- #### 移除函数

在 [`remove/this`](/docs/function-api/remove#removethis) 函数执行的开头,绑定体的实体还未移除前调用。

- #### 刻前函数

每刻都会调用。在 Animated Java 自己的逻辑运行 **之前** 调用。

- #### 刻后函数

每刻都会调用。在 Animated Java 自己的逻辑运行 **之后** 调用。

### 插件

仅在目标环境选为 **Plugin** 才出现。

- #### JSON 文件

导出 JSON 文件的位置。

- #### 烘焙动画

开启时,每一帧动画都会提前计算并存储在 JSON 文件。关闭时,只有关键帧会存储在 JSON 文件,插件需要自己插值。 有些插件要求使用烘焙动画。

### 预览

添加外部的资源包到编辑器,可以在蓝图预览时显示其自定义字体、物品、方块模型与材质。预览包只影响编辑器:不会被导出,也不会替换蓝图自身的资源包。

- #### 预览资源包

一个资源包列表,每个资源包需要为 `.zip` 或者含 `pack.mcmeta` 文件。在上方的资源包会覆盖下方的资源包,可以使用箭头调整位置。

在修改包文件后需点击 **重加载预览** 以更新。

### 其它

渲染盒是 Minecraft 用来决定你的绑定体是否需要在屏幕内渲染的包围盒。如果它太小,根实体离开视线时,绑定体的某些部分可能会消失。

- #### 预览渲染盒

在预览界面显示渲染盒。

- #### 自动匹配渲染盒

为你的模型自动选择合适的渲染盒,推荐开启。

- #### 渲染盒尺寸

渲染盒的尺寸大小,仅在关闭自动匹配渲染盒时可用。
47 changes: 47 additions & 0 deletions src/docs/getting-started/installing/zh-cn.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
title: 安装 Animated Java
description: 学习如何在 Blockbench 安装 Animated Java 插件。
---

# 安装 Animated Java

## 你需要的软件

- [Blockbench](https://blockbench.net/) 5.1.4 或更高版本。
- [Minecraft: Java Edition](https://www.minecraft.net/en-us/download) 1.20.4 或更高版本。

## 从插件管理器中获取

1. 启动 Blockbench 并找到 **文件 <i class="minecraft-right-arrow"></i> 插件…** 打开插件管理器。

![在 Blockbench 打开插件管理器](/images/docs/getting-started/installing/step1.png)

2. 搜索 "Animated Java"。

![在插件管理器搜索 Animated Java](/images/docs/getting-started/installing/step2.png)

3. 点击 **安装**。

## 从 URL 中获取

直接从 GitHub 安装最新发布版本:

1. 打开插件管理器(**文件 <i class="minecraft-right-arrow"></i> 插件…**)。
2. 点击 **从 URL 加载插件**。
3. 粘贴这个 URL:

```
https://github.com/Animated-Java/animated-java/releases/latest/download/animated_java.js
```

## 从文件获取

如果你下载了 `animated_java.js`:

1. 打开插件管理器(**文件 <i class="minecraft-right-arrow"></i> 插件…**)。
2. 点击 **从文件加载插件**。
3. 选择下载的 `animated_java.js` 文件。

:::warning[不兼容的插件]
有些 BlockBench 插件与 Animated Java 不兼容。如果你加载了这类插件,Animated Java 将弹出窗口列出它们,并提供禁用它们的按钮。
:::
123 changes: 123 additions & 0 deletions src/docs/getting-started/your-first-blueprint/zh-cn.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
---
title: 你的第一个蓝图
description: 学习如何创建你的第一个蓝图并将它导出到 Minecraft。
---

# 你的第一个蓝图

在这篇指南中我们将创建、导出并在 Minecraft 中生成一个旋转方块,这包含完整的 Animated Java 的工作流程。

## 前提条件

- 已经安装了 Animated Java。若没有安装请前往[安装 Animated Java](/docs/getting-started/installing)。
- 一个 Minecraft 存档,且其 `datapacks` 文件夹中需要准备一个空的数据包。Minecraft 本体的 `resourcepacks` 文件夹中也需要准备一个空的资源包。它们都需要 `pack.mcmeta` 文件。

---

## 第一部分:创建蓝图

1. **创建新蓝图**

前往 **文件 <i class="minecraft-right-arrow"></i> 新建 <i class="minecraft-right-arrow"></i> Blueprint**,或在开始界面选择 **Blueprint**。

2. **添加一个分组**

在大纲面板点击 **添加分组** 并重命名分组为 `cube_bone`。分组是绑定体的骨骼,它们决定哪些部分可以做动画。

3. **添加一个方块**

点击 **添加块** 并在大纲中将该块拖到 `cube_bone` 上。你可以随意调整其位置与大小。

4. **添加纹理**

在 **纹理** 面板创建或导入纹理,并将其应用到方块的每个面。

---

## 第二部分:配置蓝图

Animated Java 需要知道在什么地方导出包。

1. **打开 Blueprint 设置**

在菜单栏中点击 **Animated Java <i class="minecraft-right-arrow"></i> Blueprint Settings**。

2. **设定 Blueprint ID**

在 **General** 界面设定一个独一无二的 **Blueprint ID**,比如`my_pack:spinning_cube`。Animated Java 生成的所有实体与函数都将依赖此ID。

3. **设定 Minecraft 版本**

将 **Minecraft 版本**设为需要的版本,比如 `26.2`。

4. **选择资源包位置**

在 **Resource Pack** 页面,选择 format 为 **Folder** ,并将目录位置设为你的资源包文件夹(包含 `pack.mcmeta` 的文件夹)。

5. **选择数据包位置**

在 **Data Pack** 页面,选择 format 为 **Folder** ,并将目录位置设为你的存档中 `datapacks` 文件夹下的数据包文件夹。

6. **关闭界面**

切换或关闭设置界面时设置将自动保存。

---

## 第三部分:让它动起来

1. **切换到动画模式**

点击 Blockbench 右上角的**动画模式**。

2. **创建一个动画**

在**动画**面板点击 **+** 创建动画,将其命名为 `spin` 并将 **Loop Mode** 设为 **Loop**。

3. **添加旋转关键帧**

选中 `cube_bone`。在第 `0` 秒添加一个旋转关键帧,并将 Y 设为 `0`。将时间线移至后方任意时间点,添加旋转关键帧并将 Y 设为 `360`。

---

## 第四部分:导出与测试

1. **导出**

点击 **Animated Java <i class="minecraft-right-arrow"></i> Export (Debug)**,或按下 `Ctrl + E`, Animated Java 会将模型与材质导出到资源包;将函数导出到数据包。

2. **加载包**

在 Minecraft 中加载资源包(可以按下 `F3 + T` 重加载),然后运行命令 `/reload`。

3. **生成绑定体**

运行这个函数可以在玩家当前的位置生成朝向南方的方块:

```mcfunction
execute positioned ~ ~ ~ rotated 0 0 run function my_pack:spinning_cube/summon {args: {}}
```

:::note[说明]
将 `my_pack:spinning_cube` 替换为你自己的 Blueprint ID。
:::

4. **播放动画**

```mcfunction
execute as @e[tag=my_pack.spinning_cube.root] run function my_pack:spinning_cube/animations/spin/play
```

5. **移除绑定体**

```mcfunction
execute as @e[tag=my_pack.spinning_cube.root] run function my_pack:spinning_cube/remove/this
```

---

## 后续步骤

- [蓝图](/docs/core-concepts/blueprints) 包含所有蓝图设置。
- [变种](/docs/core-concepts/variants) 与 [材质槽位](/docs/core-concepts/texture-slots) 让一个绑定体显示不同外观。
- [函数 API](/docs/function-api/summon) 列出了你可以在自己的数据包中调用的所有函数。
Loading