From 846575f83dedb21c44dad8a55cf40afafd29b707 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=90=E6=B2=90=E5=91=80?= <163636894+zimuya4153@users.noreply.github.com> Date: Sun, 12 Jan 2025 20:32:24 +0800 Subject: [PATCH] adapt: adapt LeviLamina 1.0.0-rc.3 --- lib/GMLIB_API-JS.d.ts | 6 ---- lib/GMLIB_API-JS.js | 22 ------------- manifest.json | 2 +- src/BinaryStreamApi.cpp | 2 +- src/CompatibilityApi.cpp | 67 +++++++++++++++++++++++----------------- src/Entry.cpp | 15 +++++---- src/Entry.h | 5 ++- src/EventAPI.cpp | 28 ++++++++--------- src/Global.h | 2 -- src/LegacyModApi.cpp | 6 ++-- src/MemoryOperators.cpp | 2 +- tooth.json | 6 ++-- xmake.lua | 45 ++++----------------------- 13 files changed, 77 insertions(+), 131 deletions(-) diff --git a/lib/GMLIB_API-JS.d.ts b/lib/GMLIB_API-JS.d.ts index edebf71..bb7ad7b 100644 --- a/lib/GMLIB_API-JS.d.ts +++ b/lib/GMLIB_API-JS.d.ts @@ -1717,9 +1717,6 @@ interface Block { /** (GMLIB) */ canDropWithAnyTool(): boolean; - /** (GMLIB)方块是否不需要工具采集 */ - isAlwaysDestroyable(): boolean; - /** (GMLIB)检测方块是否能被玩家挖掘(比如插件拦截) */ playerWillDestroy( /** 挖掘的玩家对象 */ @@ -1758,9 +1755,6 @@ interface Item { block: Block ): boolean; - /** (GMLIB)获取物品可以拥有的附魔 */ - getLegalEnchants(): string[] - /** (GMLIB)添加附魔 */ applyEnchant( /** 附魔的命名空间ID */ diff --git a/lib/GMLIB_API-JS.js b/lib/GMLIB_API-JS.js index f056f04..e3cce3d 100644 --- a/lib/GMLIB_API-JS.js +++ b/lib/GMLIB_API-JS.js @@ -252,8 +252,6 @@ const GMLIB_API = { itemCanDestroySpecial: ll.import("GMLIB_API", "itemCanDestroySpecial"), /** @type {function(Block):boolean} */ blockCanDropWithAnyTool: ll.import("GMLIB_API", "blockCanDropWithAnyTool"), - /** 方块是否不需要工具采集 @type {function(Block):boolean} */ - blockIsAlwaysDestroyable: ll.import("GMLIB_API", "blockIsAlwaysDestroyable"), /** @type {function(Block,Player,IntPos):boolean} */ blockPlayerWillDestroy: ll.import("GMLIB_API", "blockPlayerWillDestroy"), /** 使玩家攻击实体 @type {function(Entity,Player):boolean} */ @@ -268,8 +266,6 @@ const GMLIB_API = { getBlockLightEmission: ll.import("GMLIB_API", "getBlockLightEmission"), /** 获取游戏规则列表 @type {function():Array.<{Name:string,Value:string,Type:"Bool"|"Float"|"Int"}>} */ getGameRules: ll.import("GMLIB_API", "getGameRules"), - /** 获取物品可以拥有的附魔 @type {function(Item):Array.} */ - getLegalEnchants: ll.import("GMLIB_API", "getLegalEnchants"), /** 给物品添加附魔 @type {function(Item,string,number,boolean):boolean} */ applyEnchant: ll.import("GMLIB_API", "applyEnchant"), /** 删除物品所有附魔 @type {function(Item):void} */ @@ -2719,15 +2715,6 @@ LLSE_Block.prototype.canDropWithAnyTool = return GMLIB_API.blockCanDropWithAnyTool(this); }; -LLSE_Block.prototype.isAlwaysDestroyable = - /** - * 方块是否不需要工具采集 - * @returns {boolean} 方块是否不需要工具采集 - */ - function () { - return GMLIB_API.blockIsAlwaysDestroyable(this); - }; - LLSE_Block.prototype.playerWillDestroy = /** * 检测方块是否能被玩家挖掘(比如插件拦截) @@ -2758,15 +2745,6 @@ LLSE_Player.prototype.pullInEntity = return GMLIB_API.playerPullInEntity(this, entity); }; -LLSE_Item.prototype.getLegalEnchants = - /** - * 获取物品可以拥有的合法附魔 - * @returns {Array.} 附魔ID列表 - */ - function () { - return GMLIB_API.getLegalEnchants(this); - }; - LLSE_Item.prototype.applyEnchant = /** * 添加附魔 diff --git a/manifest.json b/manifest.json index a83331b..f7cb713 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "name": "${pluginName}", "entry": "${pluginFile}", - "version": "0.13.4", + "version": "0.13.5", "author": "GroupMountain", "type": "native", "passive": true, diff --git a/src/BinaryStreamApi.cpp b/src/BinaryStreamApi.cpp index 465d21c..be6c5ec 100644 --- a/src/BinaryStreamApi.cpp +++ b/src/BinaryStreamApi.cpp @@ -15,7 +15,7 @@ public: auto nextId = getNextId(); cretateBinaryStream(nextId); if(auto bs = getBinaryStream(nextId); bs !=nullptr){ - *getBinaryStream(nextId)->mBuffer = *getBinaryStream(id)->mBuffer; + getBinaryStream(nextId)->mBuffer = getBinaryStream(id)->mBuffer; } return nextId; } diff --git a/src/CompatibilityApi.cpp b/src/CompatibilityApi.cpp index 914d14f..66b067a 100644 --- a/src/CompatibilityApi.cpp +++ b/src/CompatibilityApi.cpp @@ -1,3 +1,4 @@ +#include "GMLIB/Mod/CustomRecipe/CustomRecipe.h" #include "Global.h" #include @@ -7,7 +8,7 @@ bool isInteger(const std::string& str) { } ActorUniqueID parseScriptUniqueID(std::string const& uniqueId) { - return isInteger(uniqueId) ? ActorUniqueID(std::stoll(uniqueId)) : ActorUniqueID::INVALID_ID; + return isInteger(uniqueId) ? ActorUniqueID(std::stoll(uniqueId)) : ActorUniqueID::INVALID_ID(); } void Export_Compatibility_API() { @@ -394,7 +395,7 @@ void Export_Compatibility_API() { RemoteCall::exportAs("GMLIB_API", "getAllScoreboardEntities", []() -> std::vector { std::vector result; for (auto& uniqueId : GMLIB_Scoreboard::getInstance()->getAllEntities()) { - result.push_back(std::to_string(uniqueId.id)); + result.push_back(std::to_string(uniqueId.rawID)); } return result; }); @@ -418,7 +419,7 @@ void Export_Compatibility_API() { for (auto& uniqueId : GMLIB_Scoreboard::getInstance()->getAllEntities()) { result.push_back({ {"Type", "Entity" }, - {"UniqueId", std::to_string(uniqueId.id)} + {"UniqueId", std::to_string(uniqueId.rawID)} }); } return result; @@ -431,7 +432,7 @@ void Export_Compatibility_API() { return ll::service::getLevel()->getPlayer(parseScriptUniqueID(uniqueId)); }); RemoteCall::exportAs("GMLIB_API", "getEntityFromUniqueId", [](std::string const& uniqueId) -> Actor* { - return ll::service::getLevel()->fetchEntity(parseScriptUniqueID(uniqueId)); + return ll::service::getLevel()->fetchEntity(parseScriptUniqueID(uniqueId), false); }); RemoteCall::exportAs("GMLIB_API", "getWorldSpawn", []() -> std::pair { return {GMLIB_Level::getInstance()->getWorldSpawn(), 0}; @@ -555,10 +556,7 @@ void Export_Compatibility_API() { return item->canDestroySpecial(*block); }); RemoteCall::exportAs("GMLIB_API", "blockCanDropWithAnyTool", [](Block const* block) -> bool { - return block->canDropWithAnyTool(); - }); - RemoteCall::exportAs("GMLIB_API", "blockIsAlwaysDestroyable", [](Block const* block) -> bool { - return block->getMaterial().isAlwaysDestroyable(); + return !block->requiresCorrectToolForDrops(); }); RemoteCall::exportAs( "GMLIB_API", @@ -583,7 +581,7 @@ void Export_Compatibility_API() { "getBlockLightEmission", [](std::string const& blockName, short legacyData) -> char { return Block::tryGetFromRegistry(blockName) - .transform([](const Block& block) -> char { return (char)block.getLightEmission().value; }) + .transform([](const Block& block) -> char { return (char)block.getLightEmission().mValue; }) .value_or(-1); } ); @@ -622,13 +620,6 @@ void Export_Compatibility_API() { return result; } ); - RemoteCall::exportAs("GMLIB_API", "getLegalEnchants", [](ItemStack const* item) -> std::vector { - std::vector result; - for (auto& enchant : EnchantUtils::getLegalEnchants(item->getItem())) { - result.push_back(Enchant::getEnchant((Enchant::Type)enchant)->getStringId()); - } - return result; - }); RemoteCall::exportAs("GMLIB_API", "getEnchantTypeNameFromId", [](int id) -> std::string { if (auto enchant = Enchant::getEnchant((Enchant::Type)id)) { return std::string(enchant->getStringId()); @@ -669,10 +660,10 @@ void Export_Compatibility_API() { [](Player* player, ItemStack const* item, bool randomly) -> bool { return player->drop(*item, randomly); } ); RemoteCall::exportAs("GMLIB_API", "getPlayerRuntimeId", [](Player* player) -> uint64 { - return player->getRuntimeID().id; + return player->getRuntimeID().rawID; }); RemoteCall::exportAs("GMLIB_API", "getEntityRuntimeId", [](Actor* entity) -> uint64 { - return entity->getRuntimeID().id; + return entity->getRuntimeID().rawID; }); RemoteCall::exportAs("GMLIB_API", "getEntityNameTag", [](Actor* entity) -> std::string { return entity->getNameTag(); @@ -730,7 +721,7 @@ void Export_Compatibility_API() { } ); RemoteCall::exportAs("GMLIB_API", "getPlayerHungry", [](Player* player) -> float { - return player->getMutableAttribute(Player::HUNGER)->getCurrentValue(); + return player->getMutableAttribute(Player::HUNGER())->getCurrentValue(); }); RemoteCall::exportAs("GMLIB_API", "getPlayerArmorCoverPercentage", [](Player* player) -> float { return player->getArmorCoverPercentage(); @@ -739,7 +730,7 @@ void Export_Compatibility_API() { return player->getArmorValue(); }); RemoteCall::exportAs("GMLIB_API", "getEntityOwnerUniqueId", [](Actor* entity) -> int64 { - return entity->getOwnerId().id; + return entity->getOwnerId().rawID; }); RemoteCall::exportAs("GMLIB_API", "getItemCategoryName", [](ItemStack const* item) -> std::string { return item->getCategoryName(); @@ -757,7 +748,7 @@ void Export_Compatibility_API() { return false; }); RemoteCall::exportAs("GMLIB_API", "setPlayerUIItem", [](Player* player, int slot, ItemStack const* item) -> void { - player->setPlayerUIItem((PlayerUISlot)slot, *item); + player->setPlayerUIItem((PlayerUISlot)slot, *item, false); }); RemoteCall::exportAs("GMLIB_API", "getPlayerUIItem", [](Player* player, int slot) -> ItemStack* { return const_cast(&player->getPlayerUIItem((PlayerUISlot)slot)); @@ -792,25 +783,25 @@ void Export_Compatibility_API() { }); RemoteCall::exportAs("GMLIB_API", "getEntityEffectDuration", [](Actor* entity, int effectId) -> int { if (auto effect = entity->getEffect(effectId)) { - return effect->mDuration; + return effect->mDuration->mValue; } return 0; }); RemoteCall::exportAs("GMLIB_API", "getEntityEffectDurationEasy", [](Actor* entity, int effectId) -> int { if (auto effect = entity->getEffect(effectId)) { - return effect->mDurationEasy; + return effect->mDurationEasy->transform([](auto&& duration) -> int { return duration.mValue; }).value_or(0); } return 0; }); RemoteCall::exportAs("GMLIB_API", "getEntityEffectDurationHard", [](Actor* entity, int effectId) -> int { if (auto effect = entity->getEffect(effectId)) { - return effect->mDurationHard; + return effect->mDurationHard->transform([](auto&& duration) -> int { return duration.mValue; }).value_or(0); } return 0; }); RemoteCall::exportAs("GMLIB_API", "getEntityEffectDurationNormal", [](Actor* entity, int effectId) -> int { if (auto effect = entity->getEffect(effectId)) { - return effect->mDurationNormal; + return effect->mDurationNormal->transform([](auto&& duration) -> int { return duration.mValue; }).value_or(0); } return 0; }); @@ -857,7 +848,13 @@ void Export_Compatibility_API() { std::vector types; char rt = 'A'; for (auto& ing : ingredients) { - types.emplace_back(ing, rt++, 1, 0); + auto ingredient = RecipeIngredient{ing, 0,1}; + types.push_back(Recipes::Type{ + (Item*)ingredient.getItem(), + ingredient.getBlock(), + ingredient, + rt++ + }); } GMLIB::Mod::CustomRecipe::registerShapelessCraftingTableRecipe(recipe_id, types, *result); } @@ -873,9 +870,23 @@ void Export_Compatibility_API() { std::vector types; char rt = 'A'; for (auto& ing : ingredients) { - types.emplace_back(ing, rt++, 1, 0); + auto ingredient = RecipeIngredient{ing, 0, 1}; + types.push_back(Recipes::Type{(Item*)ingredient.getItem(), ingredient.getBlock(), ingredient, rt++}); } - GMLIB::Mod::CustomRecipe::registerShapedCraftingTableRecipe(recipe_id, shape, types, *result); + auto tmp = RecipeUnlockingRequirement(); + tmp.mContext = RecipeUnlockingRequirement::UnlockingContext::AlwaysUnlocked; + ll::service::bedrock::getLevel()->getRecipes().addShapedRecipe( + recipe_id, + ItemInstance(*result), + shape, + types, + {"crafting_table"}, + 50, + nullptr, + tmp, + SemVersion(1, 20, 80, "", ""), + true + ); } ); RemoteCall::exportAs("GMLIB_API", "entityIsType", [](Actor* entity, int type) -> bool { diff --git a/src/Entry.cpp b/src/Entry.cpp index 51d0135..18fcd80 100644 --- a/src/Entry.cpp +++ b/src/Entry.cpp @@ -1,12 +1,10 @@ #include "Entry.h" #include "Global.h" -ll::Logger logger(PLUGIN_NAME); - namespace gmlib { -std::unique_ptr& LegacyRemoteCallApi::getInstance() { - static std::unique_ptr instance; +LegacyRemoteCallApi& LegacyRemoteCallApi::getInstance() { + static LegacyRemoteCallApi instance; return instance; } @@ -18,14 +16,15 @@ bool LegacyRemoteCallApi::load() { Export_Event_API(); Export_BinaryStream_API(); // Export_Form_API(); - logger.info("GMLIB-LegacyRemoteCallApi Loaded!"); - logger.info( + auto logger = ll::io::LoggerRegistry::getInstance().getOrCreate(PLUGIN_NAME); + logger->info("GMLIB-LegacyRemoteCallApi Loaded!"); + logger->info( "Loaded Version: {} with {}", fmt::format(fg(fmt::color::pink), "GMLIB-" + GMLIB::Version::getLibVersionString()), fmt::format(fg(fmt::color::light_green), "GMLIB-LegacyRemoteCallApi-" + LIB_VERSION.asString()) ); - logger.info("Author: GroupMountain"); - logger.info("Repository: https://github.com/GroupMountain/GMLIB-LegacyRemoteCallApi"); + logger->info("Author: GroupMountain"); + logger->info("Repository: https://github.com/GroupMountain/GMLIB-LegacyRemoteCallApi"); return true; } diff --git a/src/Entry.h b/src/Entry.h index d3027a6..b24b034 100644 --- a/src/Entry.h +++ b/src/Entry.h @@ -1,5 +1,4 @@ #pragma once -#include #include #include @@ -8,9 +7,9 @@ namespace gmlib { class LegacyRemoteCallApi { public: - static std::unique_ptr& getInstance(); + static LegacyRemoteCallApi& getInstance(); - LegacyRemoteCallApi(ll::mod::NativeMod& self) : mSelf(self) {} + LegacyRemoteCallApi() : mSelf(*ll::mod::NativeMod::current()) {} [[nodiscard]] ll::mod::NativeMod& getSelf() const { return mSelf; } diff --git a/src/EventAPI.cpp b/src/EventAPI.cpp index c5bf2da..c3772ef 100644 --- a/src/EventAPI.cpp +++ b/src/EventAPI.cpp @@ -140,7 +140,7 @@ void Export_Event_API() { (ItemStack * item, std::pair position, int64 spawnerUniqueId, bool isCancelled), (&event.getItem(), {event.getPosition(), event.getBlockSource().getDimensionId().id}, - event.getSpawner().has_value() ? event.getSpawner()->getOrCreateUniqueID().id : -1, + event.getSpawner().has_value() ? event.getSpawner()->getOrCreateUniqueID().rawID : -1, event.isCancelled()), event.setCancelled(result); ); @@ -151,7 +151,7 @@ void Export_Event_API() { (Actor * item, std::pair position, int64 spawnerUniqueId), (&event.self(), {event.getPosition(), event.getBlockSource().getDimensionId().id}, - event.getSpawner().has_value() ? event.getSpawner()->getOrCreateUniqueID().id : -1), + event.getSpawner().has_value() ? event.getSpawner()->getOrCreateUniqueID().rawID : -1), , ); } @@ -221,7 +221,7 @@ void Export_Event_API() { Actor* source = nullptr; if (damageSource.isEntitySource()) { auto uniqueId = damageSource.getDamagingEntityUniqueID(); - source = ll::service::getLevel()->fetchEntity(uniqueId); + source = ll::service::getLevel()->fetchEntity(uniqueId, false); if (source->getOwner()) source = source->getOwner(); } ); @@ -254,7 +254,7 @@ void Export_Event_API() { GMLIB::Event::EntityEvent::ProjectileCreateBeforeEvent, (Actor * mob, int64 uniqueId, bool isCancelled), (&event.self(), - event.getShooter() ? event.getShooter()->getOrCreateUniqueID().id : -1, + event.getShooter() ? event.getShooter()->getOrCreateUniqueID().rawID : -1, event.isCancelled()), event.setCancelled(result); ); @@ -263,7 +263,7 @@ void Export_Event_API() { REGISTER_EVENT_LISTEN( GMLIB::Event::EntityEvent::ProjectileCreateAfterEvent, (Actor * mob, int64 uniqueId), - (&event.self(), event.getShooter() ? event.getShooter()->getOrCreateUniqueID().id : -1), + (&event.self(), event.getShooter() ? event.getShooter()->getOrCreateUniqueID().rawID : -1), ); } case doHash("gmlib::SpawnWanderingTraderBeforeEvent"): { @@ -299,10 +299,10 @@ void Export_Event_API() { (Player*)&event.self(), magic_enum::enum_name(requestAction.mActionType).data(), (int)requestAction.mAmount, - magic_enum::enum_name(requestAction.mSrc.mOpenContainerNetId).data(), - (int)requestAction.mSrc.mSlot, - magic_enum::enum_name(requestAction.mDst.mOpenContainerNetId).data(), - (int)requestAction.mDst.mSlot, + magic_enum::enum_name(requestAction.mSrc->mFullContainerName.mName).data(), + (int)requestAction.mSrc->mSlot, + magic_enum::enum_name(requestAction.mDst->mFullContainerName.mName).data(), + (int)requestAction.mDst->mSlot, event.isCancelled() ), event.setCancelled(result);, @@ -327,10 +327,10 @@ void Export_Event_API() { (Player*)&event.self(), magic_enum::enum_name(requestAction.mActionType).data(), (int)requestAction.mAmount, - magic_enum::enum_name(requestAction.mSrc.mOpenContainerNetId).data(), - (int)requestAction.mSrc.mSlot, - magic_enum::enum_name(requestAction.mDst.mOpenContainerNetId).data(), - (int)requestAction.mDst.mSlot + magic_enum::enum_name(requestAction.mSrc->mFullContainerName.mName).data(), + (int)requestAction.mSrc->mSlot, + magic_enum::enum_name(requestAction.mDst->mFullContainerName.mName).data(), + (int)requestAction.mDst->mSlot ), , auto& requestAction = (ItemStackRequestActionTransferBase&)event.getRequestAction(); @@ -342,7 +342,7 @@ void Export_Event_API() { GMLIB::Event::PacketEvent::ContainerClosePacketSendAfterEvent, (Player * player, int containerId, bool serverInitiatedClose, bool), (event.getServerNetworkHandler() - .getServerPlayer(event.getNetworkIdentifier(), event.getPacket().mClientSubId), + ._getServerPlayer(event.getNetworkIdentifier(), event.getPacket().mClientSubId), (int)event.getPacket().mContainerId, event.getPacket().mServerInitiatedClose, false), diff --git a/src/Global.h b/src/Global.h index 775a31d..97c69dd 100644 --- a/src/Global.h +++ b/src/Global.h @@ -11,8 +11,6 @@ #define LIB_VERSION GMLIB::Version(LIB_VERSION_MAJOR, LIB_VERSION_MINOR, LIB_VERSION_PATCH) -extern ll::Logger logger; - extern void Export_Legacy_GMLib_ModAPI(); extern void Export_Legacy_GMLib_ServerAPI(); extern void Export_Compatibility_API(); diff --git a/src/LegacyModApi.cpp b/src/LegacyModApi.cpp index c22cbab..44a200f 100644 --- a/src/LegacyModApi.cpp +++ b/src/LegacyModApi.cpp @@ -149,7 +149,7 @@ void Export_Legacy_GMLib_ModAPI() { if (set.contains((AllExperiments)experiment_id)) { GMLIB_Level::addExperimentsRequire((AllExperiments)experiment_id); } else { - ll::Logger("Server").error("Experiment ID '{}' does not exist!", experiment_id); + ll::io::LoggerRegistry::getInstance().getOrCreate("Server")->error("Experiment ID '{}' does not exist!", experiment_id); } }); RemoteCall::exportAs("GMLib_ModAPI", "setExperimentEnabled", [](int experiment_id, bool value) -> void { @@ -158,7 +158,7 @@ void Export_Legacy_GMLib_ModAPI() { std::unordered_set set(list.begin(), list.end()); if (set.contains((AllExperiments)experiment_id)) { GMLIB_Level::getInstance()->setExperimentEnabled(((AllExperiments)experiment_id), value); - } else ll::Logger("Server").error("Experiment ID '{}' does not exist!", experiment_id); + } else ll::io::LoggerRegistry::getInstance().getOrCreate("Server")->error("Experiment ID '{}' does not exist!", experiment_id); } }); RemoteCall::exportAs("GMLib_ModAPI", "getExperimentEnabled", [](int experiment_id) -> bool { @@ -168,7 +168,7 @@ void Export_Legacy_GMLib_ModAPI() { if (set.contains((AllExperiments)experiment_id)) { return GMLIB_Level::getInstance()->getExperimentEnabled(((AllExperiments)experiment_id)); } - ll::Logger("Server").error("Experiment ID '{}' does not exist!", experiment_id); + ll::io::LoggerRegistry::getInstance().getOrCreate("Server")->error("Experiment ID '{}' does not exist!", experiment_id); } return false; }); diff --git a/src/MemoryOperators.cpp b/src/MemoryOperators.cpp index f7c918a..7d40c07 100644 --- a/src/MemoryOperators.cpp +++ b/src/MemoryOperators.cpp @@ -4,4 +4,4 @@ #define LL_MEMORY_OPERATORS -#include +#include \ No newline at end of file diff --git a/tooth.json b/tooth.json index 6c86a5b..8ce9aff 100644 --- a/tooth.json +++ b/tooth.json @@ -1,7 +1,7 @@ { "format_version": 2, "tooth": "github.com/GroupMountain/GMLIB-LegacyRemoteCallApi", - "version": "0.13.4", + "version": "0.13.5", "info": { "name": "GMLIB-LegacyRemoteCallApi", "description": "Legacy RemoteCall API for GMLIB", @@ -14,9 +14,9 @@ "library" ] }, - "asset_url": "https://github.com/GroupMountain/GMLIB-LegacyRemoteCallApi/releases/download/v0.13.4/GMLIB-LegacyRemoteCallApi-windows-x64.zip", + "asset_url": "https://github.com/GroupMountain/GMLIB-LegacyRemoteCallApi/releases/download/v0.13.5/GMLIB-LegacyRemoteCallApi-windows-x64.zip", "dependencies": { - "github.com/GroupMountain/GMLIB": ">=0.13.0" + "github.com/GroupMountain/GMLIB": ">=0.13.9" }, "files": { "place": [ diff --git a/xmake.lua b/xmake.lua index 8452b4b..e567784 100644 --- a/xmake.lua +++ b/xmake.lua @@ -7,43 +7,12 @@ if not has_config("vs_runtime") then set_runtimes("MD") end --- Option 1: Use the latest version of LeviLamina released on GitHub. -add_requires("levilaminalibrary") +add_requires("levilamina", {configs = {target_type = "server"}}) add_requires("legacyremotecall") add_requires("gmlib") +add_requires("levibuildscript") --- Option 2: Use a specific version of LeviLamina released on GitHub. --- add_requires("levilamina x.x.x") - --- Option 3: Use the latest commit of LeviLamina on GitHub. --- -- Here, "develop" is the branch name. You can change it to any branch name you want. --- add_requires("levilamina develop") --- -- You can also use debug build of LeviLamina. --- -- add_requires("levilamina develop", {debug = true}) --- package("levilamina") --- add_urls("https://github.com/LiteLDev/LeviLamina.git") - --- add_deps("ctre 3.8.1") --- add_deps("entt 3.12.2") --- add_deps("fmt 10.1.1") --- add_deps("gsl 4.0.0") --- add_deps("leveldb 1.23") --- add_deps("magic_enum 0.9.0") --- add_deps("nlohmann_json 3.11.2") --- add_deps("rapidjson 1.1.0") --- add_deps("pcg_cpp 1.0.0") --- add_deps("pfr 2.1.1") --- add_deps("preloader 1.4.0") --- add_deps("symbolprovider 1.1.0") - --- -- You may need to change this to the target BDS version of your choice. --- add_deps("bdslibrary 1.20.50.03") - --- on_install(function (package) --- import("package.tools.xmake").install(package) --- end) - -target("GMLIB-LegacyRemoteCallApi") -- Change this to your plugin name. +target("GMLIB-LegacyRemoteCallApi") add_cxflags( "/EHa", "/utf-8" @@ -59,14 +28,12 @@ target("GMLIB-LegacyRemoteCallApi") -- Change this to your plugin name. "src" ) add_packages( - "levilaminalibrary", + "levilamina", "legacyremotecall", "gmlib" ) - add_shflags( - "/DELAYLOAD:bedrock_server.dll" -- Magic to import symbols from BDS - ) - set_exceptions("none") -- To avoid conflicts with /EHa + add_rules("@levibuildscript/linkrule") + set_exceptions("none") set_kind("shared") set_languages("c++23") set_symbols("debug")