# 🏅 比赛

**目标**：确定比赛的目标。例如，`CATCH_AMOUNT` 表示抓到最多鱼的玩家获胜。

```yaml
# TOTAL_SCORE
# CATCH_AMOUNT
# MAX_SIZE
# MIN_SIZE
# TOTAL_SIZE
# RANDOM
goal: CATCH_AMOUNT
```

开始日期：指定比赛开始的日期。

```yaml
start-weekday:
  - 6
  - 7
```

开始时间：确定比赛在一天内开始的时间。

```yaml
start-time:
  - '9:30'
  - '14:30'
  - '20:00'
```

持续时间：定义比赛持续的时间，单位为秒。

```yaml
duration: 300
```

最低玩家数：比赛开始所需的最低玩家人数。

```yaml
min-players: 2
```

跳过动作：如果未达到最低玩家人数，执行的操作。

```yaml
skip-actions:
  broadcast:
    type: broadcast
    value:
      - '玩家人数不足，无法按计划开始钓鱼比赛。'
```

**Boss栏**：与比赛期间Boss栏显示相关的设置。向玩家提供信息。

```yaml
bossbar:
  enable: true
  color: WHITE
  overlay: PROGRESS
  text:
    - '<gray>[<#87CEFA>🎣<gray>] <gradient:#F0F8FF:#87CEFA:#F0F8FF>剩余时间: <#E6E6FA>{seconds}s <gray>| <gradient:#F0F8FF:#87CEFA:#F0F8FF>你的排名: <#E6E6FA>{rank} <gray>| <gradient:#F0F8FF:#87CEFA:#F0F8FF>第一名玩家: <#E6E6FA>{1_player}'
    - '<gray>[<#87CEFA>🎣<gray>] <gradient:#F0F8FF:#87CEFA:#F0F8FF>剩余时间: <#E6E6FA>{minute}{second} <gray>| <gradient:#F0F8FF:#87CEFA:#F0F8FF>你的得分: <#E6E6FA>{score} <gray>| <gradient:#F0F8FF:#87CEFA:#F0F8FF>第一名得分: <#E6E6FA>{1_score}'
    - '<gray>[<#87CEFA>🎣<gray>] <gradient:#F0F8FF:#87CEFA:#F0F8FF>剩余时间: <#E6E6FA>{minute}{second} <gray>| <gradient:#F0F8FF:#87CEFA:#F0F8FF>获胜条件: <#E6E6FA>{goal}'
  refresh-rate: 20
  switch-interval: 200
  only-show-to-participants: true
```

动作栏：Boss栏的替代 UI。在动作栏中提供信息。

```yaml
actionbar:
  enable: false
  text:
    - '<gradient:#F0F8FF:#87CEFA:#F0F8FF>剩余时间: <#E6E6FA>{seconds}s <gray>| <gradient:#F0F8FF:#87CEFA:#F0F8FF>你的排名: <#E6E6FA>{rank} <gray>| <gradient:#F0F8FF:#87CEFA:#F0F8FF>第一名玩家: <#E6E6FA>{1_player}'
    - '<gradient:#F0F8FF:#87CEFA:#F0F8FF>剩余时间: <#E6E6FA>{minute}{second} <gray>| <gradient:#F0F8FF:#87CEFA:#F0F8FF>你的得分: <#E6E6FA>{score} <gray>| <gradient:#F0F8FF:#87CEFA:#F0F8FF>第一名得分: <#E6E6FA>{1_score}'
    - '<gradient:#F0F8FF:#87CEFA:#F0F8FF>剩余时间: <#E6E6FA>{minute}{second} <gray>| <gradient:#F0F8FF:#87CEFA:#F0F8FF>获胜条件: <#E6E6FA>{goal}'
  refresh-rate: 5
  switch-interval: 200
  only-show-to-participants: true
```

开始和结束动作：定义比赛开始和结束时要执行的动作。

```yaml
start-actions:
  ...
end-actions:
  ...
```

加入动作：玩家加入比赛时要执行的动作。

```yaml
participate-actions:
  ...
```

奖励：根据玩家的排名或参与情况确定奖励。

```yaml
rewards:
  1:
    command_action:
      type: command
      value:
        - 'money give {player} 200'
    messages_action:
      type: message
      value:
        - '<#FF4500>[第1名] 恭喜你！你获得了第一名奖励！'
  2:
    command_action:
      type: command
      value:
        - 'money give {player} 100'
    messages_action:
      type: message
      value:
        - '<#FF4500>[第2名] 机会稍纵即逝，下次再试吧！'
  3:
    command_action:
      type: command
      value:
        - 'money give {player} 100'
    messages_action:
      type: message
      value:
        - '<#FF4500>[第3名] 机会稍纵即逝，下次再试吧！'
      
        <-- 4,5,6...  
      
  participation:
    command_action:
      type: command
      value:
        - 'money give {player} 10'
    messages_action:
      type: message
      value:
        - '<#FF4500>感谢您的参与！'
```

## Redis 排名

为了在多个服务器之间设置同步的钓鱼比赛，插件提供了与 Redis 的集成，用于实时排名更新。这确保了不同服务器上的玩家可以参加同一活动并查看实时排名。

**启用 Redis 排名**

按照以下步骤激活 Redis 排名机制：

1. 找到你的 `config.yml` 文件。
2. 找到 `mechanics` 部分。
3. 在 `competition` 子部分内部，找到 `redis-ranking`。
4. 将 `redis-ranking` 的值设置为 `true`。

```yaml
mechanics:
  competition:
    redis-ranking: true
```

**Redis 设置**

要设置 Redis，请按照以下步骤操作：

1. 打开 `database.yml` 文件。
2. 滚动查找 `Redis` 部分。
3. 根据你的 Redis 设置更新配置设置：

```yaml
Redis:
  enable: true               # 设置为 true 以启用 Redis 集成
  host: [你的_Redis_主机]    # 用你的 Redis 服务器地址替换
  #password: [你的密码]     # 如果需要，请取消注释并替换为你的 Redis 密码
  port: [你的_Redis_端口]    # 用你的 Redis 服务器端口替换
  use-ssl: [true/false]      # 如果使用 SSL 进行 Redis 连接，请设置为 true
  MaxTotal: 10               # 池可分配的最大资源数
  MaxIdle: 10                # 池中空闲资源的最大数量
  MinIdle: 1                 # 池中空闲资源的最小数量
  MaxWaitMillis: 30000       # borrowObject 方法在抛出异常之前应阻塞的最长时间
  MinEvictableIdleTimeMillis: 1800000  # 对象在池中空闲可被逐出之前可待的最短时间
```

保存并重新加载插件。

## 占位符限制

钓鱼插件使用缓存机制优化性能，特别是通过 Redis 在多个服务器之间同步数据时。出于性能考虑，默认情况下，该插件仅同步前三名竞争者的实时数据变量。如果您希望实时显示更多竞争者的数据，您需要调整 `placeholder-limit` 设置。

1. 找到你的 `config.yml` 文件。
2. 找到 `mechanics` 部分。
3. 找到 `competition` 部分。
4. 找到 `placeholder-limit` 设置。如果不存在，您可能需要手动添加它。
5. 将其值设置为您希望显示的前几名竞争者的实时数据。例如，如果您想显示前 5 名竞争者的数据，请将其设置为 5：

```yaml
mechanics:
  competition:
    placeholder-limit: 5
```
