- 支持版本
- 1.8.X
- 1.9.X
- 1.10.X
- 1.11.X
- 1.12.X
- 1.13.X
- 1.14.X
- 1.15.X
- 1.16.X
- 1.17.X
- 1.18.X
- 1.19.X
- 1.20.X
- 1.21.X
- 26.X
# HangOccupied - 占领据点插件
  -orange)
> **Hang系列插件 - 进入据点倒计时占领、击杀抢点争夺奖励的插件**
---
##
插件简介
**HangOccupied** 是一款轻量级的**占领据点**玩法插件。管理员用钻石斧头圈选出多个据点区域,玩家走进据点后自动开始占领倒计时,倒计时走完即可获得奖励并全服公告。
据点是**要抢的**。开启人数上限后名额有限,满了的据点新玩家进不去,只能把里面的人**击杀**掉腾出位置。占领者死亡、下线或离开据点,据点立刻开放,里面的其他玩家会自动接管占领。
基于 1.8 API 编译,所有现代 API 走反射调用并以**能力探测**判定版本,**一个 jar 通吃 1.8 到最新版**(含 1.20.5+ 无版本号包名与 26.x 新命名方案)。
>
适用于生存服、RPG 服、PVP 服等需要据点争夺玩法的服务器
---
##
玩法说明
1. 管理员手持**钻石斧头**,左键选一角、右键选对角,`/outpost create <名称>` 创建据点
2. 玩家走进据点范围,**自动开始占领倒计时**
3. 占领期间据点内**所有玩家**都能看到 BossBar 进度条与 Title 倒计时
4. 占领者**离开据点、死亡或下线**,占领立即中断,据点内其他玩家自动接管
5. 倒计时结束**占领成功**,发放奖励并全服公告
6. 据点进入**冷却期**,冷却结束发送全服刷新提示,可重新占领
开启人数上限后,名额满了的据点会向新玩家发送「据点已满」提示,该玩家既无法参与占领、也拿不到参与奖励,必须等里面的人**死亡 / 下线 / 离开**才能补位。
---
##
功能特性
### 核心玩法
-
**自由创建据点** — 钻石斧头圈选立方体区域,支持三维占领,可要求潜行才触发选点
-
**占领倒计时** — 进入据点自动开始,时长与提示秒数均可自定义
-
**人数上限** — 限制据点内同时参与的人数,杜绝无限人挂机白拿参与奖励
-
**击杀抢点** — 名额满了只能靠击杀腾位,死亡/下线/离开立即释放名额
-
**占领接管** — 占领者失效后据点内其他玩家自动接管,并有定时兜底检查
-
**冷却系统** — 占领成功后进入冷却,**冷却状态重启后保留**
### 奖励系统
-
**两种奖励模式** — `single` 随机抽一条命令 / `group` 随机抽一组并执行整组命令
-
**参与奖励** — 据点内其他玩家也能获奖,同样支持 single / group 两种模式
-
**每据点独立奖励** — 可在 `outposts.yml` 给单个据点配置专属奖励,不写则回退全局
### 界面与提示
-
**BossBar 进度条** — 据点内**全员可见**,随剩余时间变色变样式;1.9+ 用原生 API,1.8 用凋灵实体模拟
-
**Title 大字提示** — 占领状态、倒计时、据点已满等全部走 Title
-
**全服公告** — 占领成功、据点被重新占领、冷却刷新等关键事件全服通知
### 管理与兼容
-
**高度可配置** — 所有消息、Title、BossBar 样式、奖励、上限均可自定义
-
**细分权限** — 7 个 `occupied.command.*` 节点,可精细授权
-
**Tab 补全** — 子命令与据点名自动补全
-
**删除保护** — 删除据点需二次确认,并自动备份数据文件
-
**热重载** — `/outpost reload` 热重载配置
-
**全版本兼容** — 1.8 ~ 最新版,一个 jar 通吃
---
##
指令列表
| 指令 | 说明 | 权限 |
|------|------|------|
| `/outpost select` | 提示如何选择据点区域 | `occupied.command.select` |
| `/outpost create <名称>` | 创建据点 | `occupied.command.create` |
| `/outpost delete <名称>` | 删除据点(需二次确认) | `occupied.command.delete` |
| `/outpost list` | 查看所有据点列表及状态 | `occupied.command.list` |
| `/outpost info <名称>` | 查看据点详情(生效上限、奖励来源等) | `occupied.command.info` |
| `/outpost tp <名称>` | 传送到据点中心 | `occupied.command.tp` |
| `/outpost reload` | 重载配置文件 | `occupied.command.reload` |
>
命令别名:`/hop`、`/据点`
>
> 据点名支持字母、数字、下划线、连字符和中文,长度 1-32 字符,查重忽略大小写。
---
##
权限节点
| 权限 | 说明 | 默认 |
|------|------|------|
| `occupied.admin` | 管理总权限(含下方所有子权限) | OP |
| `occupied.command.create` | 创建据点(钻石斧头选点也用此权限) | OP |
| `occupied.command.delete` | 删除据点 | OP |
| `occupied.command.list` | 查看据点列表 | OP |
| `occupied.command.info` | 查看据点详情 | OP |
| `occupied.command.tp` | 传送到据点中心 | OP |
| `occupied.command.select` | 选择据点区域 | OP |
| `occupied.command.reload` | 重载配置 | OP |
| `occupied.use` | 占领据点 | 所有玩家 |
可只授予单个 `occupied.command.*` 做精细控制,或授予 `occupied.admin` 一次性拿全部管理权限。
---
##
配置文件
### 据点与人数上限
```yaml
outpost:
occupy-time: 30 # 占领时间(秒)
cooldown-time: 300 # 冷却时间(秒)
countdown-alerts: [15, 10, 5, 3, 2, 1] # 倒计时提示秒数
selection-require-sneak: true # 是否需潜行才触发钻石斧选点
# 据点人数上限(全局默认值)
# 超出上限后,新进入的玩家无法参与占领,也拿不到参与奖励
# 需击杀名额内的玩家才能腾出位置(死亡/下线/离开均会立即释放名额)
max-players:
enabled: false # 默认关闭,改为 true 开启
limit: 5 # 每个据点最多同时参与的玩家数
```
### 奖励设置
通过 `rewards.mode` 切换两种模式:
- `single` — 从 `commands` 列表随机抽 **一条** 命令执行
- `group` — 从 `groups` 里随机抽 **一组**,执行该组内的 **全部** 命令(适合一次发一整套)
```yaml
rewards:
mode: single # single 或 group
commands: # [single 模式] 随机抽一条
- "give %player% diamond 5"
- "eco give %player% 1000"
groups: # [group 模式] 抽中一组执行整组
group1:
commands:
- "give %player% diamond 5"
- "give %player% golden_apple 2"
- "eco give %player% 1000"
participate: # 参与奖励:占领成功时据点内其他玩家也获奖
enabled: false
mode: single # 同样支持 single / group
commands:
- "give %player% gold_ingot 3"
```
> `%player%` 会被替换为玩家名。
### 每据点独立配置(写在 `outposts.yml`)
人数上限和奖励都能按据点单独覆盖,不写就自动回退全局:
```yaml
据点名A:
world: world
pos1: {...}
pos2: {...}
# 只给这个据点设上限
max-players:
enabled: true # 只写 limit 不写 enabled 时,开关沿用全局
limit: 10
# 只给这个据点设奖励
rewards:
mode: group
groups:
group1:
commands:
- "give %player% netherite_ingot 1"
participate:
enabled: true
mode: single
commands:
- "give %player% diamond 2"
```
改完 `/outpost reload` 生效,`/outpost info <据点名>` 可查看**实际生效**的上限与奖励来源。
### BossBar 设置
```yaml
bossbar:
enabled: true
countdown: # 每一秒可配置独立文字/颜色/样式
30:
message: "&d&l%player% 正在占领据点 剩余 %time% 秒"
style: SOLID
color: RED
refresh-notify: # 据点冷却结束的全服提示
message: "&a&l据点 %outpost% 已刷新,可以重新占领!"
style: SOLID
color: GREEN
duration: 5
```
- 颜色:`PINK` `BLUE` `RED` `GREEN` `YELLOW` `PURPLE` `WHITE`
- 样式:`SOLID` `SEGMENTED_6` `SEGMENTED_10` `SEGMENTED_12` `SEGMENTED_20`
- 占位符:`%player%` 占领者名字,`%time%` 剩余秒数,`%outpost%` 据点名
### 消息设置
所有提示均可在 `messages` 段自定义,支持 `&` 颜色代码。包含据点已满提示:
```yaml
messages:
outpost-full:
title: "&c据点已满!"
subtitle: "&7当前人数: &e%count%&7/&e%max%"
```
---
  -orange)
