轻语

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

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

2021年12月30日 492点热度 1人点赞 1条评论

一、什么是LiteLoader2.0?

LiteLoader是为基岩版官方服务端Bedrock Dedicated Server提供底层API支持的插件加载器,提供BDS底层海量的API接口、大量封装好的实用接口、丰富的事件系统和强大的底层接口支持。

通过使用C++、Golang等语言编写插件,开发者可以方便地对 BDS 进行功能拓展与特性定制,容易上手,并且具有极高的灵活性。

二、配置开发环境

1.安装Visual Studio

  • 前往Visual Studio官网,下载VS2022社区版
  • 进入安装界面,选择 使用C++的桌面开发 ,然后点击右下角安装即可。

2.下载开发模板

  • 本篇文章使用LiteLDev所提供的开发模板进行教学,前往Github下载(点我)
  • 你可以直接下载ZIP,也可以克隆的本地(推荐使用GitHub Desktop)
  • 解压压缩包,随后打开Template.sln,按箭头打开。
  • 完成上面所以步骤,恭喜你完成了开发环境的布置~

三、编写一个简单的插件(攻击生物控制台输出LOG)

1.添加玩家攻击监听

#include "pch.h"
#include <EventAPI.h>//监听API
#include <LoggerAPI.h>//日志API
#include <LLAPI.h>//LLAPI

Logger logger("AttackLog");//Log名称

void PluginInit()
{
	LL::registerPlugin("PluginName", "Introduction", LL::Version(1, 0, 0));//注册插件
    logger.info("Loaded");//加载提示
    Event::PlayerAttackEvent::subscribe([](const Event::PlayerAttackEvent& ev) {//监听PlayerAttackEvent(玩家攻击监听)
        return true;
        });
}

2.控制台输出

  • 由于我们需要监听玩家攻击的生物,但是现在我们缺少了生物和玩家的头文件,所以需要我们添加进去。
#include <MC/Player.hpp>//玩家相关API
#include <MC/Actor.hpp>//生物相关API
  • 随后我们从通过玩家攻击事件获取玩家与生物指针
Player* Player = ev.mPlayer;//获取触发监听的玩家
Actor* actor = ev.mTarget;//获取被玩家攻击的生物
  • Actor与Player的头文件包含了大量的API,现在我们来获取玩家的名字与被攻击生物的类型、坐标、维度。
string playerName = Player->getRealName();//获取玩家真实名称
string actorType = actor->getTypeName();//获取被攻击的生物类型
Vec3 pos = actor->getPos();//获取被攻击的生物的坐标
string posStr = pos.toString();//将Vec3转换为字符串
int dimId = actor->getDimensionId();//获取被攻击的生物的维度
  • 大功告成了,让我们输出到控制台吧,LL本体已封装了一套完整的Logger系统(Logger.h)
logger.info(u8"玩家:{} 攻击了 {} | 坐标 {} 维度 {}",playerName, actorType, posStr, dimId);//输出LOG
  • 下面是Plugin.cpp的完整代码
#include "pch.h"
#include <EventAPI.h>//监听API
#include <LoggerAPI.h>//日志API
#include <LLAPI.h>//LLAPI
#include <MC/Player.hpp>//玩家相关API
#include <MC/Actor.hpp>//生物相关API
Logger logger("AttackLog");//Log名称

void PluginInit()//初始化函数(可自定义函数名)
{
	LL::registerPlugin("PluginName", "Introduction", LL::Version(1, 0, 0));//注册插件
    logger.info("Loaded");//加载提示
    Event::PlayerAttackEvent::subscribe([](const Event::PlayerAttackEvent& ev) {//监听PlayerAttackEvent(玩家攻击监听)
        Player* Player = ev.mPlayer;//获取触发监听的玩家
        Actor* actor = ev.mTarget;//获取被玩家攻击的生物
        string playerName = Player->getRealName();//获取玩家真实名称
        string actorType = actor->getTypeName();//获取被攻击的生物类型
        Vec3 pos = actor->getPos();//获取被攻击的生物的坐标
        string posStr = pos.toString();//将Vec3转换为字符串
        int dimId = actor->getDimensionId();//获取被攻击的生物的维度
        logger.info(u8"玩家:{} 攻击了 {} | 坐标 {} 维度 {}",playerName, actorType, posStr, dimId);//输出LOG
        return true;//返回值 false为拦截,true反之。
        });
}
  • 是不是觉得这么简单的功能写了这么长,当你熟练后差不多就是下面的情况
#include "pch.h"
#include <EventAPI.h>//监听API
#include <LoggerAPI.h>//日志API
#include <LLAPI.h>//LLAPI
#include <MC/Player.hpp>//玩家相关API
#include <MC/Actor.hpp>//生物相关API
Logger logger("AttackLog");//Log名称

void PluginInit()//初始化函数(可自定义函数名)
{
	LL::registerPlugin("PluginName", "Introduction", LL::Version(1, 0, 0));//注册插件
    logger.info("Loaded");//加载提示
    Event::PlayerAttackEvent::subscribe([](const Event::PlayerAttackEvent& ev) {//监听PlayerAttackEvent(玩家攻击监听)
        Actor* actor = ev.mTarget;
        logger.info(u8"玩家:{} 攻击了 {} | 坐标 {} 维度 {}", ev.mPlayer->getRealName(), actor->getTypeName(), actor->getPos().toString(), std::to_string(actor->getDimensionId()));//输出LOG
        return true;//返回值 false为拦截,true反之。
        });
}

3.编译与使用插件

  • 右键项目,点击生成
  • 随后会弹出如下框
  • 根据提示选择你的BDS目录(安装了LiteLoaderBDS的)编译完成如下提示,并找到输出目录
  • 将生成的Template.dll移动到BDS目录下plugins文件夹中

三、测试插件

点击bedrock_server_mod.exe开服,出现箭头指示信息,证明加载成功!

  • 进入你的服务器,攻击一个生物,控制台如下

恭喜你,完成了你的第一个LiteLoader2.0插件~

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

ADMIN

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

点赞
< 上一篇
下一篇 >

文章评论

  • Jbbwwy

    pregabalin 75mg generic - lyrica for sale online buy pregabalin 75mg online cheap

    2022年3月15日
    回复
  • 取消回复

    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]
    HologramGlows - 全息文本[1.16.221] BETweaker开发日志2 CustomMap - 自定义地图[1.16.221] BETweaker开发日志1 狂野工艺行为包 使用LiteLoaderBDS2.0编写MCBE插件-2
    标签聚合
    Minecraft
    网站统计
    • 1
    • 89
    • 38
    • 399
    • 97
    • 365,669
    • 30,943
    • 897
    • 7
    • 2022年3月19日

    COPYRIGHT © 2022 轻语. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang