# 更完善的比赛体验与配置文件

## 一、比赛体验优化

1.玩家进入竞技场后的倒计时会伴随有全屏文字(Title)和音效的提示，优化视听体验

2.玩家击杀对手后会召唤闪电（无伤），并用Title提示获胜

3.在正式开赛前的倒计时期间，能自动阻止玩家使用末影珍珠传送。开赛后可恢复正常使用

4.物品栏上方(ActionBar)会显示比赛倒计时

## 二、更多的配置项

### 1.兼容了更多全息插件

本插件的排行榜能以全息图的形式呈现，而全息图的显示需要其他插件的支持

在免费版中，本插件只支持用**HolographicDisplays**插件和**TrHologram**插件来显示

而在付费版中，又新支持了**DecentHolograms**插件和**CMI**插件自带的全息图系统（这些插件都支持高版本1.20+，解决了服务器升到高版本后缺少作为单挑排行榜载体的插件的问题）

安装好相应插件后，在如下的"**Plugin"**&#x4E00;项中填入"**DecentHolograms**"或"**CMI**"即可

```
Hologram:
  # 用于显示全息排行榜的全息插件
  Plugin: CMI
  # 全息图刷新的时间间隔（单位为秒）
  RefreshInterval: 300
```

### 2.比赛指令白名单

在免费版中，除了认输指令，比赛中的玩家不能使用任何其他指令，但考虑到一些服务器的需求，付费版提供了一个指令白名单功能

在白名单中你可以添加多条指令的关键词

比如说你添加了一个"**test**"

那么只要玩家在比赛时所输入的指令里含有"**test**"这个词，就不会被本插件阻止

```
Game:
   Process:
     # 指令白名单。如果玩家在比赛时输入的指令包含以下的字符，指令则会被允许执行
     CommandWhitelist:
       - '/dantiao test_whitelist_command1'
       - '/dantiao test_whitelist_command2'
```

### 3.比赛时长自定义

你可以设置比赛时长限制，单位为秒，至少5秒。若超时则会按配置文件中的预设方案（等等讲预设方案）判定赢家，若无方案则判定平局

```
 Game:
   Process:
     # 比赛时间限制，单位为秒。若超时则会按本配置文件中的预设方案判定赢家，若无方案则判定平局
     TimeOut: 300
```

### 4.比赛超时的处理方案

比赛超时后，会按照预设方案判定输赢，若无预设方案则直接判定为平局

目前提供的预设方案有两种：

① 比较血量值 (方案名 COMPARE\_HEALTH\_VALUE)

② 比较血量百分比 (方案名 COMPARE\_HEALTH\_PERCENTAGE)

注：比较结果谁高谁赢，如果玩家的比较结果相等，仍判定为平局

```
 Game:
   Finish:
     TimeOutHandlingScheme:
       # 是否开启比赛超时的输赢判定方案，若不开启此方案，比赛超时后则直接判定为平局
       Enable: true
       # 超时后判定输赢的方案
       # 目前的方案有：
       # COMPARE_HEALTH_VALUE - 比较双方玩家的血量值
       # COMPARE_HEALTH_PERCENTAGE - 比较双方玩家的血量百分比
       Scheme: "COMPARE_HEALTH_VALUE"    
```

<div align="left"><img src="/files/gv8ur7dusam1NLofd6Hv" alt="当处理方案为 比较血量百分比(COMPARE_HEALTH_PERCENTAGE) 时的示例截图"></div>

### 5.输家积分扣除

比赛结束后，失败的一方将会扣除一定量的积分（可自定义量或不扣），且匹配赛、邀请赛、强制赛的扣除量可分开地在配置文件中设置

```
  Rewards:
    # 匹配赛奖励方案
    Panel:
      # 输家扣除的单挑积分，0则代表不扣除，下同
      PointsDeducted: 0
    # 匹配赛奖励方案
    Inviting:
      PointsDeducted: 0
    # 匹配赛奖励方案
    Compulsion:
      PointsDeducted: 0
```

### 6.赛后传送倒计时

比赛结束后，胜利的一方玩家不会立刻离开竞技场，而是会有传送倒计时，倒计时结束后才会将玩家传送到大厅或玩家原来的位置上

当然，传送倒计时可以在配置文件中更改或取消

```
 Game:
   Finish:
     # 比赛结束后胜利一方的玩家传送离场的倒计时时间
     TeleportCountDown: 6
```

设为0即为取消倒计时，意味着胜利的一方在比赛结束后直接传送离场

