Skip to content

Commit

Permalink
add config
Browse files Browse the repository at this point in the history
  • Loading branch information
KobeBryant114514 committed Sep 19, 2023
1 parent 08293e0 commit e85056f
Show file tree
Hide file tree
Showing 4 changed files with 104 additions and 19 deletions.
23 changes: 16 additions & 7 deletions resource/texts/zh_CN.lang
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,9 @@ death.attack.lightningBolt=%1$s被闪电击中 #
death.attack.lightningBolt.player=%1$s在与%2$s战斗时被闪电击中 #
death.attack.lightningBolt.item=%1$s在与持有%3$s的%2$s战斗时被闪电击中 #
death.attack.magic=%1$s被魔法杀死了 #
death.attack.magma=%1$s发现地板是熔岩做的 #
death.attack.magma.player=%1$s因%2$s而步入危险之地 #
death.attack.magma.item=%1$s因持有%3$s的%2$s而步入危险之地 #
death.attack.hotFloor=%1$s发现地板是熔岩做的 #
death.attack.hotFloor.player=%1$s因%2$s而步入危险之地 #
death.attack.hotFloor.item=%1$s因持有%3$s的%2$s而步入危险之地 #
death.attack.mob=%1$s被%2$s杀死了 #
death.attack.mob.item=%1$s被%2$s用%3$s杀死了 #
death.attack.sting=%1$s被%2$s蛰死了 #
Expand Down Expand Up @@ -87,19 +87,28 @@ death.attack.stalactite.item=%1$s在与持有%3$s的%2$s战斗时被坠落的钟
death.attack.stalagmite=%1$s被石笋刺穿了 #
death.attack.stalagmite.player=%1$s在与%2$s战斗时被石笋刺穿了 #
death.attack.stalagmite.item=%1$s在与持有%3$s的%2$s战斗时被石笋刺穿了 #
death.attack.witherSkull=%1$s被%2$s发射的头颅射中了 #
death.attack.witherSkull.item=%1$s被%2$s用%3$s发射的头颅射中了 #
death.attack.witherSkull=%1$s被%2$s发射的头颅射杀 #
death.attack.witherSkull.item=%1$s被%2$s用%3$s发射的头颅射杀 #
death.attack.even_more_magic=%1$s被不为人知的魔法杀死了 #
death.attack.genericKill=%1$s被杀死了 #
death.attack.suicide.player=%1$s在与%2$s战斗时被杀死了 #
death.attack.suicide.item=%1$s在与持有%3$s的%2$s战斗时被杀死了 #
death.attack.genericKill.player=%1$s在与%2$s战斗时被杀死了 #
death.attack.genericKill.item=%1$s在与持有%3$s的%2$s战斗时被杀死了 #
death.attack.dragonBreath=%1$s被龙息烤熟了 #
death.attack.dragonBreath.player=%1$s被%2$s的龙息烤熟了 #
death.attack.dryout=%1$s因脱水而死
death.attack.dryout.player=%1$s在试图逃离%2$s时因脱水而死
death.attack.outsideBorder=%1$s脱离了这个世界
death.attack.outsideBorder.player=%1$s在与%2$s战斗时脱离了这个世界
death.fell.accident.generic=%1$s从高处摔了下来 #
death.fell.assist=%1$s因为%2$s注定要摔死 #
death.fell.assist.item=%1$s因为%2$s使用了%3$s注定要摔死 #
death.fell.finish=%1$s摔伤得太重并被%2$s完结了生命 #
death.fell.finish.item=%1$s摔伤得太重并被%2$s用%3$s完结了生命 #
death.fell.killer=%1$s注定要摔死

multiplayer.player.joined=%s加入了游戏 #
multiplayer.player.left=%s退出了游戏 #

entity.area_effect_cloud.name=区域效果云 #
entity.armor_stand.name=盔甲架 #
entity.arrow.name=箭 #
Expand Down
61 changes: 61 additions & 0 deletions src/Config.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
#include <LoggerAPI.h>

nlohmann::json Plugin_Config = {};
extern bool ConsoleLog;
extern bool FileLog;
extern bool JLLog;
extern bool fixDragonBreath;

std::string defaultConfig = R"({
//是否启用控制台死亡信息
//由于从 BDS 1.20.0 开始,BDS的I18n只加载原版资源包,这会导致控制台部分死亡信息不能正常翻译
//欲修复此问题,请安装 I18nFixer 插件
"EnableConsoleLog": false,
//是否将死亡日志写入文件保存
//保存路径为 ./logs/DeathLog.log
//如果未启用控制台死亡信息,此选项无效
"EnableDeathLogFile": false,
//是否修复龙息伤害定义
//在Java版15w31c前,末影龙的龙息攻击使用dragon_breath伤害类型,但之后则改为了indirect_magic伤害类型。
//启用此项后死于龙息会有特殊的死亡信息
"EnableDragonBreathFix": false,
//是否启用玩家进退服信息
"EnableJoin&LeftMessage": false
})";

void tryCreateConfigFile() {
if(!std::filesystem::exists("./plugins/DeathMessages")){
std::filesystem::create_directories("./plugins/DeathMessages");
}
if(!std::filesystem::exists("./plugins/DeathMessages/config.jsonc")){
WriteAllFile("./plugins/DeathMessages/config.jsonc", defaultConfig);
}
}

void initConfig() {
std::ifstream jsonfile("./plugins/DeathMessages/config.jsonc");
if (jsonfile) {
std::stringstream buffer;
buffer << jsonfile.rdbuf();
std::string jsoncString = buffer.str();
Plugin_Config = nlohmann::json::parse(jsoncString, nullptr, true, true);
jsonfile.close();
}
if (Plugin_Config.contains("EnableConsoleLog") && Plugin_Config["EnableConsoleLog"].is_boolean()) {
ConsoleLog = Plugin_Config["EnableConsoleLog"].get<bool>();
}
if (Plugin_Config.contains("EnableDeathLogFile") && Plugin_Config["EnableDeathLogFile"].is_boolean()) {
FileLog = Plugin_Config["EnableDeathLogFile"].get<bool>();
}
if (Plugin_Config.contains("EnableDragonBreathFix") && Plugin_Config["EnableDragonBreathFix"].is_boolean()) {
fixDragonBreath = Plugin_Config["EnableDragonBreathFix"].get<bool>();
}
if (Plugin_Config.contains("EnableJoin&LeftMessage") && Plugin_Config["EnableJoin&LeftMessage"].is_boolean()) {
JLLog = Plugin_Config["EnableJoin&LeftMessage"].get<bool>();
}
}

void loadConfig() {
tryCreateConfigFile();
initConfig();
}
35 changes: 24 additions & 11 deletions src/DamageCause.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,14 @@
#include <stdio.h>
#include <WinNls.h>
#include <mc/Player.hpp>

extern std::vector<unsigned char> resource;

bool fixDragonBreath = false;
bool ConsoleLog = false;
bool FileLog = false;
bool JLLog = false;

void regesterDamageCause() {
GMLib_Mod::addDamageCause(ActorDamageCause::Anvil, "anvil", "null");
GMLib_Mod::addDamageCauseWithMessage(ActorDamageCause::BlockExplosion, "explosion", "death.attack.explosion", "crystal");
Expand Down Expand Up @@ -42,7 +48,7 @@ void regesterDamageCause() {
GMLib_Mod::addDamageCause(ActorDamageCause::Wither, "wither", "null");
GMLib_Mod::addDamageCauseWithMessage(ActorDamageCause::Magic, "magic", "death.attack.magic", "null");
GMLib_Mod::addDamageCause(ActorDamageCause::Magic, "indirectMagic");
GMLib_Mod::addDamageCause(ActorDamageCause::Magma, "magma", "null");
GMLib_Mod::addDamageCause(ActorDamageCause::Magma, "hotFloor", "null");
GMLib_Mod::addDamageCause(ActorDamageCause::Stalactite, "stalactite", "null");
GMLib_Mod::addDamageCause(ActorDamageCause::Stalagmite, "stalagmite", "null");
GMLib_Mod::addDamageCause(ActorDamageCause::Starve, "starve", "null");
Expand All @@ -61,23 +67,30 @@ void regesterDamageCause() {
GMLib_Mod::addDamageCause(ActorDamageCause::Projectile, "arrow", "minecraft:arrow");
GMLib_Mod::addDamageCause(ActorDamageCause::Projectile, "thrown");
//GMLib_Mod::addDamageCause(ActorDamageCause::Projectile, "generic", "null");
if (fixDragonBreath) {
GMLib_Mod::addDamageCauseWithMessage(ActorDamageCause::Magic, "dragonBreath", "death.attack.dragonBreath.player", "minecraft:ender_dragon");
}
}

void buildResourcePack() {
GMLib_Mod::addResourcePack("DeathMessagesPack", resource, "5.0.0");
GMLib_Mod::addResourcePack("DeathMessagesPack", resource, "1.0.0-Beta1");
}

void LoadPlugin() {
GMLib_Mod::setEnableDeathLog(true);
if (ConsoleLog) {
GMLib_Mod::setEnableDeathLog(FileLog);
}
GMLib_Mod::setFixWeaponName();
buildResourcePack();
regesterDamageCause();
Event::PlayerJoinEvent::subscribe([](const Event::PlayerJoinEvent& ev) {
Logger("Server").info("{}",fmt::format(fg(fmt::color::yellow),ev.mPlayer->getName() + "加入了游戏"));
return true;
});
Event::PlayerLeftEvent::subscribe([](const Event::PlayerLeftEvent& ev) {
Logger("Server").info("{}",fmt::format(fg(fmt::color::yellow),ev.mPlayer->getName() + "退出了游戏"));
return true;
});
if (JLLog) {
Event::PlayerJoinEvent::subscribe([](const Event::PlayerJoinEvent& ev) {
Logger("Server").info("{}", fmt::format(fg(fmt::color::yellow), GMLib_Mod::i18nTranslate("multiplayer.player.joined", {ev.mPlayer->getName()})));
return true;
});
Event::PlayerLeftEvent::subscribe([](const Event::PlayerLeftEvent& ev) {
Logger("Server").info("{}", fmt::format(fg(fmt::color::yellow), GMLib_Mod::i18nTranslate("multiplayer.player.left", {ev.mPlayer->getName()})));
return true;
});
}
}
4 changes: 3 additions & 1 deletion src/Main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@

extern Logger logger;
extern void LoadPlugin();
extern void loadConfig();

void PluginInit() {
loadConfig();
LoadPlugin();
Logger(PLUGIN_NAME).info("当前版本 {}", PLUGIN_FILE_VERSION_STRING);
Logger(PLUGIN_NAME).info("插件作者 Tsubasa6848");
LoadPlugin();
}

0 comments on commit e85056f

Please sign in to comment.