diff --git a/src/Entry.cpp b/src/Entry.cpp index a2f114b..64ba0d0 100644 --- a/src/Entry.cpp +++ b/src/Entry.cpp @@ -11,6 +11,14 @@ std::unique_ptr& Entry::getInstance() { bool Entry::load() { initLanguage(); + if (Version::getProtocolVersion() != TARGET_PROTOCOL) { + logger.error(tr("error.protocolMismatch.info")); + logger.error( + tr("error.protocolMismatch.version", + {std::to_string(TARGET_PROTOCOL), std::to_string(Version::getProtocolVersion())}) + ); + return false; + } return true; } diff --git a/src/Global.h b/src/Global.h index 0f6dee4..38f2b2f 100644 --- a/src/Global.h +++ b/src/Global.h @@ -1,6 +1,8 @@ #pragma once #include + #define PLUGIN_NAME "FreeCamera" +#define TARGET_PROTOCOL 662 using namespace GMLIB; @@ -9,7 +11,7 @@ extern std::unordered_set FreeCamList; extern void RegisterCommand(); extern void initLanguage(); -extern std::string tr(std::string key); +extern std::string tr(std::string key, std::vector data = {}); namespace FreeCamera { extern void DisableFreeCamera(Player* pl); diff --git a/src/Initialization.cpp b/src/Initialization.cpp index 6e6c464..c1e0f37 100644 --- a/src/Initialization.cpp +++ b/src/Initialization.cpp @@ -17,4 +17,4 @@ void initLanguage() { Language->chooseLanguage(languageCode); } -std::string tr(std::string key) { return Language->translate(key); } \ No newline at end of file +std::string tr(std::string key, std::vector data) { return Language->translate(key, data); } \ No newline at end of file diff --git a/src/Language.h b/src/Language.h index ede0023..fd7e53e 100644 --- a/src/Language.h +++ b/src/Language.h @@ -5,12 +5,16 @@ std::string defaultLanguage_en_US = R"({ "freecamera.command.desc": "Enable or disable freecamera mode.", "freecamera.command.enabled": "Freecamera mode enabled", "freecamera.command.disabled": "Freecamera mode disabled", - "freecamera.command.console": "This command can only execute by players or console." + "freecamera.command.console": "This command can only execute by players or console.", + "error.protocolMismatch.info":"You are running on an unsupport protocol version! This may result in crash!", + "error.protocolMismatch.version":"Support protocol %1$s, current protocol %2$s." })"; std::string defaultLanguage_zh_CN = R"({ "freecamera.command.desc": "开启或关闭自由视角模式", "freecamera.command.enabled": "自由视角模式已启用", "freecamera.command.disabled": "自由视角模式已禁用", - "freecamera.command.console": "该命令只能由玩家执行" + "freecamera.command.console": "该命令只能由玩家执行", + "error.protocolMismatch.info":"此插件正在不兼容的版本协议上运行!这可能造成服务器崩溃。", + "error.protocolMismatch.version":"此插件支持版本协议 %1$s,服务器版本协议 %2$s。" })"; \ No newline at end of file