轻语

  • 首页
  • 分享
  • 技术
  • 生活
  • 插件
QingYu
分享美好生活
  1. 首页
  2. 技术
  3. 正文

使用LiteLoaderBDS2.0编写MCBE插件-2

2021年12月31日 4515点热度 3人点赞 222条评论

一、指令注册

这是一个几乎每个插件都需要的部分,让我们看看吧~

LiteLoaderBDS2.0的指令系统有特别支持吗?

  1. OOP接口
  2. 也就是圈内所谓的真指令注册
  3. 命令方块可执行
  4. 与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参数解析:

  1. 注册的指令
  2. 指令介绍(提示信息)
  3. 使用该指令的权限(ANY为所有玩家,GameMasters为游戏管理员,Console为控制台)
  4. 照填0
  5. 是否作弊启用(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;
        });
}
  • 现在你可以编译你的插件,进入到游戏实测啦,执行结果如下
游戏内玩家执行/hellobds
控制台

2.注册一个带参数的指令(给自己修改,移除自定义NameTag)

休息ing,明日接着~

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2021年12月31日

ADMIN

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

  • Смотреть Жиза

    Смотреть онлайн фильм бесплатно -
    смотреть онлайн в hd 720p качестве
    видео.. Доступ <a href="http://bit.ly/zhiza-2022">Смотреть Жиза</a>.
    Смотреть фильм онлайн в хорошем
    качестве HD - приятного просмотра.

    2022年6月25日
    回复
  • Michaelked

    <a href="https://propranolol.boutique/">propranolol pill cost</a>

    2022年6月26日
    回复
  • instagram izlenme satın al

    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!

    2022年6月26日
    回复
  • instagram takipçi satın al

    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.

    2022年6月26日
    回复
  • instagram türk takipçi satın al

    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!

    2022年6月26日
    回复
  • E Sigara

    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.

    2022年6月26日
    回复
  • Elektronik sigara

    Keep this going please, great job!

    2022年6月26日
    回复
  • Miawopay

    <a href="http://retinoa.shop/">retino 0.25</a>

    2022年6月27日
    回复
  • людей
    2022年6月27日
    回复
  • Тор Любовь и гром 2022 года

    Смотреть порно бесплатно категории
    онлайн шд:. Вот <a href="https://bit.ly/film-tor-4-tor-2022">Тор Любовь и гром 2022 года</a>.
    Смотреть фильмы онлайн. Вся информация о фильмах
    и сериалах.

    2022年6月28日
    回复
  • bit.ly

    How do I shorten a URL for free? <a href="http://google.com/url?q=https://bit.ly">bit.ly</a&gt;

    2022年6月28日
    回复
  • bit.ly

    How do I shorten a URL for free? <a href="http://images.google.ps/url?q=https://bit.ly/">bit.ly</a&gt;

    2022年6月28日
    回复
  • bit.ly

    How do I shorten a URL for free? <a href="http://www.livebar.de/url?q=https://bit.ly/">bit.ly</a&gt;

    2022年6月28日
    回复
  • фильмы онлайн бесплатно и регистрации

    Смотреть онлайн, фильм 2022 года.
    Онлайн.. Доступ <a href="https://tinyurl.com/2acjpbb6">фильмы онлайн бесплатно и регистрации</a>.
    Буду смотреть. Видео: Анимационный, Комедия.

    2022年6月30日
    回复
  • тор любовь и гром на английском смотреть

    Смотреть онлайн. Фильмы онлайн высокого качества
    (HD, 720p). По ссылке <a href="http://bit.ly/tor-lyubov-i-grom">тор любовь и гром на английском смотреть</a>.
    Буду смотреть. Лучшие фильмы и сериалы

    2022年7月1日
    回复
  • бесплатное кино

    Посмотреть онлайн фильма, русская озвучка..
    Открыто <a href="https://tinyurl.com/27ecmwdq">бесплатное кино</a>.
    Смотреть видео: Смотреть популярное видео подряд любой длительности.

    2022年7月1日
    回复
  • смотреть онлайн в хорошем качестве бесплатно фильмы

    Видео: Комедия, Россия, 2022. Открыто
    <a href="http://bit.ly/smotret-onlayn-v-khoroshem-kachestve-besplatno-filmy">смотреть онлайн в хорошем качестве бесплатно фильмы</a>.

    Кино — Смотреть онлайн: Фильм.

    2022年7月1日
    回复
  • много кино смотреть онлайн бесплатно

    Смотреть видео онлайн - Вся информация о фильмах и сериалах..

    Здесь <a href="http://tinyurl.com/24avl6f7">много кино смотреть онлайн бесплатно</a>.
    Смотреть лучшие фильмы онлайн в хорошем HD качестве.

    2022年7月2日
    回复
  • what is donetsk

    <a href="http://youtu.be/pa1USenOB4w">what is donetsk</a>

    2022年7月3日
    回复
  • україна 2025

    <a href="https://www.youtube.com/user/SuperSharij/videos">україна 2025</a>

    2022年7月3日
    回复
  • Вышка

    <a href="https://bit.ly/3OWWVxB">Вышка</a&gt;

    2022年7月3日
    回复
  • 加载更多
    取消回复

    ADMIN

    这个人很懒,什么都没留下

    归档
    • 2022年3月
    • 2021年12月
    • 2021年6月
    • 2021年5月
    • 2021年4月
    最新 热点 随机
    最新 热点 随机
    BETweaker开发日志2 BETweaker开发日志1 使用LiteLoaderBDS2.0编写MCBE插件-2 使用LiteLoaderBDS2.0编写MCBE插件-1 狂野工艺行为包 CustomMap - 自定义地图[1.16.221]
    狂野工艺行为包 使用LiteLoaderBDS2.0编写MCBE插件-2 BETweaker开发日志1 BETweaker开发日志2 HologramGlows - 全息文本[1.16.221] CustomMap - 自定义地图[1.16.221]
    标签聚合
    Minecraft
    网站统计
    • 0
    • 72
    • 34
    • 399
    • 97
    • 365,652
    • 30,939
    • 8,012
    • 7
    • 2022年3月19日

    COPYRIGHT © 2022 轻语. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang