世间的很多事物,追求时候的兴致总是要比享用的时候的兴致浓烈。——莎士比亚《威尼斯商人》

这两天入门bukkit踩了不少坑

写篇搭建开发环境

首先需要idea和一个服务器核心

服务器核心点我下载

我还在安装idea。。。

image-20201005150824186

打开idea,点击右下角的Configure,选择Plugins

image-20201005151412007

搜索Minecraft Development点击install

image-20201005151444301

顺便下载了ChineseTranslation以及Camelcase(可选,单纯个人习惯)

安装好了重启idea

然后创建新项目

image-20201005152003931

可以看到左边的Minecraft,点击,然后勾选上Bukkit Plugin,点击下一步

image-20201005152514822

输入GroupIdArtifactId并点击下一步

image-20201005152624582

然后继续Next,注意我们这里选的版本是1.15.2

image-20201005153229733

填入Project name,点击Finish

image-20201005153257431

然后稍加等待,下载依赖

image-20201005153656838

然后我们点右上角的项目运行配置,选择第一个

image-20201005154037258

image-20201005154107945

点击加号

image-20201005154123783

选择JAR应用程序

image-20201005154207324

点击Path to JAR右边的文件夹

image-20201005154253606

找到我们最开始下载的spigot-1.15.2.jar,点击确定

image-20201005154439926

然后点击执行前右边的加号

image-20201005154515245

选择运行Maven目标

image-20201005154532601

输入,点击确定

1
clean package

image-20201005154623716

最后在项目根目录下的pom.xml中配置

1
<outputDirectory>${session.executionRootDirectory}/plugins/</outputDirectory>

image-20201005154827826

点击右上角重新加载maven后这时候我们点击运行

image-20201005154949882

然后可以看到这么一段

image-20201005155026866

我们打开上面生成的eula.txt,把false改成true

image-20201005155058138

然后打开server.propertiesonline-mode改为false

image-20201005155241947

好了后我们再次启动,可以看到服务器开启了

image-20201005155401667

我们进入游戏

点击多人游戏

image-20201005155508173

点击添加服务器

image-20201005155542820

输入,点击完成

localhost:25565

image-20201005155615276

可以看到服务器状态良好

image-20201005155639547

双击进去,发现一切正常

image-20201005155718886

那么我们来写一个非常简单的laugh命令插件,游戏中玩家输入/laugh,然后系统向玩家发送一条消息为“哈哈哈”

首先到HelloBukkit.java中按ALT+INSERT点击重写onCommand方法

image-20201005160025955

然后开始编写代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package hellobukkit.hellobukkit;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public final class HelloBukkit extends JavaPlugin {

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

}

@Override
public void onDisable() {
// Plugin shutdown logic
}

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (command.getName().equalsIgnoreCase("laugh")) {
if (!(sender instanceof Player)) {
sender.sendMessage("你不是玩家");
return false;
}
sender.sendMessage("哈哈哈");
return true;
}
return false;
}
}

然后写完了需要到plugin.yml中配置一下

image-20201005160529117

1
2
3
4
5
6
7
8
9
name: HelloBukkit
version: ${project.version}
main: hellobukkit.hellobukkit.HelloBukkit
api-version: 1.15
commands:
laugh:
description: Laugh out loudly!
usage: /laugh

然后我们运行

游戏中输入/laugh

image-20201005160951703

发现插件运行成功!

如果我们在控制台中试图运行该命令

可以看到返回结果也是正常

image-20201005161153101