From 61a4b203b5e785cbad86b07e4710d7ac441015f4 Mon Sep 17 00:00:00 2001 From: Bigjango13 Date: Sun, 30 Jun 2024 00:27:10 +0000 Subject: [PATCH] Language fixes --- mods/src/misc/misc.cpp | 57 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/mods/src/misc/misc.cpp b/mods/src/misc/misc.cpp index 9036560b..7a28006b 100644 --- a/mods/src/misc/misc.cpp +++ b/mods/src/misc/misc.cpp @@ -744,6 +744,52 @@ static std::string AppPlatform_linux_getDateString_injection(__attribute__((unus template static void nop(__attribute__((unused)) Args... args) { } + +static GLfloat color[4] = {1.f, 0.f, 0.f, 1.f}; +HOOK(glFogfv, void, (GLenum pname, const GLfloat *params)) { + if (pname == GL_FOG_COLOR) { + params = color; + } + ensure_glFogfv(); + real_glFogfv(pname, params); +} +HOOK(glClearColor, void, (__attribute__((unused)) GLfloat red, __attribute__((unused)) GLfloat green, __attribute__((unused)) GLfloat blue, __attribute__((unused)) GLfloat alpha)) { + ensure_glClearColor(); + real_glClearColor(color[0], color[1], color[2], color[3]); +} + +static void Language_injection() { + // Fix language strings + I18n::_strings.insert(std::make_pair("tile.waterStill.name", "Still Water")); + I18n::_strings.insert(std::make_pair("tile.lavaStill.name", "Still Lava")); + I18n::_strings.insert(std::make_pair("tile.grassCarried.name", "Carried Grass")); + I18n::_strings.insert(std::make_pair("tile.leavesCarried.name", "Carried Leaves")); + I18n::_strings.insert(std::make_pair("tile.invBedrock.name", "Invisible Bedrock")); + // Missing language strings + I18n::_strings.insert(std::make_pair("item.camera.name", "Camera")); + I18n::_strings.insert(std::make_pair("item.seedsMelon.name", "Melon Seeds")); + I18n::_strings.insert(std::make_pair("tile.pumpkinStem.name", "Pumpkin Stem")); + I18n::_strings.insert(std::make_pair("tile.stoneSlab.name", "Double Stone Slab")); +} + +Tile *Tile_init_invBedrock_injection(Tile *t) { + Tile *ret = Tile_init(t); + // Fix invisible bedrock's name + std::string invBedrock = "invBedrock"; + t->vtable->setDescriptionId(t, &invBedrock); + return ret; +} + +void copy_with_still(std::string *into, char *from) { + *into = from; + *into += "Still"; +} + +void copy_with_carried(std::string *into, char *from) { + *into = std::string(from); + *into += "Carried"; +} + void init_misc() { // Remove Invalid Item Background (A Red Background That Appears For Items That Are Not Included In The gui_blocks Atlas) if (feature_has("Remove Invalid Item Background", server_disabled)) { @@ -993,4 +1039,15 @@ void init_misc() { overwrite_calls(Gui_onConfigChanged, nop); overwrite_calls(LevelRenderer_generateSky, nop); } + + // Fix/update lang strings + misc_run_on_language_setup(Language_injection); + // Water/lava flowing lang + overwrite_call((void *) 0xc3b54, (void *) copy_with_still); + overwrite_call((void *) 0xc3c7c, (void *) copy_with_still); + // Carried tile lang + patch_address((void *) 0xc6674, (void *) "grassCarried"); + patch_address((void *) 0xc6684, (void *) "leavesCarried"); + // InvBedrock lang + overwrite_call((void *) 0xc5f04, (void *) Tile_init_invBedrock_injection); }