帐号不存在 发表于 2020-6-20 20:36:21

【原创】Bukkit插件开发教程 —— 第二节 写代码之前的准备

本帖最后由 主世界 于 2020-8-14 19:24 编辑




Bukkit 插件开发 入门教程第二节 写代码之前的准备




https://s1.ax1x.com/2020/06/20/Nlok7V.png

搭建环境

作为一名Minecraft Bukkit服务端插件开发者,你必须准备和安装一些东西,才能正式开始开发。
硬件准备:一台运行内存≥2GB的电脑。手机无法完成开发。
软件准备:
首先,你必须安装Java开发工具包——JDK(Java Development Kit)。这玩意儿可跟你玩Minecraft游戏时安装的Java环境——JRE(Java Runtime Environment)有很大区别。JRE只是一个用于运行某些应用的运行环境,而JDK可供编写你的Java程序。在下面的链接中选择一个进行安装(zPan的可能不是最新版):官网下载:https://www.oracle.com/java/technologies/javase-jdk14-downloads.html
zPan下载:https://pan.izhuolin.cn/#/s/3kGfX(提取码:klpbbs)双击下载的文件并运行,大致按照安装JRE时的流程走就可以了。
接着,你需要安装一个编译器。一看到“编译器”,你可能就会想到与Java相关的有个软件叫Eclipse。或许,这个软件在只是编写Java程序的情况下非常适用;但如今,你将要在Java下编写Bukkit插件,这意味着如果你还使用Eclipse,你将会在导入Bukkit API上耗费大量宝贵时间。现在有个软件,它不需要你对其进行任何的配置,并且你一打开就能直接导入各种各样的Minecraft服务端插件API进行插件编写,它的界面还简洁明了、现代化极强,它就是——IntelliJ Idea。在我说出软件名称之后,你可能会发现,你周围的插件开发者们都在用这款软件。在这里下载(zPna的可能不是最新版):官网下载:https://www.jetbrains.com/idea/download/#section=windows
zPan下载:https://pan.izhuolin.cn/#/s/m7KCB(提取码:klpbbs)如果你选择了去官方下载,请下载名为“Community - For JVM and Android development”的那一项内容。Community版本部分功能收费,不过我们只用得上它的免费功能,因此不建议购买付费版。
安装IntelliJ Idea时,推荐你勾选以下选项:

https://s1.ax1x.com/2020/06/09/tIBtcq.png
“32位”和“64位”这两个选项请根据你系统的实际位数来选择。
IntelliJ Idea大约需要1GB的磁盘空间。本人亲测,不安装在系统盘不会出现任何问题。
安装完成后,它会自动跳出一个初始化界面,对我们插件开发没有什么用,点“Skip”跳过就可以了。然后,IntelliJ Idea会自行启动。软件加载完成后,不要着急着新建项目,我们需要装个13,啊不是,装个插件。

https://s1.ax1x.com/2020/06/10/tIrASA.png
点击“Configure”并单击“Plugins”,在弹出的界面中搜索“Minecraft Development”,再点击安装。还推荐安装一个叫“Chinese (Simplified) Language Pack EAP”的插件,因为它可以将IntelliJ Idea默认的英文界面变成大部分都是中文的界面,并且我们接下来的教程全部用的是中文界面操作。

https://s1.ax1x.com/2020/06/10/tIrGyq.png
https://s1.ax1x.com/2020/06/10/tIr5pd.png

创建你的第一个插件

重新启动IntelliJ Idea,你会发现它变成中文的了!

https://s1.ax1x.com/2020/06/10/t7DajA.png
行,我们点击“创建新项目”->“Minecraft”->“Bukkit Plugin”->“下一步”。这样,一个Bukkit插件就进入了基本的配置环节。
接下来的页面里,你能看到“GroupId”“ArtifactId”“Version”和“Maven”。
GroupId即插件的包名。在一开始,你不用了解这么多,但你需要知道,你在这里应该填入一个反写着的网址,例如“com.baidu.wenku”。不过,你最好是将自己的域名或邮箱反写,不然容易跟其它插件的包名“撞车”,发生冲突。同时,你也不能填中文进去。
ArtifactId是你的插件名。只能用英文、下划线、空格等常见字符。在给插件取名之前,想想常见的插件名有哪些,不要跟它们“撞车”了。
Version是你的插件版本。没有必要改它,后面在plugin.yml里面改都可以,不然可能会出错。
Maven。这相当于一个仓库,你还可以选择“Gradle”。这两者的区别自行上网搜索,我习惯用Maven,所以我这里就选它了。

https://s1.ax1x.com/2020/06/11/tq5kn0.png
点击下一步,你可以看到更多要填的东西。
看着头晕目眩?不不不,不要这样。事实上,上边写了“Required Settings”的才是必填项,下面“Optional Settings”是可填可不填的那种。
Required Settings那里都帮你填好了,你只需要选择一下对应的Minecraft Java版本。一般是1.7及以下版本互相兼容,1.8-1.12之间互相兼容,1.13及以上互相兼容。
至于Optional Settings,我只用给你个https://bukkit.gamepedia.com/Plugin_YAML(接下来讲的plugin.yml文件中参考用的网页),你就可以大致了解这些Settings分别是什么意思了。

https://s1.ax1x.com/2020/06/12/tLqS7n.png
点击下一步,根据喜好修改项目名称和路径,最后点击“完成”,你的第一个插件就创建好了!

https://s1.ax1x.com/2020/06/12/tXwSB9.png

plugin.yml

