diff --git a/SDK-GMLIB b/SDK-GMLIB index 1c2918e..72e596a 160000 --- a/SDK-GMLIB +++ b/SDK-GMLIB @@ -1 +1 @@ -Subproject commit 1c2918e15dc5ed06199f5695a89f030191f5d703 +Subproject commit 72e596afb1fcca9c7bf0bdedc88535704bfb19a8 diff --git a/src/CompatibilityApi.cpp b/src/CompatibilityApi.cpp index a572e22..c5dde29 100644 --- a/src/CompatibilityApi.cpp +++ b/src/CompatibilityApi.cpp @@ -2,15 +2,37 @@ void Export_Compatibility_API() { RemoteCall::exportAs("GMLIB_API", "getServerMspt", []() -> float { - return GMLIB_Level::getLevel()->getServerMspt(); + auto level = GMLIB_Level::getLevel(); + if (!level) { + return 0.0f; + } + return level->getServerMspt(); }); RemoteCall::exportAs("GMLIB_API", "getServerCurrentTps", []() -> float { - return GMLIB_Level::getLevel()->getServerCurrentTps(); + auto level = GMLIB_Level::getLevel(); + if (!level) { + return 0.0f; + } + return level->getServerCurrentTps(); }); RemoteCall::exportAs("GMLIB_API", "getServerAverageTps", []() -> float { - return GMLIB_Level::getLevel()->getServerAverageTps(); + auto level = GMLIB_Level::getLevel(); + if (!level) { + return 0.0f; + } + return level->getServerAverageTps(); }); RemoteCall::exportAs("GMLIB_API", "getAllPlayerUuids", []() -> std::vector { return GMLIB_Player::getAllUuids(); }); + RemoteCall::exportAs("GMLIB_API", "getAllExperiments", []() -> std::vector { + return {6, 7, 8, 9, 10, 13, 16, 17, 18}; + }); + RemoteCall::exportAs("GMLIB_API", "getExperimentTranslatedName", [](int id) -> std::string { + auto map = GMLIB_Level::getAllExperimentsTranslateKeys(); + if (map.count(id)) { + return map[id]; + } + return ""; + }); } \ No newline at end of file diff --git a/src/LegacyModApi.cpp b/src/LegacyModApi.cpp index fd8bc1b..4d6d740 100644 --- a/src/LegacyModApi.cpp +++ b/src/LegacyModApi.cpp @@ -23,6 +23,10 @@ void Export_Legacy_GMLib_ModAPI() { std::string result, int count, std::string unlock) -> void { + auto level = GMLIB_Level::getLevel(); + if (!level) { + return; + } std::vector types; for (auto ing : ingredients) { auto key = RecipeIngredient(ing, 0, 1); @@ -42,6 +46,10 @@ void Export_Legacy_GMLib_ModAPI() { std::string result, int count, std::string unlock) -> void { + auto level = GMLIB_Level::getLevel(); + if (!level) { + return; + } std::vector types; for (auto ing : ingredients) { auto key = RecipeIngredient(ing, 0, 1); @@ -56,6 +64,10 @@ void Export_Legacy_GMLib_ModAPI() { "GMLib_ModAPI", "registerFurnaceRecipe", [](std::string recipe_id, std::string input, std::string output, std::vector tags) -> void { + auto level = GMLIB_Level::getLevel(); + if (!level) { + return; + } auto inp = RecipeIngredient(input, 0, 1); auto outp = RecipeIngredient(output, 0, 1); GMLIB::Mod::CustomRecipe::registerFurnaceRecipe(recipe_id, inp, outp, tags); @@ -65,6 +77,10 @@ void Export_Legacy_GMLib_ModAPI() { "GMLib_ModAPI", "registerBrewingMixRecipe", [](std::string recipe_id, std::string input, std::string output, std::string reagent) -> void { + auto level = GMLIB_Level::getLevel(); + if (!level) { + return; + } auto rea = RecipeIngredient(reagent, 0, 1); GMLIB::Mod::CustomRecipe::registerBrewingMixRecipe(recipe_id, input, output, rea); } @@ -73,6 +89,10 @@ void Export_Legacy_GMLib_ModAPI() { "GMLib_ModAPI", "registerBrewingContainerRecipe", [](std::string recipe_id, std::string input, std::string output, std::string reagent) -> void { + auto level = GMLIB_Level::getLevel(); + if (!level) { + return; + } auto inp = RecipeIngredient(input, 0, 1); auto outp = RecipeIngredient(output, 0, 1); auto rea = RecipeIngredient(reagent, 0, 1); @@ -87,6 +107,10 @@ void Export_Legacy_GMLib_ModAPI() { std::string base, std::string addition, std::string result) -> void { + auto level = GMLIB_Level::getLevel(); + if (!level) { + return; + } GMLIB::Mod::CustomRecipe::registerSmithingTransformRecipe( recipe_id, smithing_template, @@ -100,6 +124,10 @@ void Export_Legacy_GMLib_ModAPI() { "GMLib_ModAPI", "registerSmithingTrimRecipe", [](std::string recipe_id, std::string smithing_template, std::string base, std::string addition) -> void { + auto level = GMLIB_Level::getLevel(); + if (!level) { + return; + } GMLIB::Mod::CustomRecipe::registerSmithingTrimRecipe(recipe_id, smithing_template, base, addition); } ); @@ -112,6 +140,10 @@ void Export_Legacy_GMLib_ModAPI() { std::string output, int output_data, int output_count) -> void { + auto level = GMLIB_Level::getLevel(); + if (!level) { + return; + } auto inp = RecipeIngredient(input, 0, 1); auto outp = RecipeIngredient(output, 0, 1); GMLIB::Mod::CustomRecipe::registerStoneCutterRecipe(recipe_id, inp, outp); @@ -130,11 +162,19 @@ void Export_Legacy_GMLib_ModAPI() { } }); RemoteCall::exportAs("GMLib_ModAPI", "setExperimentEnabled", [](int experiment_id, bool value) -> void { + auto level = GMLIB_Level::getLevel(); + if (!level) { + return; + } if (ExperimentsList.count(experiment_id)) { GMLIB_Level::getLevel()->setExperimentEnabled(((AllExperiments)experiment_id), value); } else ll::Logger("Server").error("Experiment ID '{}' does not exist!", experiment_id); }); RemoteCall::exportAs("GMLib_ModAPI", "getExperimentEnabled", [](int experiment_id) -> bool { + auto level = GMLIB_Level::getLevel(); + if (!level) { + return false; + } if (ExperimentsList.count(experiment_id)) { return GMLIB_Level::getLevel()->getExperimentEnabled(((AllExperiments)experiment_id)); } else { diff --git a/src/LegacyServerApi.cpp b/src/LegacyServerApi.cpp index 0a7a385..2904824 100644 --- a/src/LegacyServerApi.cpp +++ b/src/LegacyServerApi.cpp @@ -1,49 +1,67 @@ #include "Global.h" void Export_Legacy_GMLib_ServerAPI() { - RemoteCall::exportAs("GMLib_ServerAPI", "setEducationFeatureEnabled", []() -> void { + RemoteCall::exportAs("GMLib_ServerAPI", "setEducationFeatureEnabled", []() -> void { GMLIB_Level::addEducationEditionRequired(); }); - RemoteCall::exportAs("GMLib_ServerAPI", "registerAbilityCommand", []() -> void { + RemoteCall::exportAs("GMLib_ServerAPI", "registerAbilityCommand", []() -> void { GMLIB_Level::forceEnableAbilityCommand(); }); - RemoteCall::exportAs("GMLib_ServerAPI", "addFloatingTextPacket", [](std::string text, std::pair pos, int dimid) -> int { - auto ft = new FloatingText(text, pos.first, pos.second); - return ft->mRuntimeId; + RemoteCall::exportAs( + "GMLib_ServerAPI", + "addFloatingTextPacket", + [](std::string text, std::pair pos, int dimid) -> int { + auto ft = new GMLIB::Server::FloatingText(text, pos.first, pos.second); + return ft->getRuntimeID(); + } + ); + RemoteCall::exportAs("GMLib_ServerAPI", "deleteFloatingTextPacket", [](int id) -> void { + GMLIB::Server::FloatingText::deleteFloatingText(id); }); - RemoteCall::exportAs("GMLib_ServerAPI", "deleteFloatingTextPacket", [](int id) -> void { - FloatingText::deleteFloatingText(id); - }); - RemoteCall::exportAs("GMLib_ServerAPI", "setEnableAchievement", []() -> void { + RemoteCall::exportAs("GMLib_ServerAPI", "setEnableAchievement", []() -> void { GMLIB_Level::setForceAchievementsEnabled(); }); - RemoteCall::exportAs("GMLib_ServerAPI", "setForceTrustSkins", []() -> void { - GMLIB_Level::setForceTrustSkin(); + RemoteCall::exportAs("GMLib_ServerAPI", "setForceTrustSkins", []() -> void { GMLIB_Level::setForceTrustSkin(); }); + RemoteCall::exportAs("GMLib_ServerAPI", "enableCoResourcePack", []() -> void { GMLIB_Level::setCoResourcePack(); }); + RemoteCall::exportAs("GMLib_ServerAPI", "getLevelName", []() -> std::string { + auto level = GMLIB_Level::getLevel(); + if (!level) { + return ""; + } + return level->getLevelName(); }); - RemoteCall::exportAs("GMLib_ServerAPI", "enableCoResourcePack", []() -> void { - GMLIB_Level::setCoResourcePack(); + RemoteCall::exportAs("GMLib_ServerAPI", "setLevelName", [](std::string name) -> void { + auto level = GMLIB_Level::getLevel(); + if (!level) { + return; + } + return level->setLevelName(name); }); - RemoteCall::exportAs("GMLib_ServerAPI", "getLevelName", []() -> std::string { - return GMLIB_Level::getLevel()->getLevelName(); + RemoteCall::exportAs("GMLib_ServerAPI", "setFakeSeed", [](int64_t seed) -> void { + auto level = GMLIB_Level::getLevel(); + if (!level) { + return; + } + return level->setFakeSeed(seed); }); - RemoteCall::exportAs("GMLib_ServerAPI", "setLevelName", [](std::string name) -> void { - GMLIB_Level::getLevel()->setLevelName(name); - }); - RemoteCall::exportAs("GMLib_ServerAPI", "setFakeSeed", [](int64_t seed) -> void { - GMLIB_Level::getLevel()->setFakeSeed(seed); - }); - RemoteCall::exportAs("GMLib_ServerAPI", "spawnEntity", [](std::pair pos, std::string name) -> Actor* { + RemoteCall::exportAs("GMLib_ServerAPI", "spawnEntity", [](std::pair pos, std::string name) -> Actor* { return GMLIB_Spawner::spawnEntity(pos.first, pos.second, name); }); - RemoteCall::exportAs("GMLib_ServerAPI", "shootProjectile", [](Actor* owner, std::string name, float speed, float offset) -> Actor* { - auto ac = (GMLIB_Actor*)owner; - return ac->shootProjectile(name, speed, offset); - }); - RemoteCall::exportAs("GMLib_ServerAPI", "throwEntity", [](Actor* owner, Actor* actor, float speed, float offset) -> bool { - auto ac = (GMLIB_Actor*)owner; - return ac->throwEntity(actor, speed, offset); - }); - RemoteCall::exportAs("GMLib_ServerAPI", "PlayerToEntity", [](Player* player) -> Actor* { - return (Actor*)player; - }); + RemoteCall::exportAs( + "GMLib_ServerAPI", + "shootProjectile", + [](Actor* owner, std::string name, float speed, float offset) -> Actor* { + auto ac = (GMLIB_Actor*)owner; + return ac->shootProjectile(name, speed, offset); + } + ); + RemoteCall::exportAs( + "GMLib_ServerAPI", + "throwEntity", + [](Actor* owner, Actor* actor, float speed, float offset) -> bool { + auto ac = (GMLIB_Actor*)owner; + return ac->throwEntity(actor, speed, offset); + } + ); + RemoteCall::exportAs("GMLib_ServerAPI", "PlayerToEntity", [](Player* player) -> Actor* { return (Actor*)player; }); } \ No newline at end of file diff --git a/tooth.json b/tooth.json new file mode 100644 index 0000000..6788d0f --- /dev/null +++ b/tooth.json @@ -0,0 +1,28 @@ +{ + "format_version": 2, + "tooth": "github.com/GroupMountain/GMLIB-LegacyRemoteCallApi", + "version": "0.8.0", + "info": { + "name": "GMLIB-LegacyRemoteCallApi", + "description": "Legacy RemoteCall API for GMLIB", + "author": "GroupMountain Team", + "tags": [ + "LeviLamina", + "GMLIB", + "GMLIB-LegacyRemoteCallApi", + "Library" + ] + }, + "asset_url": "https://github.com/GroupMountain/GMLIB-LegacyRemoteCallApi/releases/download/v0.8.0/GMLIB-LegacyRemoteCallApi-windows-x64.zip", + "dependencies": { + "github.com/GroupMountain/GMLIB": ">=0.8.0" + }, + "files": { + "place": [ + { + "src": "GMLIB-LegacyRemoteCallApi/*", + "dest": "plugins/GMLIB-LegacyRemoteCallApi" + } + ] + } +} \ No newline at end of file