[github]Minecraft我的世界Spigot插件保姆级开发教程

Minecraft我的世界Spigot插件保姆级开发教程【1】——准备开发环境

更新时间:2020.5.11

本教程以1.15.2 Spigot服务端为例。

都0202年了,你还在MCBBS苦苦搜寻称心插件,或者担心插件有后门,或者好不容易找到的插件却作者弃坑,或者因某个插件的某个不完备的功能而失望长叹,或者……

Spigot插件的优势

我们暂且抛开各个服务端核心之间的性能比较,单纯从spigot插件的优势来讲。首先,spigot能运行在spigot为核心的服务端上,包括spigot,Paper,catserver等。然而Craftbukkit(水桶端)的bukkit插件,Paper端的paper插件,sponge端的sponge插件均只能运行在自己的服务端核心上。所以,spigot插件以其服务端兼容性的优势(可运行在多种服务端核心上)和版本兼容性(一个插件支持多个游戏版本)的优势胜出。目前比较优秀的spigot插件有:EssentialX(基础插件)、Multiverse Core(多世界插件)、Vault(经济前置插件)、GroupManager(权限插件)、Residence(领地插件)等。怎么样,是不是很多都耳熟能详啊!是不是心动了啊!当然,如果编写了spigot插件,并且对性能有极致追求的玩家来说,在paper上运行你写的插件,那岂不是嗨皮到飞起?

安装开发Spigot插件所需要的环境

安装集成开发环境(IDEA)与JDK

代码编写自然少不了编写代码的工具,这里介绍一个特别特别好用,在IDE里堪称航空母舰级别的存在。这就是——IntelliJ IDEA。【备注:正式版需要付费,请使用教育版或者自行寻找方法激活】

安装环节过于简单,一直点击下一步,按需调整即可。

IntelliJ IDEA 下载地址:传送门

JDK11 下载地址:传送门

安装Spigot服务端环境

开发spigot插件需要一个spigot的服务端,所以接下来我们就整一个spigot服务端。由于spigot服务端核心官方是不提供的,官方提供的方法就是自己下载BuildTools进行编译构建,那么咱们就按照官方的方法来构建一个spigot服务端核心。

首先打开这个传送门,如图一,下载最终成功构建下面的BuildTools.jar,并将该文件放置在一个文件夹内。

在该文件夹shift+右键打开Powershell窗口,输入以下指令java -jar BuildTools.jar --rev 1.15.2敲下回车,文件就会开始自动下载依赖并进行编译。编译时间可能会比较长,因为下载、编译完后整个文件夹的大小会非常大,需要耐心等待。如果总是编译不成功,请检查自己是否安装了java与JDK,如果还是不行,那就科学上网来解决吧(雾)。

下图为构建成功的截图。

编译完后,文件夹内会多出很多文件(整个文件夹大小在609MB左右),其中包括spigot-1.15.2.jar(服务端核心文件)。我们只需要留下spigot-1.15.2.jar这个文件,把其余的全部删掉即可。现在我们就构建完1.15.2的spigot服务端核心了。

  1. 新建一个txt文本文档,打开并输入:
1
2
3
@ECHO OFF
java -Xincgc -Xms1g -Xmx2g -jar spigot-1.15.2.jar nogui
pause
  1. 保存该文档,并将文档重命名为bat后缀;

  2. 双击该bat文件即可运行服务器;

  3. 输入stop正常关闭服务器。

补充一点,代码的第二行中 “**-Xms1g”是指最低内存1G,“-Xmx2g**”是指最高内存2G,自己可以根据情况更改。

第一次开启需要将eula.txt里面的false改成true

3

安装IDEA Minecraft Development插件

我们打开安装好后的IDEA,进入当前界面(图一),点击右下角的Configure==》Plugins按钮。即可打开插件安装面板(图二)。在MarketPlace中搜索Minecraft关键字找到该插件,点击Install就可以完成插件的安装。

3

3

总结

那么这一部分的内容就结束了,是不是感觉很简单呢?正因为Minecraft是Java来编写的,所以入门的门槛相对于其他的游戏就低很多。只要你肯学,稍微有一点点的编程基础,基本上都能学会。当然,你如果能去看Bukkit官方,Spigot官方提供的javadoc来学的话,速度会更快。这一系列教程只能带你入门,具体问题还需要有具体方法来解决。

