Skip to content

Commit 2d4609b

Browse files
committed
Add Chinese documentation
1 parent 4be7a8b commit 2d4609b

1 file changed

Lines changed: 96 additions & 2 deletions

File tree

README.md

Lines changed: 96 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
**Cryptographic structure seed protection for Paper/Spigot servers.**
44

5+
**[中文文档](#中文文档) | English**
6+
57
SeedShield prevents seed cracking tools (chunkbase, SeedCrackerX, Structurecracker) from determining structure locations by replacing each structure type's placement salt with an irreversible SHA-256 derived value.
68

79
**This is the first Paper/Spigot plugin to provide cryptographic structure seed protection.** Previously, this level of protection was only available through Fabric mods or custom server forks.
@@ -39,7 +41,7 @@ salt = SHA-256(secretKey + ":" + worldSeed + ":" + structureType)[0..4]
3941

4042
## Installation
4143

42-
1. Download `SeedShield-1.0.0.jar` from [Releases](https://github.com/yunluo7/SeedShield/releases)
44+
1. Download `SeedShield-1.0.0.jar` from [Releases](https://github.com/7yunluo/SeedShield/releases)
4345
2. Place it in your server's `plugins/` folder
4446
3. **Delete the region files** of worlds you want to protect (structures must regenerate)
4547
4. Restart the server
@@ -77,7 +79,7 @@ enabled-worlds:
7779
## Building from Source
7880
7981
```bash
80-
git clone https://github.com/yunluo7/SeedShield.git
82+
git clone https://github.com/7yunluo/SeedShield.git
8183
cd SeedShield
8284
mvn package
8385
```
@@ -87,3 +89,95 @@ The JAR will be at `target/SeedShield-1.0.0.jar`.
8789
## License
8890

8991
MIT License
92+
93+
---
94+
95+
# 中文文档
96+
97+
**Paper/Spigot 服务器的加密结构种子保护插件。**
98+
99+
SeedShield 通过将每种结构类型的放置盐值(salt)替换为不可逆的 SHA-256 哈希值,防止种子破解工具(chunkbase、SeedCrackerX、Structurecracker)定位结构位置。
100+
101+
**这是第一个为 Paper/Spigot 提供加密级结构种子保护的插件。** 此前,这种级别的保护只能通过 Fabric mod 或自定义服务端 fork 才能实现。
102+
103+
## 工作原理
104+
105+
Minecraft 通过以下公式确定结构位置:
106+
107+
```
108+
位置 = f(世界种子, 区域坐标, 盐值)
109+
```
110+
111+
每种结构类型的 `盐值(salt)` 是硬编码的整数。chunkbase 等工具已知这些默认盐值,因此知道世界种子 = 知道所有结构位置。
112+
113+
SeedShield 将每个盐值替换为:
114+
115+
```
116+
盐值 = SHA-256(密钥 + ":" + 世界种子 + ":" + 结构类型名)[前4字节]
117+
```
118+
119+
- **结构间隔离**:每种结构类型获得独立的加密盐值。破解一种结构的盐值不会泄露其他结构的信息。
120+
- **密钥保护**:没有 256 位密钥(存储在 `config.yml` 中),盐值无法被逆向。
121+
- **要塞保护**:同时修改 `concentricRingsSeed` 并重新计算环形位置。
122+
123+
## 与现有方案对比
124+
125+
| 方案 | 平台 | 修改结构位置 | 加密保护 | 结构间隔离 | 要塞保护 |
126+
|------|------|:---:|:---:|:---:|:---:|
127+
| **SeedShield** | **Paper/Spigot 插件** | **** | **✅ SHA-256** | **** | **** |
128+
| [SeedGuard](https://github.com/DrexHD/SeedGuard) | Fabric mod || ❌ 随机数 |||
129+
| [SecureSeed](https://github.com/Earthcomputer/SecureSeed) | Fabric mod(1.16.5,已停更) || ✅ BLAKE2 |||
130+
| [AntiSeedCracker](https://github.com/akshualy/AntiSeedCracker) | Spigot 插件 |||||
131+
| Leaf `secure-seed` | 服务端 fork || ✅ 1024位 |||
132+
| spigot.yml 种子配置 | 内置功能 || ❌ 明文整数 || ⚠️ |
133+
134+
## 安装方法
135+
136+
1.[Releases](https://github.com/7yunluo/SeedShield/releases) 下载 `SeedShield-1.0.0.jar`
137+
2. 放入服务器的 `plugins/` 文件夹
138+
3. **删除需要保护的世界的 region 文件**(结构需要重新生成)
139+
4. 重启服务器
140+
5. 编辑 `plugins/SeedShield/config.yml` 配置需要保护的世界
141+
142+
> **注意**:SeedShield 仅影响新生成的区块。已生成区块中的结构位置不会改变。
143+
144+
## 配置文件
145+
146+
```yaml
147+
# 自动生成的 256 位密钥,请勿泄露。
148+
secret-key: "a1b2c3d4..."
149+
150+
# 需要保护的世界列表
151+
enabled-worlds:
152+
- world
153+
- survival
154+
```
155+
156+
## 环境要求
157+
158+
- Paper 1.21+(或其 fork:Leaves、Purpur、Folia 等)
159+
- Java 17+
160+
161+
## 安全性分析
162+
163+
| 攻击方式 | 防护等级 |
164+
|---------|:---:|
165+
| chunkbase / 在线种子地图 | ✅ 完全失效 |
166+
| SeedCrackerX 客户端 mod | ✅ 已防御(建议配合 FakeSeed 使用) |
167+
| 暴力破解单种结构盐值(2³² 次尝试) | ⚠️ 单种结构可能被破解,但每种结构需独立破解 |
168+
| 从盐值反推密钥 | ✅ 不可行(SHA-256 抗原像攻击) |
169+
| 跨结构推导盐值 | ✅ 没有密钥不可能实现 |
170+
171+
## 从源码构建
172+
173+
```bash
174+
git clone https://github.com/7yunluo/SeedShield.git
175+
cd SeedShield
176+
mvn package
177+
```
178+
179+
构建产物位于 `target/SeedShield-1.0.0.jar`
180+
181+
## 许可证
182+
183+
MIT License

0 commit comments

Comments
 (0)