文章目录
- 我的世界Bukkit插件开发【自定义命令】(spogit核心)
- 前言
- 一、自定义命令
-
- 1. 创建一个插件项目
- 2.配置命令
- 二、自定义命令执行器对象
-
- 1. CommandExecutor 接口
-
- 1.1 onCommand 方法
- 1.2 代码如下
- 2.自定义执行器
- 三、注册命令
-
- 1.在插件中注册命令对象
- 四、插件打包
- 五、运行插件
- 总结
我的世界Bukkit插件开发【自定义命令】(spogit核心)
前言
- 本章实现完成【自定义命令-获取一把钻石剑】
- 基于Spigot核心的插件开发
- 前置开发工具:IDEA
- JDK环境-JKD-17
- 构建工具:maven
- 必备idea插件:Minecraft Development
- 服务器核心: Spigot-1.20.jar
- mc客户端
- 小部分内容来自AI大模型,如需深入,请联系博主或自行了解
- 持续更新中…
一、自定义命令
通过bukkit插件,注册一个命令
1. 创建一个插件项目
打开idea – new project 选择Minecraft-填写项目信息,我是在原有的项目上新增了一个新的module,实际是一样的 没有Minecraft选项的需要下载idea插件 Minecraft Development,可以看下前面的章节 创建完成后项目结构如下
查看主类信息 onEnable 插件开启时执行(注册事件监听器、注册命令、初始化数据等) onDisable 插件关闭时执行(关闭资源、处理结束数据等)
package com.shunxin;
import org.bukkit.plugin.java.JavaPlugin;
public final class GenerateDiamondSword extends JavaPlugin {
@Override
public void onEnable() {
// Plugin startup logic
}
@Override
public void onDisable() {
// Plugin shutdown logic
}
}
查看plugin.yml文件
name: GenerateDiamondSword
version: '1.0'
main: com.shunxin.GenerateDiamondSword
api-version: '1.20'
authors: [ shuxnin ]
description: 获取一把钻石剑
2.配置命令
在plugin.yml文件中定义命令配置。 配置如下,命令的名称为:generateDiamondSword ,玩家需要输入 /generateDiamondSword
name: GenerateDiamondSword
version: '1.0'
main: com.shunxin.GenerateDiamondSword
api-version: '1.20'
authors: [ shuxnin ]
description: 获取一把钻石剑
commands:
generateDiamondSword:
description: 生成一个钻石剑
usage: /generateDiamondSword
二、自定义命令执行器对象
在bukkit插件开发中,自定义一个命令,需要实现 CommandExecutor 接口,并重写接口的 onCommand方法
1. CommandExecutor 接口
ommandExecutor 是一个接口,属于 org.bukkit.command 包,用于处理玩家输入的命令。当插件需要响应特定的命令时,需要创建一个类实现这个接口。 CommandExecutor 接口中包含一个核心方法 onCommand,该方法会在玩家执行命令时被调用
1.1 onCommand 方法
onCommand:这个方法入参包含四个参数,返回值为布尔值类型,代表成功或失败
- CommandSender sender:命令的发送者,可以是玩家、控制台或其他
- Command command:被执行的命令对象
- String label:使用的命令别名
- String[] args:传递的命令参数,不包含命令主体
1.2 代码如下
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
return false;
}
2.自定义执行器
在主类目录下建立一个包 命名为 commands ,创建类GenerateDiamondSwordCms符合Java规范即可 GenerateDiamondSwordCms类需要实现CommandExecutor接口并重写onCommand方法 代码如下
package com.shunxin.commands;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
/**
* @version 1.0
* @ClassName GenerateDiamondSwordCms
* @Author huitailang
* @Description 生成一个钻石剑 -命令
*/
public class GenerateDiamondSwordCms implements CommandExecutor {
@Override
public boolean onCommand(CommandSender commandSender, Command command, String label, String[] args) {
// 判断命令和发送对象
if (command.getName().equalsIgnoreCase("generateDiamondSword")
&& commandSender instanceof Player) {
commandSender.sendMessage("正在生产一把钻石剑…");
// 创建钻石剑
_generate((Player) commandSender);
return true;
}
return false;
}
private void _generate(Player player) {
// 定义钻石剑
ItemStack sword = new ItemStack(new ItemStack(Material.DIAMOND_SWORD, 1));
// 获取玩家物品栏
PlayerInventory inventory = player.getInventory();
inventory.addItem(sword);
// 提示玩家
player.sendMessage("你获得了一把钻石剑");
}
}
三、注册命令
1.在插件中注册命令对象
在插件主类中的 onEnable方法中注册,增加一个提示
@Override
public void onEnable() {
// 设置插件开启提示
CommandSender sender = Bukkit.getConsoleSender();
sender.sendMessage("generateDiamondSword 命令已部署");
// Plugin startup logic
getCommand("generateDiamondSword").setExecutor(new GenerateDiamondSwordCms());
}
四、插件打包
使用maven进行打包,打包后生成target目录,详细操作及介绍前章节有,不做多复述
五、运行插件
将打包后的GenerateDiamondSword-1.0.jar 文件放到服务器中的plugins文件夹中,启动服务器 输入命令: generateDiamondSword
本章完
总结
提示:本章小结:持续更新中…… 【文章实现总结】 实现自定义命令并完成指定效果 如果对您有帮助,别忘了收藏点赞评论留言,有问题评论区回答,后续继续更新插件相关文章
评论前必须登录!
注册