# BetterView

[](https://github.com/MinceraftMC/BetterView)
[](https://opensource.org/license/gpl-v3/)
[](https://discord.gg/zC8xjtSPKC)
## 描述
BetterView 是一个针对 Minecraft 服务器的高性能 Paper 插件和 Fabric 模组。它在不牺牲服务器性能的情况下扩展了正常的视野距离,使用异步玩家处理、直接从磁盘读取区块以及缓存区块数据。
## 功能
- 在网络线程上进行异步快速玩家滴答
- 直接从磁盘读取区块,无需加载
- 优化区块状态跟踪和区块迭代
- 可配置的区块数据缓存,以便快速访问
- 可配置的区块发送和区块生成的限制
- 每个维度的配置选项
- 支持集成或专用 Fabric 服务器
- 轻量级的透视X射线防护
示例:视野距离为 127 个区块的加载速度
下面的截图是在 `0 2250 0` 地点,末地维度,视野距离为 127 个区块(禁用雾气)时拍摄的。在一台 AMD Ryzen 7 5800X 上,所有可见区块在大约 12 秒后传递到客户端,并且在冷缓存后大约需要 9 秒钟才能传递到客户端。
### 支持的软件
| Minecraft 版本 | Paper | Fabric |
|-------------------|-------|--------|
| 1.21.7 | ✅ | ✅ |
| 1.21.6 | ✅ | ✅ |
| 1.21.5 | ✅ | ✅ |
| 1.21.4 | ✅ | ✅ |
| 1.21.3 | ✅ | ✅ |
| 1.21.1 | ✅ | ✅ |
在 Fabric 上,此模组依赖于 [Moonrise](https://github.com/Tuinity/Moonrise) 来正常工作。
## 使用方法
在 Paper 服务器上,将 jar 文件放入您的 `plugins` 目录并重启您的服务器。在 Fabric 服务器/客户端上,将 jar 文件放入您的 `mods` 目录并重启您的服务器或客户端。默认情况下,BetterView 将为每个维度配置视野距离为 32 个区块。
### 配置
首次启动时,该插件将自动创建配置文件。如果使用 Paper,则会在 `plugins/BetterView/config.yml` 中创建;如果使用 Fabric,则会在您的世界目录(例如 `world` 用于专用服务器)中创建名为 `betterview.yml` 的文件。 在其中,您可以配置以下选项:
- `config-version`: 不要修改此项
- `integrated-server-render-distance`: 仅适用于单人世界,允许替换集成服务器的渲染距离,否则 BetterView 不会生效(默认:`-1`,禁用)
- `global`:
- `enabled`: 是否启用或禁用整个插件/模组(默认:`true`)
- `chunk-generation-limit`: 在一个滴答中全局可以生成多少新的区块(默认:`3`)
- `chunk-send-limit`: 在一个滴答中向玩家发送的最大区块数量(默认:`3`)
- `dimensions`:
- `<维度>` (例如 `minecraft:overworld`):
- `enabled`: 是否启用或禁用此维度中的插件/模组(默认:`true`)
- `chunk-generation-limit`: 在一个滴答中为该层可以生成多少个新区块(默认:`2`)
- `chunk-queue-size`: 玩家一次可以排队多少区块(默认:`16`)
- `view-distance`: 此维度中的最大扩展视野距离(默认:`32`)
- `cache-duration`: 扩展区块应保留在内存中的缓存持续时间(默认:`PT5M`,5 分钟)
- `anti-xray`:
- `enabled`: 是否启用或禁用此世界的透视 X 射线防护(默认:`false`)
- `engine-mode`: 透视 X 射线的引擎模式,可以是 `HIDE`、`OBFUSCATE` 或 `OBFUSCATE_LAYER` (默认:`HIDE`)
- `hidden-blocks`: 要隐藏/模糊化的区块列表(默认:所有矿物和所有维度基区块)
随时调整区块生成和区块发送限制,以获得最佳的服务器设置体验。
在使用透视 X 射线防护时,请注意,此插件实现了透视 X 射线防护的轻量级版本,它不会检查区块是否暴露在空气中。这意味着除了 `HIDE` 以外的所有引擎模式可能看起来不太好。
请根据您使用的服务器用途调整缓存时长;例如,对于静态大厅服务器,可以使用更长的缓存时长,而不是对于动态 SMP 服务器。如果缓存时长过长,在重新加入服务器后,区块将显示过时的内容。
## 构建
1. 克隆项目 (`git clone https://github.com/MinceraftMC/BetterView.git`)
2. 进入克隆的目录 (`cd BetterView`)
3. 构建 jar 文件 (`./gradlew build` 在 Linux/MacOS 上,Windows 上只是 `gradlew build`)
jar 文件可以在 `build` → `libs` 目录中找到。
### 贡献
如果您想为 BetterView 做出贡献,请随意分叉该仓库并创建拉取请求。 请确保遵循项目中使用的代码风格和约定。 如果您有任何问题或需要帮助,请随时在我们的 [Discord](https://discord.gg/zC8xjtSPKC) 上提问。
您可以通过运行 `./gradlew :paper:runServer` 或 `./gradlew :fabric:prodServer`/`./gradlew :fabric:prodClient` 分别来测试您的更改。 这将启动一个本地服务器,自动安装编译好的插件或模组,以便在 IDE 中进行调试。