如果有问题,请在左侧Issue提出,也可以联系面包个人QQ。

文章中所涉及资源如果无法获取,请使用面包准备的传送门。提取码:f7gr。

未经作者允许,请勿转载文章。

Minecraft我的世界Spigot插件保姆级开发教程【2】——创建项目&加载通知

更新时间:2020.5.12

创建项目

打开IDEA,点击Create New Project

2.1

我们在左侧栏选择Minecraft,右边勾选Spigot Plugin,然后点击Next

2.2

按照样例填写好三个字段。

2.2

按照样例填写好字段,Optional Settings里面的内容为选填(可以留空不填)。填完后,点击Next

2.2

按照提示填写好Project name(工程名称)、Project location(工程地址)。然后点击Finish。IDEA就会自动为你配置插件开发所需要的环境,该过程时间可能比较。解决方法:科学上网(雾)。

2.2

至此,Spigot插件项目算是构建完毕了。

文件目录与代码介绍

工程构建完成后,在IDEA的左栏会一系列的文件。我们进入src==>java==>cn.cupbread.spigotplugincourse(之前创建项目的时候输入的groupID.项目ID)==>SpigotPluginCourse(插件的主类)。

  • 代码一般放在跟插件主类同级的目录资源以及其他文件一般放在resource目录。

  • 我们进入主类后会发现有两个函数,一个叫做onEnable(),一个叫做onDisable()。两个函数分别对应插件被载入的时候,所要执行的操作和插件被关闭或载出时候的操作。

  • 右边有一个名字为Maven的工具栏。因为咱们这个Spigot使用的是Maven进行项目依赖管理,所以就会有这个工具栏。那么具体的作用是什么呢?我们只用记住两个按钮就可以了。一个是Lifecycle(生命周期)内的clean,一个是生命周期内的package。由于编译打包的时候会生成多余的文件,为了防止多余的文件影响下一次的打包,最好进行一下clean操作。package顾名思义,就是插件打包的意思。

2.2

制作插件加载/卸载通知

我们在**onEnable()**函数内写入内容【加载插件】

1
2
3
4
5
6
7
@Override
public void onEnable() {
// Plugin startup logic
System.out.println("=========Spigot教学插件============");
System.out.println("插件加载成功");
System.out.println("=========Spigot教学插件============");
}

我们在**onDisable()**函数内写入内容【加载插件】

1
2
3
4
5
6
7
@Override
public void onDisable() {
// Plugin shutdown logic
System.out.println("=========Spigot教学插件============");
System.out.println("插件卸载成功");
System.out.println("=========Spigot教学插件============");
}

**System.out.println(“这里填写要打印的内容”); **这个函数的用途就是在控制台打印内容。

然后我们在右边的工具栏双击package指令,让IDEA自动执行打包。打包完成后,我们会在左边的文件目录看到多出来了一个名字为target的文件夹。

我们进入该文件夹,文件夹里面的SpigotPluginCourse-1.0-SNAPSHOT.jar 就是我们打包出来的插件了。

注意:original开头的文件不是打包完成的插件,咱们的插件是没有original开头的jar文件。

2.2

我们直接选中这个文件,然后Ctrl+C复制。然后到之前准备好的1.15.2 spigot服务端下的plugins文件夹目录下Ctrl+V粘贴。这样,我们的插件就正式装在服务端里啦!我们回到服务端根目录下,双击启动.bat文件来启动服务器。

如果一切顺利的话,我们就可以看到我们之前写的代码在控制台打印的日志啦!

2.2

同样,我们在控制台内输入stop关闭服务器,在服务器关闭后,也能看到插件卸载时所执行的输出函数

2.2

总结

那么本Part的内容就到此为止啦!有没有觉得特别特别简单呢?当然,这个加载卸载的提示也有很多玩法,例如:

2.2

如果有问题,请在左侧Issue提出,也可以联系面包个人QQ。

本Part所涉及所有代码均能在面包房小黑屋代码仓库内找到。

未经作者允许,请勿转载文章。