一、指令注册
这是一个几乎每个插件都需要的部分,让我们看看吧~
LiteLoaderBDS2.0的指令系统有特别支持吗?
- OOP接口
- 也就是圈内所谓的真指令注册
- 命令方块可执行
- 与BDS原版指令无不同
大概原理:实现一个新命令是继承Command,每次这个命令执行的时候BDS会调用该命令类的execute
在setup中实现命令注册,首先是注册命令说明(就是所谓的假指令)
接下来给这个假指令overload加命令选项枚举之类的东西(变成了所谓的真指令)
1.让我们先从最简单的指令开始吧
首先打开我们的开发模板,如果你不知如何布置开发模板,请看上一篇文章(快捷传送)
- 添加LL封装的指令API
#include <RegCommandAPI.h>
- 按照下面代码(复制粘贴)写到你的模板中
class HelloWorldCommand : public Command {
public:
void execute(CommandOrigin const& ori, CommandOutput& output) const override {//执行部分
}
static void setup(CommandRegistry* registry) {//注册部分(推荐做法)
}
};
- 随后就可以开始注册你的第一个指令了
registry->registerCommand("hellobds","Hello World",CommandPermissionLevel::Any, {(CommandFlagValue)0},{(CommandFlagValue)0x80});
registerCommand参数解析:
- 注册的指令
- 指令介绍(提示信息)
- 使用该指令的权限(ANY为所有玩家,GameMasters为游戏管理员,Console为控制台)
- 照填0
- 是否作弊启用(0未开启作弊的情况下不可用,0x80为未开启作弊也可用)
- 接下来为指令添加Overload(指令重载)
registry->registerOverload<HelloWorldCommand>("hellobds");
注意:即使没有参数也需要注册重载!
- 上半部分完整指令如下
#include "pch.h"
#include <EventAPI.h>//监听API
#include <LoggerAPI.h>//日志API
#include <LLAPI.h>//LLAPI
#include <RegCommandAPI.h>//指令注册API
Logger logger("RegLLComand");//Log名称
class HelloWorldCommand : public Command {
public:
void execute(CommandOrigin const& ori, CommandOutput& output) const override {//执行部分
}
static void setup(CommandRegistry* registry) {//注册部分(推荐做法)
registry->registerCommand("hellobds", "Hello World", CommandPermissionLevel::Any, { (CommandFlagValue)0 }, { (CommandFlagValue)0x80 });
registry->registerOverload<HelloWorldCommand>("hellobds");
}
};
void PluginInit()//初始化函数
{
LL::registerPlugin("PluginName", "Introduction", LL::Version(1, 0, 0));//注册插件
logger.info("Loaded");
}
- 然后在execute中添加当执行该指令时,会触发什么。(例如往控制台与游戏内同时输出hello world)详解看下面示例代码注释~
void execute(CommandOrigin const& ori, CommandOutput& output) const override {//执行部分
ServerPlayer* player = ori.getPlayer();//通过指令来源,获取玩家指针
if (player->isPlayer()) {//判断是否是玩家(也可能是控制台,命令方块,NPC执行,因此需要判断)
player->sendText("Hello World");//向玩家发送一个Text文本在聊天栏
}
logger.info("Hello World");//往控制台输出字符串
return;
}
- 这就完了吗?那可大错特错了,你还没真正意义上的注册指令呢
- 你还需要注册添加一个指令注册的事件,并且执行HelloWorldCommand的setup
void PluginInit()//初始化函数(可自定义函数名)
{
LL::registerPlugin("PluginName", "Introduction", LL::Version(1, 0, 0));//注册插件
logger.info("Loaded");
Event::RegCmdEvent::subscribe([](Event::RegCmdEvent ev) { //注册指令事件
HelloWorldCommand::setup(ev.mCommandRegistry);
return true;
});
}
- 完整代码如下
#include "pch.h"
#include <EventAPI.h>//监听API
#include <LoggerAPI.h>//日志API
#include <LLAPI.h>//LLAPI
#include <RegCommandAPI.h>
#include <MC/ServerPlayer.hpp>
Logger logger("RegLLComand");//Log名称
class HelloWorldCommand : public Command {
public:
void execute(CommandOrigin const& ori, CommandOutput& output) const override {//执行部分
ServerPlayer* player = ori.getPlayer();//通过指令来源,获取玩家指针
if (player->isPlayer()) {//判断是否是玩家(也可能是控制台,命令方块,NPC执行,因此需要判断)
player->sendText("Hello World");//向玩家发送一个Text文本在聊天栏
}
logger.info("Hello World");//往控制台输出字符串
return;
}
static void setup(CommandRegistry* registry) {//注册部分(推荐做法)
registry->registerCommand("hellobds", "Hello World", CommandPermissionLevel::Any, { (CommandFlagValue)0 }, { (CommandFlagValue)0x80 });
registry->registerOverload<HelloWorldCommand>("hellobds");
}
};
void PluginInit()//初始化函数(可自定义函数名)
{
LL::registerPlugin("PluginName", "Introduction", LL::Version(1, 0, 0));//注册插件
logger.info("Loaded");
Event::RegCmdEvent::subscribe([](Event::RegCmdEvent ev) { //注册指令事件
HelloWorldCommand::setup(ev.mCommandRegistry);
return true;
});
}
- 现在你可以编译你的插件,进入到游戏实测啦,执行结果如下


