UID3253性别保密经验 EP铁粒 粒回帖0主题精华在线时间 小时注册时间2020-4-23最后登录1970-1-1
| 本帖最后由 主世界 于 2020-8-14 19:24 编辑
Bukkit 插件开发 入门教程 第二节 写代码之前的准备 |
|
|
搭建环境
作为一名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时,推荐你勾选以下选项:
“32位”和“64位”这两个选项请根据你系统的实际位数来选择。
IntelliJ Idea大约需要1GB的磁盘空间。本人亲测,不安装在系统盘不会出现任何问题。
安装完成后,它会自动跳出一个初始化界面,对我们插件开发没有什么用,点“Skip”跳过就可以了。然后,IntelliJ Idea会自行启动。软件加载完成后,不要着急着新建项目,我们需要装个13,啊不是,装个插件。
点击“Configure”并单击“Plugins”,在弹出的界面中搜索“Minecraft Development”,再点击安装。还推荐安装一个叫“Chinese (Simplified) Language Pack EAP”的插件,因为它可以将IntelliJ Idea默认的英文界面变成大部分都是中文的界面,并且我们接下来的教程全部用的是中文界面操作。
创建你的第一个插件
重新启动IntelliJ Idea,你会发现它变成中文的了!
行,我们点击“创建新项目”->“Minecraft”->“Bukkit Plugin”->“下一步”。这样,一个Bukkit插件就进入了基本的配置环节。
接下来的页面里,你能看到“GroupId”“ArtifactId”“Version”和“Maven”。
GroupId即插件的包名。在一开始,你不用了解这么多,但你需要知道,你在这里应该填入一个反写着的网址,例如“com.baidu.wenku”。不过,你最好是将自己的域名或邮箱反写,不然容易跟其它插件的包名“撞车”,发生冲突。同时,你也不能填中文进去。
ArtifactId是你的插件名。只能用英文、下划线、空格等常见字符。在给插件取名之前,想想常见的插件名有哪些,不要跟它们“撞车”了。
Version是你的插件版本。没有必要改它,后面在plugin.yml里面改都可以,不然可能会出错。
Maven。这相当于一个仓库,你还可以选择“Gradle”。这两者的区别自行上网搜索,我习惯用Maven,所以我这里就选它了。
点击下一步,你可以看到更多要填的东西。
看着头晕目眩?不不不,不要这样。事实上,上边写了“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分别是什么意思了。
点击下一步,根据喜好修改项目名称和路径,最后点击“完成”,你的第一个插件就创建好了!
plugin.yml
准备好了,之后我的废话不会那么多了,因为,“技术性”内容即将登场!
在软件右边浏览项目内的路径,双击打开“plugin.yml”文件(IntelliJ Idea帮我们。之后,你可以同时打开好几个文件进行编辑,并可在上边像浏览器的标签页一样切换。
打开之后,如下:- 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。
然后,选择“构建”,你会发现里面空空如也。
点击“+”,也就是添加,选择“JAR”并单击“From modules with dependencies”。
在弹出的“从模块创建 JAR”窗口中,在“Main Class”那一行中输入主方法(或点击旁边的文件夹图标浏览并选择主方法)。路径可以不用管,咱没有META-INF和MANIFEST.MF。
点击确定,可以更改输出路径。完成后,点击确定。
回到程序主界面,在菜单栏中点击“构建”并选择“构建 Artifacts...”。
最后选择“Build”即可。
当你看到这些文件的时候,你的第一个插件就编译好了!可以拿到服务器中使用了!
注意:在程序界面点“运行”或“调试”(如下图)之后并不意味着你的插件成功编译,那只是供你测试用的。
真正的插件应该是通过上面的步骤产生的,注意一下哦。
更新教程不易,能给个评分表示来过么~
有问题尽管在下面回复,若有错误欢迎批评指正! 本帖未经作者允许严禁转载!
|
|