### TenLives 插件

**概述:**
TenLives 是一个 Minecraft 插件,它通过限制玩家拥有的生命数量,增加了一种令人兴奋的生存挑战。每次死亡都会降低玩家的最大生命值,如果它降低得太低,玩家将面临诸如切换到旁观者模式或被封禁等严重后果。玩家可以使用特殊的自定义图腾来恢复生命。
**功能:**
- **死亡时降低生命值:**
- 每次死亡都会降低玩家的最大生命值 2 点。
- 当玩家的最大生命值降至 1 点以下时,他们将被切换到旁观者模式或被封禁,具体取决于配置。
- **生命恢复:**
- 玩家可以使用自定义图腾来恢复生命。
- 自定义图腾会将玩家的最大生命值增加 2 点,最高可达 20 点。
- **可定制消息:**
- 所有游戏内消息都可以通过配置文件进行定制。
- **图腾分发:**
- 自定义图腾有 10% 的几率出现在存储箱卡车中。
- 玩家也可以通过 `/gettotem` 命令获得图腾,如果他们拥有必要的权限。
- **命令:**
- `/gettotem <昵称>`: 如果玩家拥有所需的权限 (`tenlives.gettotem`),则给予玩家一个自定义图腾。
- **占位符:**
- `%tenlives_lives%`: 基于玩家当前的最大生命值,显示玩家拥有的生命数量。
**安装:**
1. 下载 TenLives 插件。
2. 将下载的文件放入服务器的 `plugins` 目录中。
3. 启动或重启服务器以加载插件。
4. 在生成的 `config.yml` 文件中按需配置插件。
**配置:**
- `config.yml` 文件允许服务器管理员自定义插件的各种方面,例如消息和死亡后的操作。
**用法:**
- 玩家从默认的生命数量开始。
- 每次死亡都会降低他们的最大生命值,他们必须使用自定义图腾来恢复它。
- 管理员可以使用 `/gettotem` 命令分发图腾。
**命令:**
- `/gettotem`: 如果玩家拥有所需的权限 (`tenlives.gettotem`),则给予玩家一个自定义图腾。
**配置文件 (`config.yml`):**
```yaml
# TenLives 配置
death_action: "spectator" # 选项: 'spectator' 或 'ban'
death_message: "&cВаши жизни закончились..."
totem_name: "&6Тотем Жизни"
totem_custom_model_data: 993
life_lost_title: "&cВы потеряли жизнь"
life_lost_subtitle: "&eБудь внимательнее, они не вечны"
life_restored_title: "&a1 Жизнь восстановлена"
life_restored_subtitle: "&eПотрать её с умом"
totem_received_message: "&aВы получили Тотем Жизни!"
command_player_only: "&cЭту команду может использовать только игрок."
no_permission_message: "&cУ вас нет прав на использование этой команды."
```
**统计数据:**
- 此插件使用 bStats 收集匿名使用统计数据,以帮助改进插件。
### 代码剖析
#### 主类: `TenLives`
这是一个主要插件类,负责:
- 启用和禁用插件。
- 管理事件和命令。
- 处理玩家死亡、复活和与存储箱卡车的交互。
##### 方法:
- `onEnable()`: 初始化插件,加载配置,注册事件和命令,并设置指标。
- `onDisable()`: 插件禁用时清理。
- `onPlayerDeath(PlayerDeathEvent event)`: 处理玩家死亡并降低他们的最大生命值。
- `onPlayerRespawn(PlayerRespawnEvent event)`: 在玩家重生时向玩家提供反馈。
- `onEntityResurrect(EntityResurrectEvent event)`: 处理玩家复活,并在使用自定义图腾时恢复他们的生命值。
- `onPlayerInteractEntity(PlayerInteractEntityEvent event)`: 管理与存储箱卡车的交互并将自定义图腾添加到他们的物品栏中。
- `onCommand(CommandSender sender, Command command, String label, String[] args)`: 处理 `/gettotem` 命令。
- `createCustomTotem()`: 创建自定义图腾物品。
- `isValidTotem(ItemStack item)`: 检查项目是否为有效的自定义图腾。
#### 占位符扩展: `LivesPlaceholder`
此类与 PlaceholderAPI 集成以提供自定义占位符。
##### 方法:
- `getIdentifier()`: 返回此占位符扩展的标识符。
- `getAuthor()`: 返回此占位符扩展的作者。
- `getVersion()`: 返回此占位符扩展的版本。
- `onPlaceholderRequest(Player player, @NotNull String identifier)`: 处理占位符请求并返回对于 `%tenlives_lives%` 而言的适当值。
### 使用说明
- 在 `config.yml` 文件中自定义消息和其他设置。
- 确保玩家拥有使用 `/gettotem` 命令的适当权限。
- 监控玩家的生命值和交互,以确保插件按预期运行。
- 使用 `%tenlives_lives%` 占位符在支持的插件或消息格式中显示玩家拥有的生命数量。