<div align="left"><img src="/files/-MNmexVPSMXZ-kNM0bu5" alt=""></div>

### 7.赛后自动复活

可以设置单挑比赛后是否自动让玩家复活，如果开启自动复活功能，还可选择执行自动复活的代码（**这一点可以解决本插件在LoliServer等新兴服务端或一些老版本服务端出现的自动复活后假死、卡死、人物模型消失等BUG**）

```
Game:
  Finish:
    AutoRespawn:
    # 是否开启此自动复活功能
    Enable: true
    # 自动重生的方式
    # 如果你服务器的自动重生遇到了问题，请尝试修改此项配置已改变自动重生的方式
    # 目前的方式有：
    # SPIGOT - 使用player.spigot().respawn()方法重生
    # SETHEALTH - 使用player.setHealth(player.getMaxHealth())方法重生
    # 如果你通过修改重生方式都不能解决问题，那请直接关闭此功能
    Way: "SPIGOT"
```

对于复活方式，Spigot/PaperSpigot/CatServer服务端一般用SPIGOT，LoliServer等少数服务端必须用SETHEALTH，最近还发现1.7.10Spigot端也需用SETHEALTH（否则可能出现人物模型消失的BUG）。对于其他较冷门的服务端我未亲自测试过。**总之，哪个方式不会出问题就用哪个，一般两种方式总会有一种不会出问题的**，若实在不行或者您的服务器本来就有自动复活插件，那就直接关闭本功能即可

### 8.弹射物伤害

可以设置是否开启外界弹射物伤害保护，开启后，场内玩家会免受怪物和场外观众的远程伤害，从而避免比赛被干扰，能保障比赛公平性，这是这个功能设计的初衷。但后来考虑到直接设置竞技场不刷怪、观众席改造成玻璃罩也能解决这个干扰比赛的问题，**而且这个功能可能会导致部分模组的远程武器无法造成伤害，故现在开放这个功能的开关**，默认为开启，遇到上述问题的服主可将此功能关掉。

```
Game:
  Process:
    # Whether protect players from damage of projectile
    # 是否开启弹射物保护。开启时，玩家将不会受到任何场外玩家和怪物的远程伤害。但可能会导致一些模组武器无法造成远程伤害，纯净服务器推荐开启，模组服视实际情况而定。
    EnableProjectileProtection: true
```

### 9.箱子的打开权限

比赛进行时，可设置玩家是否可以打开赛场中的普通箱子/末影箱

设置为“否”可防止KITPVP模式下玩家通过末影箱远程取装备

```
Game:
  Process:
    # 非OP玩家是否能在比赛中打开普通箱子
    IsOpeningChestAllowed: true
    # 非OP玩家是否能在比赛中打开末影箱
    IsOpeningEnderChestAllowed: true
```

### 10.是否允许比赛时由其他插件触发的传送

默认为不允许（即false），用来阻止玩家通过某些特殊方式借助其他插件的传送功能传送出场

但由于考虑到某些服务器希望玩家在单挑比赛时，可以使用一些由其他插件制作的传送/瞬移道具

那么就应将这个开关设置为true

```
Game:
  Process:
    # 是否允许比赛时玩家进行由其他插件触发的传送
    IsTeleportationTriggeredByOtherPluginAllowed: false
```

### 11.通过识别物品名中的字段判定比赛违禁品

Dantiao插件早在2.0版本更新之初，就加入了比赛违禁品检测的功能。服主可以通过指定的物品类型或lore字段来检测违禁品。现在付费版又新增了一条通过物品名中的字段来检测，丰富了功能

```
Game:
  Start:
     ItemLimit:
       DisplayName:
       - '精良锻刀'
       - '普通锻刀'
```

如上面所示，意味着开赛时，只要检测到玩家背包中装有某个名字中包含上述任意一条字段的物品，比赛就无法开始。比如说玩家背包里有“\&b精良锻刀（III级）” “普通锻刀（竞技版）”等名称中包含相关字段的装备，就会被判定为携带违禁品而无法开赛

### 12.新增指令：结束所有竞技场的比赛

输入 **/dt stopall** 即可快速中止所有竞技场的比赛

输入/dt reload c重载配置文件之前也会自动结束所有竞技场的比赛（旧版本因为没有先结束所有比赛再执行重载，导致管理员输入重载指令时服务器内正在进行比赛的竞技场出现异常）


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://1392847363.gitbook.io/dantiao-ex/bi-sai-ti-yan-de-bian-geng.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
