Skip to content

Commit 39ce419

Browse files
committed
Fix incompatibility with OSL Localization api
1 parent d308a0b commit 39ce419

5 files changed

Lines changed: 56 additions & 3 deletions

File tree

fabricated-fml/src/main/java/io/github/fabriccompatibilitylayers/fabricatedfml/mixin/common/StringTranslateMixin.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
*/
66
package io.github.fabriccompatibilitylayers.fabricatedfml.mixin.common;
77

8+
import com.moulberry.mixinconstraints.annotations.IfModAbsent;
89
import cpw.mods.fml.common.registry.LanguageRegistry;
910
import net.minecraft.src.StringTranslate;
1011
import org.spongepowered.asm.mixin.Mixin;
@@ -16,6 +17,7 @@
1617

1718
@Mixin(StringTranslate.class)
1819
public class StringTranslateMixin {
20+
@IfModAbsent("osl-localization")
1921
@Inject(method = "func_74812_a", at = @At("RETURN"))
2022
private void fml$loadLanguageTable(Properties p_74812_1_, String p_74812_2_, CallbackInfo ci) {
2123
LanguageRegistry.instance().loadLanguageTable(p_74812_1_, p_74812_2_);
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/**
2+
* Copyright (C) 2026 Fabric Compatibility Layer Team
3+
*
4+
* Licensed under the Open Software License version 3.0
5+
*/
6+
package io.github.fabriccompatibilitylayers.fabricatedfml.mixin.osl;
7+
8+
import com.moulberry.mixinconstraints.annotations.IfModLoaded;
9+
import cpw.mods.fml.common.registry.LanguageRegistry;
10+
import net.ornithemc.osl.localization.api.language.Language;
11+
import net.ornithemc.osl.localization.impl.Locale;
12+
import net.ornithemc.osl.localization.impl.Localization;
13+
import net.ornithemc.osl.resource.loader.api.resource.manager.ResourceManager;
14+
import org.spongepowered.asm.mixin.Mixin;
15+
import org.spongepowered.asm.mixin.Shadow;
16+
import org.spongepowered.asm.mixin.injection.At;
17+
import org.spongepowered.asm.mixin.injection.Inject;
18+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
19+
20+
import java.util.List;
21+
import java.util.Map;
22+
import java.util.Properties;
23+
24+
@IfModLoaded("osl-localization")
25+
@Mixin(Locale.class)
26+
public abstract class LocaleMixin {
27+
@Shadow
28+
protected abstract void set(String key, String translation);
29+
30+
@Inject(method = "init", at = @At("RETURN"))
31+
private void fml$initLanguage(Map<String, String> map, Properties properties, CallbackInfo ci) {
32+
if (properties != null) {
33+
Language language = Localization.getLanguageManager().getSelectedLanguage();
34+
LanguageRegistry.instance().loadLanguageTable(properties, language != null ? language.code() : "en_US");
35+
}
36+
}
37+
38+
@Inject(method = "reload", at = @At(value = "INVOKE", target = "Lnet/ornithemc/osl/localization/impl/Locale;setLastUpdateTime()V", remap = false), remap = false)
39+
private void fml$loadLanguage(ResourceManager resourceManager, List<String> languages, CallbackInfo ci) {
40+
for (String language : languages) {
41+
Properties properties = new Properties();
42+
LanguageRegistry.instance().loadLanguageTable(properties, language);
43+
44+
for (String key : properties.stringPropertyNames()) {
45+
String value = properties.getProperty(key);
46+
this.set(key, value);
47+
}
48+
}
49+
}
50+
}

fabricated-fml/src/main/resources/fabric.mod.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"issues": ""
1515
},
1616
"license": ["OSL-3.0", "LGPL-2.1-only"],
17-
"icon": "assets/fabricated-fml/icon.png",
17+
"icon": "assets/fabricated-forge/icon.png",
1818
"environment": "*",
1919
"entrypoints": {
2020
"preLaunch": [

fabricated-fml/src/main/resources/fabricated-fml.mixins.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@
4747
"common.WorldInfoMixin",
4848
"common.WorldMixin",
4949
"common.WorldProviderMixin",
50-
"common.WorldTypeMixin"
50+
"common.WorldTypeMixin",
51+
"osl.LocaleMixin"
5152
],
5253
"client": [
5354
"client.GameSettingsMixin",

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ fabric_loader_version = 0.18.2
1010

1111
mod_remapping_api=1.28.3
1212
legacyfabric_version=1.17.1
13-
osl_version=0.18.0
13+
osl_version=0.19.0-alpha.10
1414
modmenu_version=0.4.0
1515

1616
target=legacy-fabric

0 commit comments

Comments
 (0)