一些常见问题

部分整理自用户提问。还会不断完善...

最近更新:2022/1/25

可通过mcbbs站内私信留言向我反馈问题

推荐格式:问题描述 + 触发条件 + 服务器核心的版本与种类 + 报错内容

1.插件一启动PAPI变量全炸了,重载PAPI也没用,输入/dt也没任何反应

这可能不是PAPI变量的问题,是插件一开始就因某些原因没能启动成功。请到后台翻阅启动日志,按下Ctrl+F打开搜索栏输入"Dantiao",看看能不能找到与单挑有关的报错信息,有的话请完整地截图或直接复制报告给作者

2.打指令提示一堆英文 "An internal error occurred while attempting to perform this command"

这是一个通用的报错提示语,翻译过来就是“当执行该指令时产生了一些内部错误”。如果你看到这串英文,就意味着需要到后台找报错了,找到相关报错后请将其完整地截图或复制报告给作者。只告诉我这段英文提示语是无济于事的

3.为什么我枪械服单挑时用枪打不到人,子弹打到对方身上啥反应都没有

这与本插件自带的弹射物保护功能有关,以下配置项设置为false关闭即可

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

2023/1/26补充:

经过作者亲测,有些枪械模组不用改这个开关也能正常用于单挑比赛,如Modularwarfare(版本2.3.2f)

正常运作的截图如下(子弹能正常击中对手、比赛能正常结束)

4.提示“非法传送”是什么情况

本插件默认阻止比赛时由其他插件触发的传送(如玩家在单挑比赛时,欲使用由RPGItem插件制成的传送道具以传送到别的地方,那就会被本插件阻止)

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

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

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

5.插件由于配置文件损坏无法正常启动

主要表现为指令不能打,一打就报错。这可能说明插件从一开始就没启动成功

再往上翻翻报错,可能长这样

这时请检查一下你的单挑数据文件,即plugins/Dantiao文件夹里的数据文件(如areas.yml shop.yml playersdata.yml records.yml等)

你很可能会在这些文件中发现一些奇怪的字符串,形如 &id003 和 *id003 等

Dantiao-HD-KD: &id003
  World: *id003
  X: -5.699999988079071
  Y: 9.12392366263198
  Z: 13.49070335064261

把一些冒号后面像 &id003 *id003 这些奇怪的东西删掉即可,然后保存文件并重启服务器。这些字符很可能是保存数据时意外出现的,会导致数据无法被正常读取,出现的话删掉就行,这些奇怪的字符串还是很好辨认的,一般以*id或&id开头,后面是数字,字符长度比较短。我也遇到过这种情况,但比较少见,暂时没找到根治方法,目前的解决办法就是一遇见就删掉。对于一些可以长时间不变动的数据,比如说用于保存竞技场位置等数据的areas.yml文件,可以趁其还能正常运行的时候备份一下,未来出问题了直接将备份替换回去就行

2023年1月25日补充:目前猜测这可能与数据的异步保存有关。作者已对部分代码进行优化,将持续跟进。还望有懂的大佬不吝赐教,感谢!

6.玩家在赛场被击杀后出现“假死”情况,不能打指令、不能被别人看见

这可能与本插件自带的赛后自动复活功能有关

在插件开发中实现自动复活的代码比较常见的两条是player.spigot().respawn()player.setHealth(player.getMaxHealth())。最开始我写代码时以为两条没啥区别的,选用了第一条,但后来发现并非所有种类的服务端都能正常运行第一条,这是2021年底一位用户反馈给我的,该用户用的是LoliServer服务端,问题为玩家赛后复活会出现“假死”的情况(表现为玩家复活后模型消失、打不了指令、自己能走路但别人看不到等),我将自动复活的代码换成第二条后就解决了,我终于明白有的服务端只能运行第一条,有的只能运行第二条,有的皆可

所以开放了以下的配置项,让服主可以更改自动复活时所执行的代码

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

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

7.设置的kitpvp物品不保存

可能因为你使用了MySQL来储存Area竞技场模块的数据

暂时不建议使用MySQL来储存这个模块的数据,因为对于某些服务器来说可能会出现一些暂时无法解决的技术性问题(当然以后也会想办法修),而且竞技场数据用MySQL储存意义不大,毕竟这方面的数据一般也不涉及跨服,本地yml文件储存即可,同理也不建议使用MySQL储存的模块还有Season赛季模块。当然其他模块用不用MySQL储存请随意

8.指令简写形式 "/dt" 和其他插件冲突了

初始情况下,单挑插件主指令 "/dantiao" 的简写形式为 "/dt"

但某些插件的主指令简写也为 "/dt" ,就和本插件冲突了

你可以把plugin.yml中 aliases: [dt] 一行去掉,这样就取消了本插件 "/dt" 的简写形式

或者也改成别的简写形式

如:我希望简写形式为 "/dtiao"

那就将 aliases: [dt] 改为 aliases: [dtiao]

以下为plugin.yml的初始内容(节选):

commands:
  dantiao:
    description: 查看单挑插件帮助
    usage: /<command>
    aliases: [dt]

最后更新于