# 编写一个插件

# 环境搭建

# 配置JDK

首先我们需要下载对应版本的JDK. JDK是区分操作系统位数的, 请下载你电脑应该使用的JDK.
本教程使用的是Java8, 编者使用的是64位windows操作系统, 因此下载了windows 64位版本的JDK8.

你可以在网上找到 JDK8 的安装包, 下面是官方下载地址(下载时需要登录账号并且国内速度慢):
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

下载完毕后, 右键用管理员模式打开(XP直接双击), 进行安装.

安装路径不能有中文(全英文), 安装过程中填写的两个安装地址, 都应该记住, 以免后续需要使用.

# 配置IDE(Eclipse)

IDE为我们提供了方便的Java开发工具等, 我们可以在IDE里轻松完成开发. 本教程后续将以一款比较出名的IDE——Eclipse做示范.
你也可以使用别的IDE, 例如IDEA.

打开下面的链接: http://www.eclipse.org/downloads/packages/

下载完毕后, 双击打开, 解压缩出来.

解压缩完毕后, 即可双击eclipse.exe文件打开Eclipse.
在接下来的内容中, 将使用Eclipse作为IDE进行开发.

经常有人在这里遇到Eclipse打不开的问题.
请自行修改eclipse.ini文件.
参考https://blog.csdn.net/gnail_oug/article/details/51925804

# 准备开服jar文件

Spigot、Paper等服务端本质上就是Bukkit的衍生服务端.
最开始诞生的是Bukkit服务端, 后续因为法律问题被迫中止, Bukkit服务端提供的API目前正在被SpigotMC维护. 目前大部分的服务端都基于Spigot开发.
由此而看, 基于BukkitAPI的插件并不是只有Bukkit才能用, 其衍生出的Spigot等诸多衍生服务端应该都能用.

我们开服使用的服务端jar文件, 写插件时同样也需要用到.
写插件之前我们需要下载一个开服所用的jar文件.
绝大多数情况下准备Spigot或者Paper, 亦或是其他服务端其实都是一样的.

您可以在这里下载到常用的服务端jar文件.
Spigot: https://getbukkit.org/download/spigot
Paper: https://yivesmirror.com/downloads/paper

特别注意
有一种远古的服务端叫做MCPC, 其与其后续衍生出的MCPC+和Cauldron服务端与Bukkit、Spigot等服务端架构并不一样.

开发普通的插件时, 这些服务端的插件开发工作应该基于Spigot开发更合适. 如果插件涉及到MOD开发应当相提并论.

但要注意, 请时刻牢记不断调试. 有些你认为理所应当的事情会在这种服务端上出BUG.
本教程后续将不再为这类服务端做特殊说明.

这段文字说明不针对CatServer等新生MOD+插件形式的服务端.

# 写最简单的插件

下面的内容如果有不明白的地方可以先照做, 在后面的内容中找到答案.
请你在下面的内容中重点注意熟悉Eclipse的使用方式.

打开Eclipse.

# 创建工程

第一步, 先为你的插件新建一个工程(Project).

第二步, 导入开服用的jar文件.

至此, 你已经创建完毕用以开发插件的工程.

# 创建主类和plugin.yml

一个插件必须要有的两样东西, 一个是主类, 一个是plugin.yml文件.

让我们先创建一个主类.

注意: 其实主类名、类名并没有严格的规定. 具体的命名规则、这些步骤是什么意思, 会在稍后详细地告诉你.

再创建plugin.yml文件.

可能你的Eclipse会弹出Editor avaiable on the Marketplace的提示, 选择第二项(Associate '*.yml' files开头) 点OK即可.
你的电脑上应该还要安装一款文本编辑器. 推荐Sublime TextVisual Studio Code(本文使用).

创建完毕会自动打开plugin.yml文件.
plugin.yml文件中输入这些内容:

name: HelloWorldPlugin
main: rinya.bukkit.helloworldplugin.HelloWorldPluginMain
version: 1
author: BakaRinya

注意:

  1. yml文件中冒号都应该是英文冒号, 后面必须有一个空格.
  2. plugin.yml中忌讳出现中文, 应当保证尽可能全英文.
  3. 上面从上到下依次是: 插件名、主类、版本号(可以写1.0.0之类的)、作者名.

保存. 保存之后双击src中我们创建的HelloWorldPluginMain.java文件, 在Eclipse中打开, 我们把其中内容改为这样:

package rinya.bukkit.helloworldplugin;

import org.bukkit.plugin.java.JavaPlugin;

public class HelloWorldPluginMain extends JavaPlugin {
	@Override
	public void onEnable() {
		System.out.println("Hello World!");
	}
}

应该看起来是这样:

24.jpg

至此, 你已经将该插件开发完毕. 接下来只需要导出即可.

# 导出插件

下面我们导出这个插件, 来看看效果.

25.jpg

之后你将会在你填写的位置找到插件的jar文件. 你可以将你的插件放入服务端中, 像一个普通的插件一样安装它, 打开服务端.
注: 除非你想做插件之间的兼容测试, 一般测试插件用的服务端只安装我们正在开发的插件.

启动服务端后, 你会看到这些信息:

26.jpg

你会发现插件被加载后, 输出了Hello World!. 这说明我们的插件运行正常, 十分完美.
局限于水平, 目前我们的插件仅此一项功能. 之后我们将不断完善它.