> **Hang系列插件 - 进入据点倒计时占领、击杀抢点争夺奖励的插件**
---
##
**HangOccupied** 是一款轻量级的**占领据点**玩法插件。管理员用钻石斧头圈选出多个据点区域,玩家走进据点后自动开始占领倒计时,倒计时走完即可获得奖励并全服公告。
据点是**要抢的**。开启人数上限后名额有限,满了的据点新玩家进不去,只能把里面的人**击杀**掉腾出位置。占领者死亡、下线或离开据点,据点立刻开放,里面的其他玩家会自动接管占领。
基于 1.8 API 编译,所有现代 API 走反射调用并以**能力探测**判定版本,**一个 jar 通吃 1.8 到最新版**(含 1.20.5+ 无版本号包名与 26.x 新命名方案)。
>
---
##
1. 管理员手持**钻石斧头**,左键选一角、右键选对角,`/outpost create <名称>` 创建据点
2. 玩家走进据点范围,**自动开始占领倒计时**
3. 占领期间据点内**所有玩家**都能看到 BossBar 进度条与 Title 倒计时
4. 占领者**离开据点、死亡或下线**,占领立即中断,据点内其他玩家自动接管
5. 倒计时结束**占领成功**,发放奖励并全服公告
6. 据点进入**冷却期**,冷却结束发送全服刷新提示,可重新占领
开启人数上限后,名额满了的据点会向新玩家发送「据点已满」提示,该玩家既无法参与占领、也拿不到参与奖励,必须等里面的人**死亡 / 下线 / 离开**才能补位。
---
##
### 核心玩法
-
-
-
-
-
-
### 奖励系统
-
-
-
### 界面与提示
-
-
-
### 管理与兼容
-
-
-
-
-
-
---
##
| 指令 | 说明 | 权限 |
|------|------|------|
| `/outpost select` | 提示如何选择据点区域 | `occupied.command.select` |
| `/outpost create <名称>` | 创建据点 | `occupied.command.create` |
| `/outpost delete <名称>` | 删除据点(需二次确认) | `occupied.command.delete` |
| `/outpost list` | 查看所有据点列表及状态 | `occupied.command.list` |
| `/outpost info <名称>` | 查看据点详情(生效上限、奖励来源等) | `occupied.command.info` |
| `/outpost tp <名称>` | 传送到据点中心 | `occupied.command.tp` |
| `/outpost reload` | 重载配置文件 | `occupied.command.reload` |
>
>
> 据点名支持字母、数字、下划线、连字符和中文,长度 1-32 字符,查重忽略大小写。
---
##
| 权限 | 说明 | 默认 |
|------|------|------|
| `occupied.admin` | 管理总权限(含下方所有子权限) | OP |
| `occupied.command.create` | 创建据点(钻石斧头选点也用此权限) | OP |
| `occupied.command.delete` | 删除据点 | OP |
| `occupied.command.list` | 查看据点列表 | OP |
| `occupied.command.info` | 查看据点详情 | OP |
| `occupied.command.tp` | 传送到据点中心 | OP |
| `occupied.command.select` | 选择据点区域 | OP |
| `occupied.command.reload` | 重载配置 | OP |
| `occupied.use` | 占领据点 | 所有玩家 |
可只授予单个 `occupied.command.*` 做精细控制,或授予 `occupied.admin` 一次性拿全部管理权限。
---
##
### 据点与人数上限
```yaml
outpost:
occupy-time: 30 # 占领时间(秒)
cooldown-time: 300 # 冷却时间(秒)
countdown-alerts: [15, 10, 5, 3, 2, 1] # 倒计时提示秒数
selection-require-sneak: true # 是否需潜行才触发钻石斧选点
# 据点人数上限(全局默认值)
# 超出上限后,新进入的玩家无法参与占领,也拿不到参与奖励
# 需击杀名额内的玩家才能腾出位置(死亡/下线/离开均会立即释放名额)
max-players:
enabled: false # 默认关闭,改为 true 开启
limit: 5 # 每个据点最多同时参与的玩家数
```
### 奖励设置
通过 `rewards.mode` 切换两种模式:
- `single` — 从 `commands` 列表随机抽 **一条** 命令执行
- `group` — 从 `groups` 里随机抽 **一组**,执行该组内的 **全部** 命令(适合一次发一整套)
```yaml
rewards:
mode: single # single 或 group
commands: # [single 模式] 随机抽一条
- "give %player% diamond 5"
- "eco give %player% 1000"
groups: # [group 模式] 抽中一组执行整组
group1:
commands:
- "give %player% diamond 5"
- "give %player% golden_apple 2"
- "eco give %player% 1000"
participate: # 参与奖励:占领成功时据点内其他玩家也获奖
enabled: false
mode: single # 同样支持 single / group
commands:
- "give %player% gold_ingot 3"
```
> `%player%` 会被替换为玩家名。
### 每据点独立配置(写在 `outposts.yml`)
人数上限和奖励都能按据点单独覆盖,不写就自动回退全局:
```yaml
据点名A:
world: world
pos1: {...}
pos2: {...}
# 只给这个据点设上限
max-players:
enabled: true # 只写 limit 不写 enabled 时,开关沿用全局
limit: 10
# 只给这个据点设奖励
rewards:
mode: group
groups:
group1:
commands:
- "give %player% netherite_ingot 1"
participate:
enabled: true
mode: single
commands:
- "give %player% diamond 2"
```
改完 `/outpost reload` 生效,`/outpost info <据点名>` 可查看**实际生效**的上限与奖励来源。
### BossBar 设置
```yaml
bossbar:
enabled: true
countdown: # 每一秒可配置独立文字/颜色/样式
30:
message: "&d&l%player% 正在占领据点 剩余 %time% 秒"
style: SOLID
color: RED
refresh-notify: # 据点冷却结束的全服提示
message: "&a&l据点 %outpost% 已刷新,可以重新占领!"
style: SOLID
color: GREEN
duration: 5
```
- 颜色:`PINK` `BLUE` `RED` `GREEN` `YELLOW` `PURPLE` `WHITE`
- 样式:`SOLID` `SEGMENTED_6` `SEGMENTED_10` `SEGMENTED_12` `SEGMENTED_20`
- 占位符:`%player%` 占领者名字,`%time%` 剩余秒数,`%outpost%` 据点名
### 消息设置
所有提示均可在 `messages` 段自定义,支持 `&` 颜色代码。包含据点已满提示:
```yaml
messages:
outpost-full:
title: "&c据点已满!"
subtitle: "&7当前人数: &e%count%&7/&e%max%"
```
---