Mod API
作用
Mod API 是原生模組的生命週期入口。它使用 <pl/Mod.hpp>、
ll::mod::NativeMod::current(),以及通過 PL_REGISTER_MOD 註冊的長期存活 C++
對象。
頭文件
C++
#include <pl/Mod.hpp>註冊
C++
#include <pl/Mod.hpp>
class MyMod {
public:
static MyMod &instance();
MyMod();
[[nodiscard]] ll::mod::NativeMod &getSelf() const { return mSelf; }
bool load();
bool enable();
bool disable();
bool unload();
private:
ll::mod::NativeMod &mSelf;
};
PL_REGISTER_MOD(MyMod, MyMod::instance())C++
MyMod::MyMod() : mSelf(*ll::mod::NativeMod::current()) {}load() 是必需的。enable()、disable()、unload() 是可選的;缺失時註冊
helper 會按成功處理。
每個原生模組庫在一個源文件中使用一次 PL_REGISTER_MOD。
生命週期
| 方法 | 建議職責 |
|---|---|
load() | 讀取配置、創建目錄、準備模組自有狀態。 |
enable() | 註冊 hook、input callback 和運行期 UI。 |
disable() | 撤銷面向遊戲的行為並註銷運行期 UI。 |
unload() | 在 disable 後釋放剩餘 C++ 狀態。 |
每個方法成功返回 true,失敗返回 false。
NativeMod
ll::mod::NativeMod 提供 manifest 元數據、包路徑、Java VM、生命週期狀態和模組
專屬 logger。
C++
bool MyMod::load() {
auto &self = getSelf();
std::filesystem::create_directories(self.getConfigDir());
self.getLogger().info("Loading {}", self.getName());
return true;
}常用成員:
| 成員 | 用途 |
|---|---|
getJavaVM() | 當前 JavaVM *。 |
getLogger() | 當前模組的 pl::log::Logger。 |
getId() | 穩定的運行期模組 id。 |
getName() | manifest 中的顯示名。 |
getAuthor() | manifest 中的作者。 |
getVersion() | manifest 中的版本。 |
getEntryPath() | 已解析的入口文件路徑。 |
getEntryFileName() | manifest 中的入口文件名。 |
getIconPath() | 已解析的圖標路徑,未配置時為空路徑。 |
getModDir() | 模組包根目錄。 |
getDataDir() | <mod root>/data。 |
getConfigDir() | <mod root>/config。 |
getResourceDir() | <mod root>/resources。 |
getManifestPath() | 已解析的 manifest.json 路徑。 |
getLibraryPath() | 已解析的 native library 路徑。 |
getState() | 當前原生模組生命週期狀態。 |
isLoaded() / isEnabled() / isDisabled() | 常用狀態判斷。 |
運行期 UI、浮動按鈕和 HUD 覆蓋層繪製見 Mod Menu API。
注意
- 註冊實例必須在進程生命週期內保持有效。
- 不要讓異常跨越生命週期邊界;捕獲失敗並返回
false。 - 用戶可編輯配置應放在
getSelf().getConfigDir()下。