首先是
现在,假设你已经准备开始编写Folia插件、修改原有的Bukkit插件。
那么第一步你需要导入Folia的API:
在使用Maven的情况下,在pom.xml对应位置
添加Maven仓库:
<repository>
<id>papermc</id>
<url>https://repo.papermc.io/repository/maven-public/</url>
</repository>
导入依赖:
<dependency>
<groupId>dev.folia</groupId>
<artifactId>folia-api</artifactId>
<version>1.20.1-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
然后重新加载maven项目。
另一个重要的事情是,在插件的plugin.yml中添加一行folia-supported: true
。
由于Folia实际上也是使用的BukkitAPI,所以必须只有标注了支持Folia的插件才能正常读取,有效避免服主安装了不支持的插件而产生难以估量的后果。
同时如上文所述,Folia与传统Spigot最大的不同之处在于:由于多线程的实现导致调度程序API的变化。
在我日常水论坛的过程中,我看到了这么一个帖子:随机传送在folia端中不起作用 - 联机问答 - Minecraft(我的世界)中文论坛 - (mcbbs.net) 楼主提到随机传送在Folia中无法正常运行。 于是我便想出了这么一个随机传送的例子! (本文不对贴中插件深究无法实现的原因)
因此在接下来,我将基于这个例子,引出几种应用调度程序的场景,对比传统Spigot服务端中与Folia中的写法,以供你了解应该如何在Folia中实现对应功能、修改自己插件以支持Folia服务端,代码仅供参考!