# ArenaRegenerator




# **ArenaRegenerator 插件**
ArenaRegenerator 是一个 Minecraft 服务器插件,用于处理竞技场保存、重置和完整的迷你游戏逻辑,使用 WorldEdit 或 FAWE。
该插件管理和再生 WorldEdit 或 FAWE 定义的竞技场。包括完整的迷你游戏支持(例如,大厅、倒计时、游戏状态、胜利检测)和交互式告示牌以方便使用。
## **目录**
1. [功能](#features)
2. [依赖项](#dependencies)
3. [安装](#installation)
4. [用法](#usage)
* [交互式告示牌](#interactive-signs)
* [命令和权限](#commands-and-permissions)
5. [示例配置](#example-configuration)
6. [数据存储](#data-storage)
7. [从源代码构建](#building-from-source)
8. [支持与贡献](#support--contribution)
## **功能**
* 竞技场管理:
- 将 WorldEdit 选择保存为竞技场。
- 立即清除或再生竞技场。
- 列出、删除和查看已保存竞技场的详细信息。
* 迷你游戏系统:
- **大厅系统**: 玩家可以加入竞技场的大厅并等待足够数量的玩家。
- **倒计时**: 当达到最小玩家数时,可以配置的倒计时开始。
- **游戏开始**: 玩家从大厅移动到游戏生成点,清空物品栏(可配置),并设置游戏模式。
- **游戏结束**: 游戏在设置的持续时间结束后或满足胜利条件(例如,最后一个玩家存活)时结束。玩家被传送到外部,恢复状态(可配置),并且竞技场被重置。
- **旁观者模式**: 游戏期间离开竞技场边界的玩家可以移动到旁观者模式。
- **可配置规则**: 设置最小/最大玩家数、游戏持续时间、大厅倒计时、加入时的物品和游戏模式、允许破坏或放置哪些方块以及每竞技场伤害防护。
* 交互式告示牌:
- 通过 `[RegenArena]` 告示牌点击再生竞技场
- 通过 `[JoinArena]` 告示牌加入迷你游戏竞技场
- 通过 `[LeaveArena]` 告示牌离开迷你游戏竞技场
### /arena save 和 /arena info
### /arena clear 和 /arena regen
### Arena Regen 告示牌
### Join Arena 告示牌
### 迷你游戏逻辑
## **依赖项**
此插件需要你的服务器上安装 **WorldEdit** 或 **FastAsyncWorldEdit (FAWE)**。
* [下载 WorldEdit](https://dev.bukkit.org/projects/worldedit/files)
* [下载 FAWE](https://www.spigotmc.org/resources/fastasyncworldedit.13932/)
**重要提示:** 你的服务器上只能安装这两个插件之一 (WorldEdit 或 FAWE)。同时安装它们可能导致冲突。
## **安装**
1. 从 [releases](https://github.com/Woodstop/ArenaRegenerator/releases) 页面下载最新的 `ArenaRegenerator-X.X.X.jar`(或自行编译)。
2. 下载与你的服务器版本兼容的 **WorldEdit** 或 **FastAsyncWorldEdit (FAWE)**。
3. 将 `ArenaRegenerator-X.X.X.jar` 和你选择的 WorldEdit/FAWE JAR 放入服务器的 plugins/ 文件夹中。
4. 重新启动服务器。
## **用法**
### **交互式告示牌**
创建告示牌以自动再生竞技场、加入迷你游戏或离开迷你游戏。
1. 放置告示牌。
2. 第一行:`[RegenArena]` 或 `[JoinArena]` 或 `[LeaveArena]`。
3. 第二行:你的竞技场名称。
4. 具有适当权限的玩家可以点击使用。
5. 默认 10 秒冷却时间; `arenaregenerator.sign.bypass` 覆盖。
## **命令和权限**
命令使用 `/arena` 前缀。 别名 `/ar` 也可用。 将 `
` 替换为你想要的竞技场名称。
`` 可以是 `lobby`、`exit`、`spectator` 或 `game`。
| **权限节点** | **描述** | **命令** |
|--------------------------------------|----------------------------------------------------------------------|-------------------------------------------------------|
| `arenaregenerator.regen` | 允许使用再生功能 | `/arena regen ` |
| `arenaregenerator.save` | 允许保存竞技场 | `/arena save ` |
| `arenaregenerator.list` | 允许列出已保存的竞技场 | `/arena list` |
| `arenaregenerator.delete` | 允许删除竞技场 | `/arena delete ` |
| `arenaregenerator.clear` | 允许清除竞技场而不删除方案 | `/arena clear ` |
| `arenaregenerator.info` | 允许查看当前竞技场的信息 | `/arena info ` |
| `arenaregenerator.select` | 允许为竞技场选择区域 | `/arena select ` |
| `arenaregenerator.setspawn` | 允许为迷你游戏设置大厅、出口、旁观者和游戏生成点 | `/arena setspawn [spawnName]` |
| `arenaregenerator.delspawn` | 允许删除迷你游戏的生成点 | `/arena delspawn [spawnName]` |
| `arenaregenerator.join` | 允许加入迷你游戏竞技场 | `/arena join ` |
| `arenaregenerator.leave` | 允许离开迷你游戏竞技场 | `/arena leave` |
| `arenaregenerator.reload` | 允许重新加载插件配置 | `/arena reload` |
| `arenaregenerator.sign.create.regen` | 允许玩家创建 `[RegenArena]` 告示牌 | *创建带有标签的告示牌* |
| `arenaregenerator.sign.create.join` | 允许玩家创建 `[JoinArena]` 告示牌 | *创建带有标签的告示牌* |
| `arenaregenerator.sign.create.use` | 允许玩家创建 `[LeaveArena]` 告示牌 | *创建带有标签的告示牌* |
| `arenaregenerator.sign.use.regen` | 允许玩家使用 `[RegenArena]` 告示牌 | *点击 `[RegenArena]` 告示牌* |
| `arenaregenerator.sign.use.join` | 允许玩家使用 `[JoinArena]` 告示牌 | *点击 `[JoinArena]` 告示牌* |
| `arenaregenerator.sign.use.leave` | 允许玩家使用 `[LeaveArena]` 告示牌 | *点击 `[LeaveArena]` 告示牌* |
| `arenaregenerator.sign.bypass` | 允许玩家绕过告示牌冷却时间 | *重复点击告示牌* |
| `arenaregenerator.sign.break` | 允许玩家破坏交互式告示牌 | *破坏告示牌方块* |
## **示例配置**
```
# ArenaRegenerator 插件配置
# 使用 ArenaRegenerator 告示牌(例如,[JoinArena]、[RegenArena])的秒级冷却时间。
# 设置为 -1 以完全禁用冷却时间。
sign-use-cooldown-seconds: -1
# 迷你游戏竞技场配置
# 定义将用作迷你游戏的每个竞技场的设置。
minigames:
# 示例竞技场配置
arena_1:
enabled: false # 是否可以使用此竞技场作为迷你游戏
min-players: 2 # 启动游戏所需的最小玩家数
max-players: 8 # 竞技场允许的最大玩家数
game-duration-seconds: 180 # 游戏持续时间(例如,3 分钟)
lobby-countdown-seconds: 10 # 当达到最小玩家数时开始倒计时
# 玩家状态还原
# 如果为 true,在加入前将保存玩家的物品栏、生命值、食物、游戏模式和确切位置,
# 并在离开/游戏结束时还原。
# 如果定义了出口生成点,则会覆盖玩家的最后一个位置。
restore-player-state-on-exit: true
# 是否在加入时清空玩家的物品栏
clear-inventory-on-join: true
# 以 "MATERIAL_NAME" 或 "MATERIAL_NAME:AMOUNT" 的形式列出要给予加入的物品
give-item-on-join:
- DIAMOND_SHOVEL
- STONE_AXE:1 # 示例:数量为 1 的石斧
- LEATHER_HELMET
- LEATHER_CHESTPLATE
- LEATHER_LEGGINGS
- LEATHER_BOOTS
- COOKED_BEEF:16 # 示例:16 个熟牛排
game-mode-on-join: SURVIVAL # SURVIVAL, ADVENTURE, CREATIVE, SPECTATOR
# 允许玩家在竞技场中破坏的方块列表
breakable-blocks:
- SNOW_BLOCK
- ICE
- GLASS
# 允许玩家在竞技场中放置的方块列表
placeable-blocks:
- COBBLESTONE
- DIRT
- SAND
prevent-damage: true # 阻止对玩家的任何伤害
item-drops: true # 允许方块掉落物品
prevent-item-durability-loss: true # 阻止物品耐久度损失
winner-rewards: # 给赢得游戏的玩家奖励。 使用 %player% 指定获胜玩家。
commands:
- "give %player% diamond 3"
- "eco give %player% 100"
```
## **数据存储**
插件存储:
* 竞技场元数据和生成点:位于 `plugins/ArenaRegenerator/arenas.json`。 此文件包含每个已保存竞技场的原点、世界以及所有配置的大厅、出口、旁观者和命名游戏生成点。
* 方案文件:位于 `plugins/ArenaRegenerator/schematics/`。 这些是每个已保存竞技场的 WorldEdit 方案文件 (.schem)。
* 迷你游戏配置:位于 `plugins/ArenaRegenerator/config.yml`。 此文件定义了哪些已保存竞技场用作迷你游戏(例如,最小/最大玩家数、游戏持续时间、特定游戏规则)。
## **从源代码构建**
要从源代码构建:
1. 克隆存储库。
2. 确保 Java 21 和 JAVA\_HOME 已设置。
3. 使用 Maven 构建 (`mvn clean package`)。
编译后的 JAR 将位于 `target/` 目录中。
## **支持与贡献**
如果遇到问题、有建议或希望贡献,请访问 [GitHub 存储库](https://github.com/Woodstop/ArenaRegenerator)。