2.注册一个带参数的指令(给自己修改,移除自定义NameTag)
休息ing,明日接着~
文章评论
Смотреть онлайн фильм бесплатно -
смотреть онлайн в hd 720p качестве
видео.. Доступ <a href="http://bit.ly/zhiza-2022">Смотреть Жиза</a>.
Смотреть фильм онлайн в хорошем
качестве HD - приятного просмотра.
<a href="https://propranolol.boutique/">propranolol pill cost</a>
My brother suggested I would possibly like this website. He was totally right.
This publish actually made my day. You cann't
consider simply how a lot time I had spent for this info!
Thanks!
Hey there! Do you use Twitter? I'd like to follow you if that would
be okay. I'm definitely enjoying your blog and look forward to new posts.
Hello there, just became alert to your blog through Google, and
found that it's truly informative. I am gonna watch out for brussels.
I'll appreciate if you continue this in future. Numerous people will be benefited from your writing.
Cheers!
Just wish to say your article is as astounding. The clarity on your post is simply nice and i could suppose you are knowledgeable on this subject.
Well with your permission allow me to seize your feed to keep up to date with
approaching post. Thanks a million and please continue the rewarding work.
Keep this going please, great job!
<a href="http://retinoa.shop/">retino 0.25</a>
Смотреть порно бесплатно категории
онлайн шд:. Вот <a href="https://bit.ly/film-tor-4-tor-2022">Тор Любовь и гром 2022 года</a>.
Смотреть фильмы онлайн. Вся информация о фильмах
и сериалах.
How do I shorten a URL for free? <a href="http://google.com/url?q=https://bit.ly">bit.ly</a>
How do I shorten a URL for free? <a href="http://images.google.ps/url?q=https://bit.ly/">bit.ly</a>
How do I shorten a URL for free? <a href="http://www.livebar.de/url?q=https://bit.ly/">bit.ly</a>
Смотреть онлайн, фильм 2022 года.
Онлайн.. Доступ <a href="https://tinyurl.com/2acjpbb6">фильмы онлайн бесплатно и регистрации</a>.
Буду смотреть. Видео: Анимационный, Комедия.
Смотреть онлайн. Фильмы онлайн высокого качества
(HD, 720p). По ссылке <a href="http://bit.ly/tor-lyubov-i-grom">тор любовь и гром на английском смотреть</a>.
Буду смотреть. Лучшие фильмы и сериалы
Посмотреть онлайн фильма, русская озвучка..
Открыто <a href="https://tinyurl.com/27ecmwdq">бесплатное кино</a>.
Смотреть видео: Смотреть популярное видео подряд любой длительности.
Видео: Комедия, Россия, 2022. Открыто
<a href="http://bit.ly/smotret-onlayn-v-khoroshem-kachestve-besplatno-filmy">смотреть онлайн в хорошем качестве бесплатно фильмы</a>.
Кино — Смотреть онлайн: Фильм.
Смотреть видео онлайн - Вся информация о фильмах и сериалах..
Здесь <a href="http://tinyurl.com/24avl6f7">много кино смотреть онлайн бесплатно</a>.
Смотреть лучшие фильмы онлайн в хорошем HD качестве.
<a href="http://youtu.be/pa1USenOB4w">what is donetsk</a>
<a href="https://www.youtube.com/user/SuperSharij/videos">україна 2025</a>
<a href="https://bit.ly/3OWWVxB">Вышка</a>