准备好了,之后我的废话不会那么多了,因为,“技术性”内容即将登场!
在软件右边浏览项目内的路径,双击打开“plugin.yml”文件(IntelliJ Idea帮我们。之后,你可以同时打开好几个文件进行编辑,并可在上边像浏览器的标签页一样切换。

https://s1.ax1x.com/2020/06/25/NBxNuT.png
打开之后,如下:name: 插件名称
version: ${project.version}
main: 插件主类(包名)
api-version:
authors: []
description: 不同人的plugin.yml文件中的文字可能不同,但必填的有如下几个:name: 插件名称
main: 插件主类(包名)
version: 插件版本号一般来说,必填的内容都在创建插件时IntelliJ Idea帮你填好了。我建议填上authors(作者)和description(简介)这两行内容,像这样:authors: Zhushijie
description: My first plugin便于辨识。
plugin.yml还有很多的内容可添加,包括我们的指令、权限、插件前置等等,详情请见https://bukkit.gamepedia.com/Plugin_YAML。


主类

创建好插件之后,IntelliJ Idea会自动打开项目的主类。此时,你可以看到下面的代码:
package com.gmail.zhushijie.myplugin;

import org.bukkit.plugin.java.JavaPlugin;

public final class MyPlugin extends JavaPlugin {

    @Override
    public void onEnable() {
      // Plugin startup logic
    }

    @Override
    public void onDisable() {
      // Plugin shutdown logic
    }
}这些代码是不用自己写的喔!在创建项目的时候IntelliJ Idea自动帮你写好了的!

[*]package:插件的包名,不能删掉了。
[*]extends JavaPlugin:这代表一个Java插件的基类,放在这里就代表这里是插件的主类,其它类无法再继承主类。
[*]onEnable方法:插件被启用(Enable)时执行的内容
[*]onDisable方法:插件被禁用(Disable)时执行的内容
在注释处,可以添加任意代码。例如:getLogger().info("MyPlugin插件已成功加载!");通过这个语句,你能够让插件在控制台中发送“MyPlugin插件已成功加载!"这一消息。冒号内的内容可以随便更改。
同时,你可以在onEnable方法的前面再加上个onLoad方法:插件被加载时执行的内容。@Override
    public void onLoad() {
      getLogger().info("MyPlugin插件已成功加载!");
    }当然,这是可加可不加的。
如果我们把上述内容放在一起,就能在主类中写出这样的代码:package com.gmail.zhushijie.myplugin;

import org.bukkit.plugin.java.JavaPlugin;

public final class MyPlugin extends JavaPlugin {
    @Override
    public void onLoad() {
      getLogger().info("MyPlugin插件已成功加载!");
    }

    @Override
    public void onEnable() {
      getLogger().info("MyPlugin插件已成功启用!");
    }

    @Override
    public void onDisable() {
      getLogger().info("MyPlugin插件已成功禁用!");
    }
}另外,如果你的插件里有一个用来存储玩家信息的HashMap,你需要在OnEnable中加入下列代码,以免插件在服务器中被重载后发生“未将全部在线玩家的信息获取到”的错误。      for (Player player : Bukkit.getServer().getOnlinePlayers()) {
                playerList.put(player.getName(), playerData(player));
      }若插件里没有相关内容请勿添加。


导出你的第一个插件

主类和plugin.yml都写好了,理论上你的第一个插件就已经完备了。在使用自己写的插件之前,你不仅需要尝试去编译和调试它,还要对它进行“导出”。
首先,右键整个项目模块,选择“打开模块设置”或按下F4。

https://s1.ax1x.com/2020/08/04/a0lmdO.png
然后,选择“构建”,你会发现里面空空如也。
点击“+”,也就是添加,选择“JAR”并单击“From modules with dependencies”。

https://s1.ax1x.com/2020/08/04/a0lryq.png
在弹出的“从模块创建 JAR”窗口中,在“Main Class”那一行中输入主方法(或点击旁边的文件夹图标浏览并选择主方法)。路径可以不用管,咱没有META-INF和MANIFEST.MF。

https://s1.ax1x.com/2020/08/04/a01LD0.png
点击确定,可以更改输出路径。完成后,点击确定。

https://s1.ax1x.com/2020/08/04/a08Fzj.png
回到程序主界面,在菜单栏中点击“构建”并选择“构建 Artifacts...”。

https://s1.ax1x.com/2020/08/04/a08OtU.png
最后选择“Build”即可。

https://s1.ax1x.com/2020/08/04/a0G9n1.png
当你看到这些文件的时候,你的第一个插件就编译好了!可以拿到服务器中使用了!

https://s1.ax1x.com/2020/08/04/a0Gecd.png
注意:在程序界面点“运行”或“调试”(如下图)之后并不意味着你的插件成功编译,那只是供你测试用的。
真正的插件应该是通过上面的步骤产生的,注意一下哦。

https://s1.ax1x.com/2020/08/04/a0JJIK.png


更新教程不易,能给个评分表示来过么~
有问题尽管在下面回复,若有错误欢迎批评指正!
本帖未经作者允许严禁转载!





上一节返回目录下一节


帐号不存在 发表于 2022-3-15 15:52:23

fantuan_233 发表于 2022-2-21 08:16
这个硬件要求比fml模组开发好多了

(人家环境搭建就要3Gb) ...上 gitpod.io (在线vscode,但不是网页版那种限制很多的),环境都不用

饭团团 发表于 2022-3-15 16:00:52

Katorly 发表于 2022-3-15 15:52
上 gitpod.io (在线vscode,但不是网页版那种限制很多的),环境都不用

很有道理=   =催更(爷爷你追的番更新了(bushi
页: [1]
查看完整版本: 【原创】Bukkit插件开发教程 —— 第二节 写代码之前的准备