Nukkit插件问题排查
——by 从不咕咕的鸽纸
(未经允许,严禁转载!)
前言:在日常参与讨论的过程中,不乏遇到有许多服主前来询问某某插件这是出现了什么问题。不可否认每个人都会遇到问题,包括我也不敢保证自己绝对不会遇到问题。但有些问题其实是很简单就可以解决的,完全不需要耗费时间和精力四处去询问答案。因此我希望各位服主在提出问题前,可以先对照本篇教程排查一遍,也许就能解决您的问题。当然,我不敢保证我的教程是能涵盖到全部问题且完全正确的,因此欢迎各位提出建议。既然您读到了这篇教程,那么说明您可能遭遇了插件无法加载、报错等问题,请不要着急!让我们开始一步步排查吧!
(未经允许,严禁转载!)

前言:在日常参与讨论的过程中,不乏遇到有许多服主前来询问某某插件这是出现了什么问题。不可否认每个人都会遇到问题,包括我也不敢保证自己绝对不会遇到问题。但有些问题其实是很简单就可以解决的,完全不需要耗费时间和精力四处去询问答案。因此我希望各位服主在提出问题前,可以先对照本篇教程排查一遍,也许就能解决您的问题。当然,我不敢保证我的教程是能涵盖到全部问题且完全正确的,因此欢迎各位提出建议。既然您读到了这篇教程,那么说明您可能遭遇了插件无法加载、报错等问题,请不要着急!让我们开始一步步排查吧!

在开始排查问题之前,请确保:
1.确保您的插件版本与您的核心版本是相对应的。
事实上,几乎高达50%的问题都出在版本不兼容的问题上。请您检查您的插件是否适用于这个版本的核心。
常见的版本兼容问题:
①由于API的不同,Nukkit1.0的插件不适用于Nukkit2.0,反之亦然。
②虽然Bukkit与Nukkit长的是那么相像,但两者的插件可并不能互相通用。同理,Spigot等相关核心也是不可以的。
③当然了,BDServer插件与PocketMine插件也不能用于Nukkit的任何版本。
④虽然Nukkit大部分插件是全版本的,但依然有一些插件可能只适用于某个版本。您应该先仔细看一下该插件标注的版本号,确认这个插件适用于什么版本。如果没有明确标注,那么一般来说,经历了较大版本变动的插件需要格外注意兼容性,尤其是NPC插件这类特殊的插件。
⑤即使版本是相同的,比如您使用的是1.14的核心且插件也是适配1.14的,这里还有一个问题就是即使是Nukkit1.0,也有一些分支核心。这些核心通常是在主分支核心的基础上进行了一些修改。它们大部分兼容主分支的插件,但依然有一些是不兼容的。当您使用的是其它分支核心时(如红石分支等),您应该格外注意插件兼容性。如果这时一个插件出现了问题,您应当先更换为主分支核心进行排查,如依然出现问题,您可以进行下一步排查。如果没有特殊要求,我建议您使用主分支核心。
⑥确保您的插件和核心是最新版。一些旧版本会存在很多问题,作者可能会在之后的更新中修复它们。由于使用旧版本导致的问题通常没有人会帮你。
2.确保您的配置填写正确。
通常一些插件不仅仅需要在游戏中进行设置,还需要您对配置文件进行更改。有时候,一些插件并不是使用默认配置文件就可以正常运行,因此在插件无法运行时,请您对您的配置文件进行检查。这时也需要注意一些特殊字符的填写,比如是否需要添加空格、单引号或双引号,以及注意中英文。建议参考作者给出的标准格式。
3.确保您的前置插件完整
部分插件可能会需要您安装前置插件,比如EconomyAPI、Dblib等。如果缺少这类插件,通常需要它们作为前置的插件会发出提醒。一般来说,大部分插件都需要一些基础前置,因此我建议您提前安装好它们。当然,您也要确保前置插件是兼容当前版本且插件本身为最新版的。
4.确保您的插件本体完整
虽然这种情况比较少见,但是有时候一些从诸如github等访问速度较慢的网站下载的文件,很容易因为网络波动导致下载失败或者文件不完整,插件也是这样的。这个时候建议您使用加速器或其他辅助工具下载,或者寻找是否有搬运贴提供了更加稳定的下载渠道。
二、进阶问题排查
事实上,几乎高达50%的问题都出在版本不兼容的问题上。请您检查您的插件是否适用于这个版本的核心。
常见的版本兼容问题:
①由于API的不同,Nukkit1.0的插件不适用于Nukkit2.0,反之亦然。
②虽然Bukkit与Nukkit长的是那么相像,但两者的插件可并不能互相通用。同理,Spigot等相关核心也是不可以的。
③当然了,BDServer插件与PocketMine插件也不能用于Nukkit的任何版本。
④虽然Nukkit大部分插件是全版本的,但依然有一些插件可能只适用于某个版本。您应该先仔细看一下该插件标注的版本号,确认这个插件适用于什么版本。如果没有明确标注,那么一般来说,经历了较大版本变动的插件需要格外注意兼容性,尤其是NPC插件这类特殊的插件。
⑤即使版本是相同的,比如您使用的是1.14的核心且插件也是适配1.14的,这里还有一个问题就是即使是Nukkit1.0,也有一些分支核心。这些核心通常是在主分支核心的基础上进行了一些修改。它们大部分兼容主分支的插件,但依然有一些是不兼容的。当您使用的是其它分支核心时(如红石分支等),您应该格外注意插件兼容性。如果这时一个插件出现了问题,您应当先更换为主分支核心进行排查,如依然出现问题,您可以进行下一步排查。如果没有特殊要求,我建议您使用主分支核心。
⑥确保您的插件和核心是最新版。一些旧版本会存在很多问题,作者可能会在之后的更新中修复它们。由于使用旧版本导致的问题通常没有人会帮你。
2.确保您的配置填写正确。
通常一些插件不仅仅需要在游戏中进行设置,还需要您对配置文件进行更改。有时候,一些插件并不是使用默认配置文件就可以正常运行,因此在插件无法运行时,请您对您的配置文件进行检查。这时也需要注意一些特殊字符的填写,比如是否需要添加空格、单引号或双引号,以及注意中英文。建议参考作者给出的标准格式。
3.确保您的前置插件完整
部分插件可能会需要您安装前置插件,比如EconomyAPI、Dblib等。如果缺少这类插件,通常需要它们作为前置的插件会发出提醒。一般来说,大部分插件都需要一些基础前置,因此我建议您提前安装好它们。当然,您也要确保前置插件是兼容当前版本且插件本身为最新版的。
4.确保您的插件本体完整
虽然这种情况比较少见,但是有时候一些从诸如github等访问速度较慢的网站下载的文件,很容易因为网络波动导致下载失败或者文件不完整,插件也是这样的。这个时候建议您使用加速器或其他辅助工具下载,或者寻找是否有搬运贴提供了更加稳定的下载渠道。

