From 98ef5049f4f51fde553876ad776459f20d3764af Mon Sep 17 00:00:00 2001 From: tterrag Date: Fri, 29 Mar 2019 16:29:26 -0400 Subject: [PATCH] Fix BrandingControl caching text through resource reload --- .../java/net/minecraftforge/common/ForgeMod.java | 9 +++++++++ .../java/net/minecraftforge/fml/BrandingControl.java | 12 ++++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/main/java/net/minecraftforge/common/ForgeMod.java b/src/main/java/net/minecraftforge/common/ForgeMod.java index 34d4b98fe..e633d3b37 100644 --- a/src/main/java/net/minecraftforge/common/ForgeMod.java +++ b/src/main/java/net/minecraftforge/common/ForgeMod.java @@ -20,6 +20,8 @@ package net.minecraftforge.common; import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.fml.BrandingControl; +import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.FMLWorldPersistenceHook; import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.VersionChecker; @@ -39,13 +41,17 @@ import net.minecraftforge.versions.mcp.MCPVersion; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import net.minecraft.client.Minecraft; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.resources.SimpleReloadableResourceManager; import net.minecraft.world.storage.SaveHandler; import net.minecraft.world.storage.WorldInfo; +import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.common.model.animation.CapabilityAnimation; import net.minecraftforge.energy.CapabilityEnergy; import net.minecraftforge.fluids.capability.CapabilityFluidHandler; import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.resource.ISelectiveResourceReloadListener; import net.minecraftforge.fluids.UniversalBucket; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.gameevent.PlayerEvent; @@ -128,6 +134,9 @@ public class ForgeMod implements WorldPersistenceHooks.WorldPersistenceHook { VersionChecker.startVersionCheck(); } + + // Brandings need to recompute when language changes + DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> ((SimpleReloadableResourceManager)Minecraft.getInstance().getResourceManager()).addReloadListener((ISelectiveResourceReloadListener) BrandingControl::clearCaches)); } /* diff --git a/src/main/java/net/minecraftforge/fml/BrandingControl.java b/src/main/java/net/minecraftforge/fml/BrandingControl.java index 1ad1cebd7..d62ecac8f 100644 --- a/src/main/java/net/minecraftforge/fml/BrandingControl.java +++ b/src/main/java/net/minecraftforge/fml/BrandingControl.java @@ -21,11 +21,16 @@ package net.minecraftforge.fml; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; + +import net.minecraft.resources.IResourceManager; +import net.minecraftforge.resource.IResourceType; +import net.minecraftforge.resource.VanillaResourceType; import net.minecraftforge.versions.forge.ForgeVersion; import net.minecraftforge.versions.mcp.MCPVersion; import java.util.List; import java.util.function.BiConsumer; +import java.util.function.Predicate; import java.util.stream.IntStream; public class BrandingControl @@ -70,4 +75,11 @@ public class BrandingControl public static String getServerBranding() { return "forge"; } + + public static void clearCaches(IResourceManager resourceManager, Predicate resourcePredicate) { + if (resourcePredicate.test(VanillaResourceType.LANGUAGES)) { + brandings = null; + brandingsNoMC = null; + } + } }