搬运一批Bedrock wiki内容,完善翻译

This commit is contained in:
boybook
2025-03-20 00:13:44 +08:00
parent ead7392a76
commit 4896c1a4f2
163 changed files with 33930 additions and 1464 deletions

View File

@@ -100,8 +100,8 @@ class MyClientSystem(ClientSystem):
BOOM就这么简单
::: tip :bulb: 为什么需要这些System
不太理解为什么需要这些System来阅读进一步的解释吧[为什么是System](./2-为什么是System.md)
:::details :bulb: 为什么需要这些System
<!--@include: @/wiki/1-Mod脚本开发/为什么是System.md-->
:::
## 3. 运行你的Mod

View File

@@ -1,6 +1,8 @@
# 深入理解 System 的概念
---
hidden: true
---
## 🧩 为什么需要两个系统System用餐厅来理解
### 🧩 为什么需要两个系统System用餐厅来理解
想象一下游戏就像一家餐厅:
- **服务器系统** = 厨房(决定食物实际内容)
@@ -14,7 +16,7 @@ graph TB
end
```
## 👨‍🍳 服务器系统:游戏的"厨房"
### 👨‍🍳 服务器系统:游戏的"厨房"
- **职责**: 决定游戏中真正发生了什么
- **简单理解**:
@@ -23,7 +25,7 @@ graph TB
- 控制物品掉落
- 存储真实的游戏数据
## 👨‍💼 客户端系统:游戏的"前厅"
### 👨‍💼 客户端系统:游戏的"前厅"
- **职责**: 让玩家看到并互动
- **简单理解**:
@@ -32,7 +34,7 @@ graph TB
- 播放爆炸、火焰等特效
- 展示菜单和界面
## 📮 系统间如何交流:像传纸条一样
### 📮 系统间如何交流:像传纸条一样
当你在游戏中点击方块,发生了什么?
@@ -49,14 +51,14 @@ sequenceDiagram
前厅->>你: 播放挖矿动画和声音,显示物品
```
## ⚠️ 为什么不能混在一起?
### ⚠️ 为什么不能混在一起?
就像餐厅里顾客不能随便进厨房一样:
- ❌ 客户端不能直接修改游戏数据(否则会作弊)
- ❌ 服务器不负责播放声音和动画(它只关心真实数据)
## 🌟 简单例子:击打树木得钻石
### 🌟 简单例子:击打树木得钻石
### 简化理解版
1. **你点击树木**(客户端检测到)
@@ -65,7 +67,7 @@ sequenceDiagram
4. **服务器通知客户端**"请在玩家背包里显示一颗新钻石"
5. **客户端更新画面**:你看到钻石出现在背包里
## 🔑 记住这个简单规则
### 🔑 记住这个简单规则
想象游戏是一部电影:
- **服务器是导演**(决定故事情节)
@@ -73,7 +75,7 @@ sequenceDiagram
记住:**服务器决定发生什么,客户端决定如何展示**
## 💡 初学者提示
### 💡 初学者提示
如果遇到问题,先问自己:
- "这个功能应该由谁负责?是真实游戏规则还是显示效果?"
@@ -82,9 +84,9 @@ sequenceDiagram
学会这种思考方式你的Mod就能正确运行啦
## :ribbon: 那么总结一下吧!
### :ribbon: 那么总结一下吧!
### 核心架构:客户端-服务器分离
#### 核心架构:客户端-服务器分离
```mermaid
graph TB
@@ -98,9 +100,9 @@ graph TB
end
```
### 双系统模型的必要性
#### 双系统模型的必要性
#### 服务器系统 (ServerSystem)
##### 服务器系统 (ServerSystem)
- **职责**: 维护游戏的"真实状态"
- **具体功能**:
- 处理游戏核心逻辑(如战斗计算、物品掉落)
@@ -108,7 +110,7 @@ graph TB
- 执行世界生成与物理规则
- **拥有数据的最终决定权**
#### 客户端系统 (ClientSystem)
##### 客户端系统 (ClientSystem)
- **职责**: 处理玩家的直接体验
- **具体功能**:
- 渲染游戏画面与UI界面
@@ -116,7 +118,7 @@ graph TB
- 播放音效与粒子效果
- 进行预测性渲染(平滑过渡)
### 系统间通信的关键:事件机制
#### 系统间通信的关键:事件机制
```mermaid
sequenceDiagram
@@ -131,12 +133,12 @@ sequenceDiagram
Client->>Player: 显示视觉反馈
```
#### 事件驱动设计的优势
##### 事件驱动设计的优势
- **松耦合**: 系统间无需直接相互调用
- **可扩展**: 多个系统可响应同一事件
- **清晰职责**: 服务端决定结果,客户端呈现效果
#### 实例:击打方块流程
##### 实例:击打方块流程
1. **客户端**: 检测到玩家点击方块,发送`BlockUseEvent`
2. **服务端**:
- 接收到事件,判断方块是否可被破坏
@@ -145,20 +147,20 @@ sequenceDiagram
- 播放方块破坏动画和音效
- 显示掉落物
### 常见问题与最佳实践
#### 常见问题与最佳实践
#### 避免的错误模式
##### 避免的错误模式
- ❌ 在客户端直接修改游戏状态
- ❌ 在服务端处理UI渲染逻辑
- ❌ 遗漏事件监听导致功能不同步
#### 最佳实践
##### 最佳实践
- ✅ 服务端验证所有游戏逻辑(防作弊)
- ✅ 合理使用自定义事件进行系统间通信
- ✅ 保持客户端代码专注于视觉体验优化
- ✅ 在事件参数中携带足够的上下文信息
### 跨系统通信示例
#### 跨系统通信示例
```python
# 服务端发送自定义事件到客户端