Skip to content

Commit d70a702

Browse files
authored
Automatically disable tips if the localization string is missing.
1 parent 7da45e9 commit d70a702

File tree

3 files changed

+37
-3
lines changed

3 files changed

+37
-3
lines changed

Common/src/main/java/net/darkhax/tipsmod/api/TipsAPI.java

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,10 @@
1414
import net.minecraft.client.gui.screens.PauseScreen;
1515
import net.minecraft.client.gui.screens.ProgressScreen;
1616
import net.minecraft.client.gui.screens.Screen;
17-
import net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen;
17+
import net.minecraft.client.resources.language.I18n;
1818
import net.minecraft.network.chat.Component;
19+
import net.minecraft.network.chat.ComponentContents;
20+
import net.minecraft.network.chat.contents.TranslatableContents;
1921
import net.minecraft.resources.ResourceLocation;
2022

2123
import java.util.HashMap;
@@ -76,6 +78,25 @@ public static boolean canDisplayTip(ITip tip) {
7678
return false;
7779
}
7880

81+
final ComponentContents contents = tip.getText().getContents();
82+
83+
if (contents instanceof TranslatableContents) {
84+
85+
final String key = ((TranslatableContents) contents).getKey();
86+
87+
// Disable tips missing translation for selected language.
88+
if (!TipsModCommon.CONFIG.useAmericanEnglishAsDefault && !TipsModCommon.TIP_MANAGER.getSelectedLanguage().has(key)) {
89+
90+
return false;
91+
}
92+
93+
// Disable tips missing any translation. Should never happen, but just in case I guess.
94+
if (!I18n.exists(key)) {
95+
96+
return false;
97+
}
98+
}
99+
79100
return true;
80101
}
81102
}

Common/src/main/java/net/darkhax/tipsmod/impl/Config.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ public class Config {
2424
@Expose
2525
public List<String> ignoredTips = new ArrayList<>();
2626

27+
@Expose
28+
public boolean useAmericanEnglishAsDefault = false;
29+
2730
public static Config load() {
2831

2932
File configFile = Services.PLATFORM.getConfigPath().resolve("tips.json").toFile();

Common/src/main/java/net/darkhax/tipsmod/impl/resources/TipManager.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package net.darkhax.tipsmod.impl.resources;
22

3-
import com.google.common.collect.ImmutableList;
43
import com.google.gson.Gson;
54
import com.google.gson.JsonElement;
65
import com.google.gson.JsonObject;
@@ -10,7 +9,9 @@
109
import net.darkhax.tipsmod.api.TipsAPI;
1110
import net.darkhax.tipsmod.api.resources.ITip;
1211
import net.darkhax.tipsmod.api.resources.ITipSerializer;
13-
import net.darkhax.tipsmod.impl.TipsModCommon;
12+
import net.minecraft.client.Minecraft;
13+
import net.minecraft.client.resources.language.ClientLanguage;
14+
import net.minecraft.client.resources.language.LanguageInfo;
1415
import net.minecraft.resources.ResourceLocation;
1516
import net.minecraft.server.packs.resources.ResourceManager;
1617
import net.minecraft.server.packs.resources.SimpleJsonResourceReloadListener;
@@ -28,6 +29,8 @@ public class TipManager extends SimpleJsonResourceReloadListener {
2829
private final List<ITip> randomAccess = new ArrayList<>();
2930
private final List<ITip> immutableAccess = Collections.unmodifiableList(randomAccess);
3031

32+
private ClientLanguage selectedLanguage;
33+
3134
public TipManager() {
3235

3336
super(new Gson(), "tips");
@@ -38,12 +41,19 @@ public List<ITip> getTips() {
3841
return this.immutableAccess;
3942
}
4043

44+
public ClientLanguage getSelectedLanguage() {
45+
return this.selectedLanguage;
46+
}
47+
4148
@Override
4249
protected void apply(Map<ResourceLocation, JsonElement> map, ResourceManager resourceManager, ProfilerFiller profilerFiller) {
4350

4451
this.loadedTips.clear();
4552
this.randomAccess.clear();
4653

54+
final LanguageInfo selectedLanguageInfo = Minecraft.getInstance().getLanguageManager().getSelected();
55+
this.selectedLanguage = ClientLanguage.loadFrom(resourceManager, Collections.singletonList(selectedLanguageInfo));
56+
4757
final long startTime = System.nanoTime();
4858

4959
map.forEach((tipId, tipData) -> {

0 commit comments

Comments
 (0)