二、进阶问题排查
上面所述的是一些基础性的问题,接下来我将展示一些较为深级的问题。本人也不是非常掌握这方面知识,因此更需要您及时指出错误。
1.插件报错出现NoClassDefFoundError/NoMethodFoundError等字符(部分内容来自若水大大)
这通常是由于API不兼容或缺少插件造成的。如果在报错后面又出现了cn.nukkit等字符,则是与API有关。
这种问题通常需要您更换核心以适应插件所需的API版本,或者联系原作者对该API版本进行适配。当然,如果您有能力,自己进行修复是最好不过的了。
1.插件报错出现NoClassDefFoundError/NoMethodFoundError等字符(部分内容来自若水大大)
这通常是由于API不兼容或缺少插件造成的。如果在报错后面又出现了cn.nukkit等字符,则是与API有关。
这种问题通常需要您更换核心以适应插件所需的API版本,或者联系原作者对该API版本进行适配。当然,如果您有能力,自己进行修复是最好不过的了。
有待补充...
三、一些其他的东西

三、一些其他的东西
如果您依然无法找出问题所在,那么您可能就需要询问其他人了。在您向他人提问前,我推荐您阅读提问的智慧,这可以让您得到解答的成功率更高。当您提出疑问时,请保持耐心,没有人有义务免费为您进行解答。如果您得到解答那是最好不过的,如果您没有得到解答或满意的答复也请不要追着人问,这只会让别人对你感到厌烦。提出问题时请详细描述问题,最好是带有截图/日志以方便他人查看问题。