From 891bb0d14fb612d9879a5aa57ffb97a922c29e66 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: Fri, 8 Nov 2024 18:27:53 +0800 Subject: [PATCH 1/2] adapt: adapt to GMLIB v0.13.7 --- src/Command.cpp | 2 +- src/Entry.cpp | 6 +++--- src/Entry.h | 8 ++++---- src/FreeCamera.cpp | 6 +++--- src/Global.h | 2 +- xmake.lua | 2 +- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/Command.cpp b/src/Command.cpp index f49f293..87d356e 100644 --- a/src/Command.cpp +++ b/src/Command.cpp @@ -5,7 +5,7 @@ void RegisterCommand() { .getOrCreateCommand("freecamera", tr("freecamera.command.desc"), CommandPermissionLevel::Any); ll::service::getCommandRegistry()->registerAlias("freecamera", "fc"); cmd.overload().execute<[&](CommandOrigin const& origin, CommandOutput& output) { - auto entity = (gmlib::world::Actor*)origin.getEntity(); + auto entity = (GMLIB_Actor*)origin.getEntity(); if (entity && entity->isPlayer()) { auto pl = (Player*)entity; auto guid = pl->getNetworkIdentifier().mGuid.g; diff --git a/src/Entry.cpp b/src/Entry.cpp index 179ce5e..bcc4b4f 100644 --- a/src/Entry.cpp +++ b/src/Entry.cpp @@ -20,11 +20,11 @@ bool Entry::load() { mI18n->updateOrCreateLanguage("en_US", en_US); mI18n->updateOrCreateLanguage("zh_CN", zh_CN); mI18n->loadAllLanguages(); - if (gmlib::Version::getProtocolVersion() != TARGET_PROTOCOL) { + if (GMLIB::Version::getProtocolVersion() != TARGET_PROTOCOL) { logger.error(tr("error.protocolMismatch.info")); logger.error( tr("error.protocolMismatch.version", - {std::to_string(TARGET_PROTOCOL), std::to_string(gmlib::Version::getProtocolVersion())}) + {std::to_string(TARGET_PROTOCOL), std::to_string(GMLIB::Version::getProtocolVersion())}) ); return false; } @@ -56,7 +56,7 @@ bool Entry::unload() { Config& Entry::getConfig() { return mConfig.value(); } -gmlib::i18n::LangI18n& Entry::getI18n() { return mI18n.value(); } +GMLIB::Files::I18n::LangI18n& Entry::getI18n() { return mI18n.value(); } } // namespace FreeCamera diff --git a/src/Entry.h b/src/Entry.h index 6221294..70455f6 100644 --- a/src/Entry.h +++ b/src/Entry.h @@ -26,12 +26,12 @@ class Entry { Config& getConfig(); - gmlib::i18n::LangI18n& getI18n(); + GMLIB::Files::I18n::LangI18n& getI18n(); private: - ll::mod::NativeMod& mSelf; - std::optional mConfig; - std::optional mI18n; + ll::mod::NativeMod& mSelf; + std::optional mConfig; + std::optional mI18n; }; } // namespace FreeCamera diff --git a/src/FreeCamera.cpp b/src/FreeCamera.cpp index 50abe65..48ff353 100644 --- a/src/FreeCamera.cpp +++ b/src/FreeCamera.cpp @@ -4,7 +4,7 @@ std::unordered_set FreeCamList; namespace FreeCamera { -void EnableFreeCameraPacket(Player* pl) { ((gmlib::world::Player*)pl)->setClientGamemode(GameType::Spectator); } +void EnableFreeCameraPacket(Player* pl) { ((GMLIB_Player*)pl)->setClientGamemode(GameType::Spectator); } void SendFakePlayerPacket(Player* pl) { // Client Player @@ -15,7 +15,7 @@ void SendFakePlayerPacket(Player* pl) { pl->sendNetworkPacket(pkt1); // Update Skin auto skin = pl->getSkin(); - gmlib::network::BinaryStream bs; + GMLIB_BinaryStream bs; bs.writePacketHeader(MinecraftPacketIds::PlayerSkin); bs.writeUuid(randomUuid); bs.writeSkin(skin); @@ -26,7 +26,7 @@ void SendFakePlayerPacket(Player* pl) { } void DisableFreeCameraPacket(Player* pl) { - ((gmlib::world::Player*)pl)->setClientGamemode(pl->getPlayerGameType()); + ((GMLIB_Player*)pl)->setClientGamemode(pl->getPlayerGameType()); auto uniqueId = pl->getOrCreateUniqueID(); uniqueId.id = uniqueId.id + 114514; auto pkt2 = RemoveActorPacket(uniqueId); diff --git a/src/Global.h b/src/Global.h index bb7b69a..5add3c7 100644 --- a/src/Global.h +++ b/src/Global.h @@ -1,5 +1,5 @@ #pragma once -#include +#include #define MOD_NAME "FreeCamera" #define TARGET_PROTOCOL 686 diff --git a/xmake.lua b/xmake.lua index d86fe9b..6fbaf3e 100644 --- a/xmake.lua +++ b/xmake.lua @@ -10,7 +10,7 @@ end -- Option 1: Use the latest version of LeviLamina released on GitHub. add_requires("levilamina") -add_requires("gmlib") +add_requires("gmlib 0.13.7") -- Option 2: Use a specific version of LeviLamina released on GitHub. From 6346ef2e091a1346e3fe0d3cf80c6d7327187efe 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: Fri, 8 Nov 2024 18:38:22 +0800 Subject: [PATCH 2/2] fix: fix the Ability error when close --- src/FreeCamera.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/FreeCamera.cpp b/src/FreeCamera.cpp index 48ff353..5592849 100644 --- a/src/FreeCamera.cpp +++ b/src/FreeCamera.cpp @@ -1,4 +1,5 @@ #include "Global.h" +#include "mc/network/packet/UpdateAbilitiesPacket.h" std::unordered_set FreeCamList; @@ -29,8 +30,8 @@ void DisableFreeCameraPacket(Player* pl) { ((GMLIB_Player*)pl)->setClientGamemode(pl->getPlayerGameType()); auto uniqueId = pl->getOrCreateUniqueID(); uniqueId.id = uniqueId.id + 114514; - auto pkt2 = RemoveActorPacket(uniqueId); - pl->sendNetworkPacket(pkt2); + RemoveActorPacket(uniqueId).sendTo(*pl); + UpdateAbilitiesPacket(pl->getOrCreateUniqueID(), pl->getAbilities()).sendTo(*pl); } /*