我个人是使用 Esclipe IDE 所以图片与影片都是 Esclipe IDE 的。IDE差别不怎么大 只是介绍如何开新Project & Package & Classes。
进入正题 > 开启IDE会出现类似下图的 界面
接着点开左边右上 File 下面的小窗口就会出现应该要有的 工具栏 之类的, 过后在 Package Explorer栏里面 右键点击 就会出现一个列表选择 New -> Java Project 入下图1 就会出现类似图2的界面
 |
| 图 1 |
 |
| 图 2 |
ProjectName 输入你要的插件名字或者别名 JRE 里 选择 Use an environement JRE: 就好 若要指定其他版本的 Java 才选择第二个 之后Finish 就创建 Project 完成!

创建完毕后就会出现这样的 Project 接着就加入 Minecraft的 Server.jar

如右图 Configure Build Path 的界面右边有个 Add External JARs 然后选择 下载了的 Server.jar

加了Jar过后就能开始编程了 右键点击 src 文件夹然后 选择 New > Package 写入你自己的 package名字通常都是
me.oska.tutorial 这个格式 me.名字.插件名 看你个人喜好怎么放

加入了Package后再右键点击package 后 选择 New > Class 写入你的Class的名字 因为是 MainClass 所以我就放
TutorialMain.

开了之后就会有这样的界面 界面上会有 package 就是你创建了的 package 与 public class TutorialMain 是你创建了的 class 的name
public 算是 Modifier 而会有两种Modifier
- Access Control Modifiers
- Non Access Modifier
Access Control Modifier
这个Modifier 分别为 四个等级 package 里的 classes 使用 ( internal ) , class 自己使用罢了 ( private ) , 能给全世界使用 包括别人加入你所创建的插件档案 ( public ) , package 和 subclasses 使用罢了 ( protected )
- internal
- private
- public
- protected
Non Access Modifier
这个Modifier 分别为四种 static modifier for 创建 method 和 variables, final modifier for finalizing ( 最终化 ) classes, method 与 variables 也就是将它固定 所以不能被更改 一旦 finalize了过后, abstract modifier for 创建 abstract classes and methods 让别的classes 能 extends (继承)它所拥有的 methods. synchronized and volatile modifier for 多线程编程使用。
- static
- final
- abstract
- synchronized
- volatile
讲解了Modifier过后 就到 extends , implements 和 import的解释了 如右图
import 的意思是进口 也就是 让插件能使用 该class的 method 之类的
extends 的意思就是继承 也就是让插件继承 abstract class 的 method (上面有说到)但是记得 一个 Class 只能extends 一个 Abstract Class
implements 的意思就是链接接口 也就是 让插件 链接该接口并且将他用于自己的方式 implements 是for interface class , 一个 class能 implements 很多个 interface
介绍完毕就是进入正题 开发插件如上图 extends 了 JavaPlugin 的 Class 你就能 开Method onEnable() 和 onDisable() 这两个method 的用途是 当插件读取时 与 当插件禁用时 而它们上面的 @Override 叫 annotation 都带有 '@' 这个符号而 Override 是 覆盖的意思 在这边就是 覆盖掉原本的 onEnable 和 onDisable method.
温馨提示 :
Overload 和 Override 是不一样的东西记得
一个是 过载 一个是 覆盖不要搞错哟
这次我们会先学习插件的基本如何制作一个插件所以编程部分比较少,如下图写入 读取时 发送讯息到 后台 与 移除时 发送讯息到后台
package me.oska.tutorial;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
public class TutorialMain extends JavaPlugin
{
@Override
public void onEnable()
{
Bukkit.getServer().getLogger().info("Tutorial Plugins Loading ...");
}
@Override
public void onDisable()
{
Bukkit.getServer().getLogger().info("Tutorial Plugins Loading...");
}
}
我们用 Bukkit.getServer().getLogger().info(string str) 来发送讯息到后台 ,你会好奇为什么 有些 method能直接 Bukkit.getServer() 有些不能。因为 static class 能直接使用 例如 Bukkit.getServer() 而 普通的 class呢 必须要有 object 存在 例如 new Bukkit().getServer() new 这个只要就是创建 Object使用的.
写入了之后 你能到 Project 那个文件夹 点击 右键 New > File > plugin.yml . 每个插件都必须要有一个 plugin.yml 来读取 因为原设是读取 plugin.yml 里的一些设定 才能读取这个插件,许多设定也能在 plugin.yml 设定 例如 permission, commands, depends, 之类的. 下图就是个 plugin.yml 的例子
main: me.oska.tutorial.TutorialMain
name: TutorialPlugin
version: TUTORIAL-0.1
description: description of the plugins
author: Oskang09
authors: [Oskang09, iRegalia]
website: https://oskang09.blogspot.my
depend: [WorldEdit, Towny, AnotherPlugin]
prefix: TutorialLogging
softdepend: [Essentials, Vault, AnotherPlugin]
main : 是最重要的东西 插件读取的 MainClass 位置 必须连 package也写进去 但是不需要任何的 extension 例如
me.oska.tutorial.TutorialMain
name :生成的 DataFolder() 的名字会是这个名字 这东西过后会说到在 Chapter 4
version :插件版本 这你能以你喜欢的写 例如 v0.1 , v0.2 之类的
description : 插件的介绍 一样随你怎么写
author : 作者的名称咯
authors : 可能插件是多个作者的就能用这个 格式如上图
website :网页网址
depend :依赖于某个插件 必须写对插件名 一旦插件不存在 你的插件就会拒绝读取 写错就无效了 (当然也能用 编程的 方式探测)
prefix : 插件每一次的 log , info , warning 显示的前缀
softdepend :你的插件会在这些插件读取后才进行读取 (可能要依赖那些插件做一些设定才需要这个softdepend)
写好了之后就是 如何 Export JARs 你到 Project 点击右键 然后 Export > Java > JAR file 选择了后选择 next 然后 写入export的路劲 与 名字到 JAR file : 的格子 然后点 Finish. (如下图)
Export好了之后就是开启你的伺服器 并且等待他读取。
如果显示和上图一样的东西就代表你完成了第一个插件!欢迎加入爆肝党(?)好像不是这样,你也能到我的
Github 查看源代码。
请耐心等待续篇 (Chatper 2 - Registering Command 加入指令)