Spigot插件开发, 使用IDEA初始化maven项目并完成简单的世界保护功能 (Spigot开发笔记-1)

2023-11-11

笔记提要

这篇笔记是 quantumBreak RPG 服务器的开发全记录,并在过程中提供一些 Spigot 插件开发的思路和不完全指北,以下是我的开发环境,希望您能通过本篇指南抛砖引玉,制作出属于您的优秀服务器!

开发环境

  • 开发版本:Spigot 1.14.4 非paper等plus端
  • 游戏版本:MineCraft 1.14.4 + forge 安装小地图和 WorldEdit 可视化
  • 插件开发:IDEA 社区版 (小MacAir只有8G,节省内存)
  • 文本编辑:Visual Studio Code

其他插件或者使用到的工具, 在开发过程中将会进行进一步介绍。

初始化项目

1. 安装 IDEA 中 MineCraft 开发辅助插件

您可以打开IDEA的插件页面,找到MineCraft打头的下载量最多的插件,安装这个可以让您更方便的创建项目,我们的项目也基于这个插件进行开发。

2. 利用插件创建 Spigot 项目

在您安装完插件后,新建项目就可以看到左边有 Minecraft 类型的选项了,选择 Minecraft 之后,下一步选择 Spigot Plugin,接下来就开始创建 Spigot 项目了。

3. 填写 Spigot 项目初始化选项

注意到 groupIDartifactID ,您可以将您的用户名填作 groupID,将您的插件名填为 artifactID。并且选择插件的构建工程为 maven

4. 填写 bukkit.yml 选项

在您完成了 groupID 和 artifactID 的填写并进入下一步,这里将要求您完善 bukkit.yml 中的内容,只需要填写 插件主类插件主类包的路径 即可完成,注意在右下角选择您的服务器版本,我这里是 1.14.4

5. 完成创建

完成项目创建后, 点击 maven 更新项目依赖项即可完成项目初步部署。

初始化插件代码

Mocore.java

在你的主类中写入这样的代码,一个可以运行的插件就完成了,接下来将 编译输出 部署进工件里完成打包,就可以放入服务端的 plugins 文件夹进行加载了。

public final class Mocore extends JavaPlugin {

    public static Plugin pluginInstance;

    @Override
    public void onEnable() {
        pluginInstance = this;
    }
}

Blockguard.java

新建一个 Blockguard.java,载入下面的内容,这就是一个可以用于避免玩家破坏方块的监听器,并具有OP和例外功能。其核心在于创建一个 @EventHandler

public class Blockguard implements Listener {
    public static boolean cancelledPlayerInteract = true;
    public static boolean cancelledAdminInteract = true;
    public static List<String> allowedBlockList = Collections.singletonList("ENDER_CHEST");

    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent event) {
        boolean isOpPlayer = event.getPlayer().isOp();
        String eventBlockName = Objects.requireNonNull(event.getClickedBlock()).getBlockData().getMaterial().name();
        boolean isAllowedBlock = allowedBlockList.contains(eventBlockName);

        if (isAllowedBlock) {
            return;
        }
        if (isOpPlayer) {
            event.setCancelled(cancelledAdminInteract);
            Message.broadcast(eventBlockName);
            return;
        }
        event.setCancelled(cancelledPlayerInteract);
    }
}

注册 EventListener

在插件 onEnable 方法中写入下面的代码就可以注册事件。

PluginManager pluginManager = pluginInstance.getServer().getPluginManager();
pluginManager.registerEvents(listener, pluginInstance);

下面是我的注册方式:

public static void easyRegisterEvent(Listener listener) {
    PluginManager pluginManager = pluginInstance.getServer().getPluginManager();
    pluginManager.registerEvents(listener, pluginInstance);
}

// 在初始化时
RegisterEvent.easyRegisterEvent(new Blockguard());

验收效果

通过创建工件打包成 .jar 就完成了初始化工作,接下来将打包出来的 .jar 放到你的服务端文件夹 plugins 中并在服务器中输入 /reload 进行重载就可以看到效果了~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spigot插件开发, 使用IDEA初始化maven项目并完成简单的世界保护功能 (Spigot开发笔记-1) 的相关文章

随机推荐