#include "Entry.h" #include "Global.h" #include "Language.h" #include "ll/api/mod/Mod.h" #include "ll/api/Config.h" #include "ll/api/io/PatternFormatter.h" #include "ll/api/io/Logger.h" #include "ll/api/io/LoggerRegistry.h" #include "ll/api/io/FileSink.h" #include "ll/api/mod/RegisterHelper.h" #include "ll/api/data/IndirectValue.h" #include "gmlib/gm/i18n/LangI18n.h" #include "gmlib/gm/i18n/ResourceI18n.h" ll::io::LoggerRegistry& loggerRegistry = ll::io::LoggerRegistry::getInstance(); std::shared_ptr logger = loggerRegistry.getOrCreate(MOD_NAME); std::shared_ptr deathLogger = loggerRegistry.getOrCreate("Death"); std::shared_ptr infoLogger = loggerRegistry.getOrCreate("Server"); namespace DeathMessages { Entry& Entry::getInstance() { static Entry instance; return instance; } bool Entry::load() { mConfig.emplace(); if (!ll::config::loadConfig(*mConfig, getSelf().getConfigDir() / u8"config.json")) { ll::config::saveConfig(*mConfig, getSelf().getConfigDir() / u8"config.json"); } if (getConfig().ServerSideTranslation.Enabled) { loadI18n(); } else { loadResourcePack(); } if (getConfig().FileLog.Enabled) { auto& path = getConfig().FileLog.Path; ll::Polymorphic polymorphicFormatter = ll::makePolymorphic("[{3:.3%F %T.} {2}][{1}] {0}", false); deathLogger->addSink(std::make_shared(path, polymorphicFormatter)); } return true; } bool Entry::enable() { RegisterDamageDefinition(); /* ListenEvents();*/ return true; } bool Entry::disable() { return true; } bool Entry::unload() { mConfig.reset(); mI18n.reset(); // getInstance().reset(); return true; } Config& Entry::getConfig() { return mConfig.value(); } std::unique_ptr Entry::getI18n() { return std::move(mI18n); } void Entry::loadI18n() { mI18n= std::make_unique(getSelf().getLangDir(), getConfig().ServerSideTranslation.Language); mI18n->updateOrCreateLanguage("en_US", en_US); mI18n->updateOrCreateLanguage("zh_CN", zh_CN); mI18n->loadAllLanguages(); mI18n->setDefaultLanguage("zh_CN"); } void Entry::loadResourcePack() { auto resource = gmlib::i18n::ResourceI18n{getSelf().getModDir() / u8"lang", MOD_NAME, 0, 8, 0}; resource.addLanguage("en_US", en_US); resource.addLanguage("zh_CN", zh_CN); resource.loadAllLanguages(); } } // namespace DeathMessages LL_REGISTER_MOD(DeathMessages::Entry, DeathMessages::Entry::getInstance()); /*std::string tr(std::string const& key, std::vector const& params) { if (auto i18n = DeathMessages::Entry::getInstance().getI18n()) { return i18n->get(key, params); } auto i18n = DeathMessages::Entry::getI18n(); return i18n->get(key, params); }*/