Bukkit插件开发教程

简介

第一次接触Minecraft已经是七年前的事情了,刚开始玩这个游戏的时候我还什么都不会做,连树都不会撸。但是这个游戏确实让我十分沉迷,它让我体验到了创造的乐趣。
我曾经加入过两个服务器,和我的朋友在这个游戏里度过了一段愉快的时光。但它们最后都关服了,于是我决定开始自己做一个服务器。花了些许时间学会了如何启动bukkit服务端,如何去网上搜寻并安装、配置一个插件。我相信能看到这篇文章的人,大都体验过那种创造出一个世界的成就感。
只是,那时的我仍然不能满足于当下。我希望我的服务器能够更加有特色,因此我不得不去寻找一些网上不太常见的插件,来让我的服务器显得更加与众不同。再后来我转念一想:“何不自己去学着写插件呢?”
而后经历了很长一段时间,一直都在技术上摸索着,四处碰壁,直到今天也仍是如此。我感受过在未知的领域中探索的那种虚无感,也深知要想在这条路上走的长远就必须去挑战困难。因此我写下这篇教程,意图在一个大的范围内指点方向,但是更细枝末节的地方则要求读者必须学会独立解决。

即使现在已经很少再去玩这款游戏,但我依旧是一名创造者。

你在这里学到的Java知识也许不能用来应聘企业开发人员,但是拿来写bukkit插件绝对够用!
如果您在我的教程中发现了任何问题,请立即与我联系,我将会在最短的时间内修正它!
最后更新于:2019年6月18日04:57:52


(我当初为什么要作死开这么个巨坑呢……)

**↑不来一首BGM吗?**

前言

在教程开始之前,我希望同学们能够善于思考,遇到问题多想一想“为什么?”,而不要只追求答案“怎么做?”,虽然答案也同样很重要。

搜索引擎是一个强大的工具,请不要忽视它的力量,它往往能在最短的时间内给你带来你想要的答案,前提是你要知道如何使用它。
举个例子:老师给你布置了一个作业,要求程序接受三个数字输入,并输出这三个数字的平均值
你现在知道怎么让你的程序存储三个数字(int a,b,c;),也知道怎么求他们的平均值(int avg = (a+b+c) / 3.0;),更清楚怎么输出计算后的结果(System.out.println(avg);


你唯一的问题就是,不清楚自己应该如何从外部读取这三个数字。
有人会选择去寻找帮助:“大佬,怎么让程序输入三个数字输出他们的平均数啊?”
也有人清晰地知道自己想要什么:“大佬,怎么让程序读取外部输入的数字啊?”
也有人决定不去麻烦别人:百度一下:Java 输入数字
最终他筛选资料,找到了这一篇回答
于是他独立的完成了自己的作业


1
2
3
4
5
6
7
8
9
10
11
12
13
14
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
System.out.println("请输入三个数字: ");
Scanner sc = new Scanner(System.in);
int a,b,c;
a = sc.nextInt();
b = sc.nextInt();
c = sc.nextInt();
int avg = (a+b+c) / 3.0;
System.out.println(avg);
}
}

当然,这只是一个简单的例子。实际情况也许更加复杂。但是不论遇到什么情况,我希望大家都能够独立思考,发现自己的问题,并通过自己的途径去解决它,不要总是一味地去抱大佬的腿。(会被嫌弃的
至此,我们的教程正式开始。

准备工作环境

在正式编写代码之前,我们可能需要为电脑做一些准备工作:

下载安装并配置JDK

请百度: “jdk下载”
以及: “jdk环境变量配置”

准备IDE

集成开发环境(Integrated Development Environment)简称IDE,虽然听起来很高大上,但其实只不过是一个辅助你编写代码的工具而已。一般IDE都有代码纠错,代码修正,代码补全,自动编译等等功能,可以为你提高不少工作效率。让你免去了那些复杂的文字处理问题,把工作重心放在编码本身,因为这才是我们需要处理的主要工作。
用于写Java的IDE有许多,其中比较出名的有三个:
Eclipse:Eclipse是一个十分强大的由开源社区提供的IDE,自带官方中文,这个中文需要自己安装中文插件包,比较麻烦……
NetBeans:由Oracle官方支持的IDE,功能上比Eclipse略逊一筹,但是自带官方中文,一键安装之后打开即可看到中文界面。(而且国内大多数计算机考试都是以NetBeans为官方指定编译器
IntelliJ IDEA:人类文明中最强大的Java IDE,没有之一(不接受反驳)。缺点就是没有官方中文,在使用熟练了之后你就会发现IDEA真正的实力。
(本教程使用IDEA进行代码编写工作,除此之外不讲解IDE有关的任何问题

Java语言基础

Java语言初级内容

Java语言高级进阶

  • 多线程
  • 反射
  • 枚举与泛型
  • 网络通信

Java语言其他资源

编程原则
Nashorn的使用方法

你可以查看 这篇文章 来了解如何获得 spigot/craftbukkit 服务端核心文件

Bukkit插件基础

练习答案

其他资源

仓鼠的插件开发笔记
ItemMeta 的使用说明
ProtocolLib 通信控制
Spigot doc
Bukkit doc 中文版
ProtocolLib doc
Vault doc

结束

感谢各位的阅读!

人生不易,仓鼠断气