# DeathPulse 插件
## 介绍
DeathPulse 是一个 Minecraft 插件,旨在通过修改玩家死亡时的生命值机制来增强游戏玩法。该插件允许服务器管理员配置在特定类型的死亡中玩家获得的或失去的生命值,从而为游戏增添了独特的转折。
## 安装
1. 从 [发布页面](https://github.com/b4n9z/DeathPulse/releases) 下载 DeathPulse 插件的最新版本。
2. 将下载的 JAR 文件放入服务器的 `plugins` 目录中。
3. 启动或重启你的 Minecraft 服务器。
4. 插件将在 `plugins/DeathPulse` 目录中生成一个默认配置文件。
5. 编辑配置文件以自定义插件的行为。
6. 使用 `/dp reload` 命令重新加载插件。
## 命令
### 主命令
- `/DeathPulse` 或 `/dp`
- **别名**: `dp`
- **用法**: `/dp <子命令>`
- **描述**: DeathPulse 插件的主命令。
- **权限**: `dp.admin` 或为特定子命令设置 permissionsAllPlayer (请记住,不建议对所有子命令这样做)
### 子命令
- **reload**:
- **用法**: `/dp reload`
- **描述**: 在不重启服务器的情况下重新加载插件配置。
- **权限**: `dp.reload`
- **setConfig**:
- **用法**: `/dp setConfig <键> <值>`
- **描述**: 仅使用命令设置插件的配置值。
- **权限**: `dp.setConfig`
- **setMaxHealth**:
- **用法**: `/dp setMaxHealth <玩家> <数量>`
- **描述**: 设置指定玩家的最大生命值。
- **权限**: `dp.setMaxHealth`
- **viewHealth**:
- **用法**: `/dp viewHealth <玩家>`
- **描述**: 查看指定玩家的生命值、债务数据和死亡数据。
- **权限**: `dp.viewHealth`
- **viewDeathData**:
- **用法**: `/dp viewDeathData`
- **描述**: 查看运行命令的玩家的死亡数据。
- **权限**: `dp.viewDeathData`
- **viewDebtData**:
- **用法**: `/dp viewDebtData`
- **描述**: 查看运行命令的玩家的债务数据。
- **权限**: `dp.viewDebtData`
- **resetHealth**:
- **用法**: `/dp resetHealth <玩家|所有玩家>`
- **描述**: 将指定玩家或所有玩家的生命值重置为起始生命值。
- **权限**: `dp.resetHealth`
- **matchHealth**:
- **用法**: `/dp matchHealth <玩家|所有玩家>`
- **描述**: 根据死亡数据匹配指定玩家或所有玩家的生命值。
- **权限**: `dp.matchHealth`
- **removeDeathData**:
- **用法**: `/dp removeDeathData <玩家|所有玩家>`
- **描述**: 移除指定玩家或所有玩家的死亡数据。
- **权限**: `dp.removeDeathData`
- **removeDebtData**:
- **用法**: `/dp removeDebtData <玩家|所有玩家>`
- **描述**: 移除指定玩家或所有玩家的债务数据。
- **权限**: `dp.removeDebtData`
- **transferHealth**:
- **用法**: `/dp transferHealth <玩家> <数量>`
- **描述**: 从一个玩家(执行命令的玩家)转移生命值到另一个玩家。
- **权限**: `dp.transferHealth`
- **withdrawHealth**:
- **用法**: `/dp withdrawHealth <玩家> <数量>`
- **描述**: 从玩家(执行命令的玩家)中扣除生命值以制作 HealthItem。
- **权限**: `dp.withdrawHealth`
- **help**:
- **用法**: `/dp help`
- **描述**: 显示此帮助消息。
- **权限**: `dp.help`
## 权限
- `dp.admin`: 访问所有 [DeathPulse](cci:2://file:///D:/b4n9z/Minecraft/Server/PluginBuild/DeathPulse/src/main/java/io/github/b4n9z/deathPulse/DeathPulse.java:8:0-57:1) 命令。
- `dp.reload`: 权限重新加载插件配置。
- `dp.setConfig`: 权限更改插件配置。
- `dp.setMaxHealth`: 权限设置玩家生命值。
- `dp.viewHealth`: 权限查看玩家生命值。
- `dp.viewDeathData`: 权限查看玩家死亡数据。
- `dp.viewDebtData`: 权限查看玩家债务数据。
- `dp.resetHealth`: 权限重置玩家生命值。
- `dp.matchHealth`: 权限匹配玩家生命值。
- `dp.removeDeathData`: 权限移除玩家死亡数据。
- `dp.removeDebtData`: 权限移除玩家债务数据。
- `dp.transferHealth`: 权限将生命值转移到另一个玩家。
- `dp.withdrawHealth`: 权限提取生命值以制作 HealthItem。
- `dp.help`: 权限查看帮助消息。
## 配置文件
config.yml
配置文件 (`config.yml`) 允许你自定义插件的各个方面:
```yaml
############ 关键设置 ############
firstTimeSetup: 0 # 在此服务器上首次设置插件日期,如果你不了解你正在做什么,请不要更改此部分
checkDayPeriod: 30 # 在此服务器上检查天数周期(以秒为单位),较低的值更准确,但可能会导致延迟
############ 世界设置 ############
worldDaySettings:
world: 24000
# <世界名称>: <世界中每天的滴答数> # <世界名称> 是世界名称,<每天的滴答数> 是该世界每天的滴答数
#world_nether: 24000 # 不使用默认值,因为虚空没有昼夜循环
############ HP 设置 ############
hp: # HP 设置
start: 20 # 玩家的起始 HP
maxHP: # 玩家的最大 HP
enabled: false # 启用最大 HP 限制(true/false),当 true 时,玩家具有最大 HP 限制
amount: 140 # 玩家的最大 HP 限制数量
dropHealthItem: true # 玩家死亡时达到最大 HP 时掉落生命值物品
minHP: # 玩家的最小 HP
enabled: false # (true/false) 当 true 时,玩家具有最小 HP 限制,当 false 时,HP 为 0 的玩家将被封禁
amount: 2 # 玩家 HP 限制数量
banTime: 24 # 实际时间小时的封禁时间,设置为 0 以永久封禁
afterBan: 2 # 玩家在被封禁并返回服务器后,获得的 HP
############ 健康物品设置 ############
healthItem:
material: "NETHER_STAR" # 物品材质
name: "&c生命值令牌" # 物品名称
lore: # 物品描述
- "&7右键使用"
- ""
- "&7可用于增加你的&7最大生命值"
healthPerItem: 2 # 每个物品的生命值
cannotToCraft: ["BEACON"] # 列表中的物品不能使用健康物品制作
############ 优先死亡设置 ############
priority: ["IGNORE", "INCREASE", "DECREASE"]
# 检查玩家死亡时,先检查较高优先级的死亡类型,当玩家以该类型死亡时,将不会检查其他类型
# 死亡类型列表:IGNORE,INCREASE,DECREASE
############ 忽略死亡设置 ############
ignore: # 忽略死亡
enabled: false # (true/false) 当 true 时,玩家可以忽略他们的死亡
must_difference: false # (true/false) 当 true 时,之前以忽略原因死亡的玩家,不能使用相同的死亡原因再次忽略
# 当 false 时,玩家始终使用忽略原因忽略 HP,即使重复使用相同原因的死亡,也没有记录他们的死亡数据
cause: # 忽略的死亡类型
- ALL # 忽略所有死亡类型
#- LAVA
#- FALL
#- 等等
day: # 忽略的日子设置
enabled: false # true 或 false,当 true 时,忽略日期生效
must_difference: false # (true/false) 当 true 时,之前以忽略日期原因死亡的玩家,不能使用相同的日期原因再次忽略
# 当 false 时,玩家始终使用忽略日期原因忽略 HP,即使重复使用相同日期原因的死亡,也没有记录他们的死亡数据
deActiveIncrease: false # true 或 false,当 true 时,增加死亡不会在忽略日期间生效
deActiveDecrease: false # true 或 false,当 true 时,减少死亡不会在忽略日期间生效
deActiveIncreaseDay: false # true 或 false,当 true 时,增加天数不会在忽略日期间生效
deActiveDecreaseDay: false # true 或 false,当 true 时,减少天数不会在忽略日期间生效
type: "minecraft" # "real" 为实际世界的日子,"minecraft" 为 Minecraft 日子
days: [ 19, 23, 29 ] # 忽略日期生效的日期列表(倍数)
cause: # 忽略日期原因(死亡类型)
- ALL # 忽略所有死亡类型
- LAVA
- FALL
- 等等
############ 增加死亡设置 ############
increase: # 当玩家死亡时增加 HP
enabled: true # true 或 false,如果 true,玩家可以增加他们的 HP
must_difference: true # (true/false) 当 true 时,之前以增加原因死亡的玩家,不能使用相同的死亡原因再次增加
# 当 false 时,玩家始终使用增加原因增加 HP,即使重复使用相同原因的死亡,也没有记录他们的死亡数据
cause: # 增加死亡类型和增加数量,(类型::数量)
- ALL::2 # 增加所有死亡类型
#- LAVA::4
- FALL::1 # 如果使用 ALL 但需要对某些死亡类型指定自定义增加数量,可以添加以下内容
# - 等等
day: # 增加日期设置
enabled: false # true 或 false,如果 true,增加日期生效
must_difference: true # (true/false) 当 true 时,之前以增加日期原因死亡的玩家,不能使用相同的日期原因再次增加
# 当 false 时,玩家始终使用增加日期原因增加 HP,即使重复使用相同日期原因的死亡,也没有记录他们的死亡数据
deActiveIgnore: false # true 或 false,如果 true,忽略死亡不会在增加日期间生效
deActiveDecrease: false # true 或 false,如果 true,减少死亡不会在增加日期间生效
deActiveIgnoreDay: false # true 或 false,如果 true,忽略天数不会在增加日期间生效
deActiveDecreaseDay: false # true 或 false,如果 true,减少天数不会在增加日期间生效
type: "minecraft" # "real" 为实际世界的日子,"minecraft" 为 Minecraft 日子
days: [ 11, 13, 17 ] # 增加日期生效的日期列表(倍数)
cause: # 增加日期原因(死亡类型和增加数量),(类型::数量)
- ALL::10 # 增加所有死亡类型
- LAVA::14 # 如果使用 ALL 但需要对某些日期增加指定自定义增加数量,可以添加以下内容
#- FALL::4
#- 等等
############ 减少死亡设置 ############
decrease: #死亡时减少玩家 HP
enabled: false # true 或 false,如果 true,玩家可以减少他们的 HP
must_difference: false # (true/false) 当 true 时,之前以减少原因死亡的玩家,不能使用相同的死亡原因再次减少
# 当 false 时,玩家始终使用减少原因减少 HP,即使重复使用相同原因的死亡,也没有记录他们的死亡数据
debt: true # (true/false) 当 true 时,如果玩家违反最小 HP 或 HP 小于 0 时,他们的 HP 会被用作债务
cause: # 减少死亡类型和减少数量,(类型::数量)
- ALL::4 # 减少所有死亡类型
- PLAYER_ATTACK::6 # 如果使用 ALL 但需要对某些死亡类型指定自定义减少数量,可以添加以下内容
#- FALL::10
#- 等等
day: # 减少日期设置
enabled: false # true 或 false,如果 true,减少日期生效
must_difference: false # (true/false) 当 true 时,之前以减少日期原因死亡的玩家,不能使用相同的日期原因再次减少
# 当 false 时,玩家始终使用减少日期原因减少 HP,即使重复使用相同日期原因的死亡,也没有记录他们的死亡数据
deActiveIgnore: false # true 或 false,如果 true,忽略死亡不会在减少日期间生效
deActiveIncrease: false # true 或 false,如果 true,增加死亡不会在减少日期间生效
deActiveIgnoreDay: false # true 或 false,如果 true,忽略天数不会在减少日期间生效
deActiveIncreaseDay: false # true 或 false,如果 true,增加天数不会在减少日期间生效
type: "minecraft" # "real" 为实际世界的日子,"minecraft" 为 Minecraft 日子
days: [ 5, 7 ] # 减少日期生效的日期列表(倍数)
cause: # 减少日期原因(死亡类型和减少数量),(类型::数量)
- ALL::16 # 减少所有死亡类型
- PLAYER_ATTACK::18 # 如果使用 ALL 但需要对某些日期减少指定自定义减少数量,可以添加以下内容
#- FALL::20
#- 等等
############ 季节设置 ############
season: # 季节设置,给死亡数据玩家添加季节天数,这样玩家在季节变化时可以再次使用相同的原因死亡。
enabled: true # true 或 false,如果 true,季节生效
type: "real" # "real" 为实际世界的一天/季节,"minecraft" 为 Minecraft 一天/季节
day: 30 # 天(倍数)当季节变化时
resetWorldDay: false # true 或 false,如果 true,当季节变化时,重置所有世界天数和实际世界设置天数回 0。
############ 权限设置 ############
permissionsAllPlayer: # 给予所有玩家权限,OP 可以使用命令而不需要权限
reload: false # 允许所有玩家重新加载命令
setConfig: false # 允许所有玩家设置配置命令
setMaxHealth: false # 允许所有玩家设置最大生命值命令
viewHealth: false # 允许所有玩家查看生命值命令
viewDeathData: true # 允许所有玩家查看死亡数据命令
resetHealth: false # 允许所有玩家重置生命值命令
matchHealth: false # 允许所有玩家匹配生命值命令
removeDeathData: false # 允许所有玩家移除死亡数据命令
removeDebtData: false # 允许所有玩家移除债务数据命令
transferHealth: true # 允许所有玩家转移生命值命令
withdrawHealth: true # 允许所有玩家提取生命值命令
help: true # 允许所有玩家查看帮助命令
############ 通知设置 ############
notifications:
defaultDeathMessage: false # true 或 false,如果 false,其他玩家不会收到默认死亡消息
player:
maxHealth: "&b你&f已达到&c最大生命值限制&f。"
minHealth: "&b你&f已达到&c最小生命值限制&f。"
banReason: "&b你&f因低生命值&c被封禁&f。"
kicked: "&b你&f因低生命值&c被踢出&f。"
ignored: "&f死亡方式&c{cause}&f,现在&c没有增加&f生命值"
ignoredSameWay: "&c不能&f使用相同方式忽略,因为你&c以相同方式死亡&f了"
increased: "&b你&a增加&d{增加}&f生命值,原因是&c{cause}"
increaseSameWay: "&b你&c本次死亡&f没有增加生命值"
decreased: "&b你&c减少&d{减少}&f生命值,原因是&c{cause}"
decreaseSameWay: "&b你&c本次死亡&f没有减少生命值"
debtPaidOff: "&b你&f已经偿还了&c{debtPaid}&f生命值债务"
debtReduced: "&b你&f减少了&c{debtPaid}&f生命值债务,现在&c{debtLeft}&f生命值债务"
debtAdded: "&b你&f增加了&c{debtAdded}&f生命值债务,现在&c{debtLeft}&f生命值债务你需要偿还"
# 特殊日期的警告消息
warning:
ignoredDay: "&6⚠ &e今天是个&6忽略日&e!死亡不会影响你的生命值!"
increaseDay: "&6⚠ &e今天是个&a增加日&e!死亡可获得额外生命值!"
decreaseDay: "&6⚠ &e今天是个&c减少日&e!小心死亡,你将损失更多生命值!"
seasonChange: "&6⚠ &e季节已改变!重置你的死亡数据!"
```
## 功能
- **忽略死亡**: 忽略死亡,玩家不能获得增加或减少。
- **生命值增加**: 玩家死亡时生命值增加。
- **生命值减少**: 如果配置,玩家可能会死亡时损失生命值。
- **忽略、增加和减少死亡类型**: 指定忽略、增加或减少生命值的特定死亡类型。
- **所有类型的死亡忽略、增加和减少**: 使用 `ALL` 来忽略、增加或减少所有死亡原因的生命值。
- **增加和减少数量**: 指定在特定死亡类型上增加或减少生命值的数量。
- **日期忽略、增加和减少**: 允许配置在特定日期生效时忽略、增加和减少死亡的设置,无论死亡原因如何。如果只想在特定日期减少生命值,而不在其他日期影响玩家生命值,将 `increase` 或 `decrease` 设置中的 `per_death` 设置为 0。
- **相同原因死亡**: 如果 `must_difference` 为 false,并且死亡原因与上次死亡相同,则玩家将不会再次增加或减少生命值。
- **自定义优先级**: 设置不同死亡类型的优先级,以确定生命值修改的顺序。
- **季节变化**: 配置季节设置,以便玩家在季节变化时,可以再次使用相同的原因死亡。
- **日期重置**: 在设置季节变化时,配置日期重置设置,以将日期重置为 0。
- **自定义消息**: 定制玩家在死亡时收到的消息。
- **首次加入生命值**: 设置玩家首次加入时的生命值。
- **最大生命值限制**: 设置玩家可以达到的最大生命值限制。
- **最小生命值限制/封禁**: 设置最小生命值限制,或当玩家的生命值降至零时封禁玩家。
- **债务生命值**: 如果玩家的生命值低于最小值或小于 0 时减少,使玩家产生债务。
- **生命值物品**: 自定义生命值物品设置,并使其无法用于制作特定物品。
- **生命值物品掉落**: 当玩家达到最大生命值限制时,掉落生命值物品。
- **首次设置**: 设置服务器上首次设置插件的日期 (`System.currentTimeMillis()`),如果您不了解您正在做什么,请不要更改此部分。
- **天数检查周期**: 设置服务器上的天数检查周期(以秒为单位),较低的值更准确,但可能会导致延迟。
- **世界天数设置**: 设置不同世界的每天滴答数,用于忽略日期、增加日期和减少日期。
- **重新加载配置**: 在不重启服务器的情况下使用命令重新加载插件配置。
- **使用命令设置配置**: 使用命令设置特定的配置值。
- **匹配生命值**: 使用命令匹配指定玩家或所有玩家的生命值,基于他们的死亡数据。
- **转移生命值**: 使用命令将生命值转移给另一个玩家。
- **提取生命值**: 使用命令从玩家中提取生命值制作 HealthItem。
- **权限**: 为不同的命令设置特定权限,以便玩家可以在没有 `dp.*` 权限的情况下运行命令(请自行承担风险)。
## 事件侦听器
- **PlayerJoinListener**: 玩家首次加入时设置玩家的起始生命值。
- **HealthItemListener**: 处理生命值物品逻辑。
- **PlayerDeathListener**: 处理玩家死亡时的生命值修改逻辑。
## 贡献
欢迎贡献!
---
虽然 DeathPulse 为 Minecraft 游戏玩法增添了独特的转折,但总会有改进的空间。 将来的增强功能可能包括对生命值修改的更精细的控制以及其他可配置的事件。 您的反馈和贡献将对于使此插件变得更好具有不可估量的价值!
享受使用 DeathPulse 的时光!