From 3bbf5c04a61882fee1abe25ab0cfb822a606cc6d Mon Sep 17 00:00:00 2001 From: cpw Date: Sun, 17 May 2015 10:11:41 -0400 Subject: [PATCH] Strip control codes in progress bar messages. They cause crashes sometimes. --- .../main/java/cpw/mods/fml/client/FMLClientHandler.java | 7 +++++++ .../main/java/cpw/mods/fml/common/FMLCommonHandler.java | 5 +++++ .../main/java/cpw/mods/fml/common/IFMLSidedHandler.java | 2 ++ .../main/java/cpw/mods/fml/common/ProgressManager.java | 2 +- .../main/java/cpw/mods/fml/server/FMLServerHandler.java | 8 +++++++- 5 files changed, 22 insertions(+), 2 deletions(-) diff --git a/fml/src/main/java/cpw/mods/fml/client/FMLClientHandler.java b/fml/src/main/java/cpw/mods/fml/client/FMLClientHandler.java index 53b7f3cb8a..73dc9a6943 100644 --- a/fml/src/main/java/cpw/mods/fml/client/FMLClientHandler.java +++ b/fml/src/main/java/cpw/mods/fml/client/FMLClientHandler.java @@ -58,6 +58,7 @@ import net.minecraft.network.NetworkManager; import net.minecraft.network.ServerStatusResponse; import net.minecraft.server.MinecraftServer; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StringUtils; import net.minecraft.world.WorldSettings; import net.minecraft.world.storage.SaveFormatOld; @@ -1010,4 +1011,10 @@ public class FMLClientHandler implements IFMLSidedHandler Display.processMessages(); SplashProgress.mutex.release(); } + + @Override + public String stripSpecialChars(String message) + { + return StringUtils.stripControlCodes(message); + } } diff --git a/fml/src/main/java/cpw/mods/fml/common/FMLCommonHandler.java b/fml/src/main/java/cpw/mods/fml/common/FMLCommonHandler.java index ed4e61382b..b770baf445 100644 --- a/fml/src/main/java/cpw/mods/fml/common/FMLCommonHandler.java +++ b/fml/src/main/java/cpw/mods/fml/common/FMLCommonHandler.java @@ -632,4 +632,9 @@ public class FMLCommonHandler Runtime.getRuntime().exit(exitCode); } } + + public String stripSpecialChars(String message) + { + return sidedDelegate != null ? sidedDelegate.stripSpecialChars(message) : message; + } } diff --git a/fml/src/main/java/cpw/mods/fml/common/IFMLSidedHandler.java b/fml/src/main/java/cpw/mods/fml/common/IFMLSidedHandler.java index abc08bc425..5daadbb11b 100644 --- a/fml/src/main/java/cpw/mods/fml/common/IFMLSidedHandler.java +++ b/fml/src/main/java/cpw/mods/fml/common/IFMLSidedHandler.java @@ -63,4 +63,6 @@ public interface IFMLSidedHandler void allowLogins(); void processWindowMessages(); + + String stripSpecialChars(String message); } diff --git a/fml/src/main/java/cpw/mods/fml/common/ProgressManager.java b/fml/src/main/java/cpw/mods/fml/common/ProgressManager.java index a2a7194c89..7808c3d201 100644 --- a/fml/src/main/java/cpw/mods/fml/common/ProgressManager.java +++ b/fml/src/main/java/cpw/mods/fml/common/ProgressManager.java @@ -71,7 +71,7 @@ public class ProgressManager { if(step >= steps) throw new IllegalStateException("too much steps for ProgressBar " + title); step++; - this.message = message; + this.message = FMLCommonHandler.instance().stripSpecialChars(message); FMLCommonHandler.instance().processWindowMessages(); } diff --git a/fml/src/main/java/cpw/mods/fml/server/FMLServerHandler.java b/fml/src/main/java/cpw/mods/fml/server/FMLServerHandler.java index 0a362de43b..d8dc4e9b1c 100644 --- a/fml/src/main/java/cpw/mods/fml/server/FMLServerHandler.java +++ b/fml/src/main/java/cpw/mods/fml/server/FMLServerHandler.java @@ -259,7 +259,7 @@ public class FMLServerHandler implements IFMLSidedHandler { return DedicatedServer.allowPlayerLogins; } - + @Override public void allowLogins() { DedicatedServer.allowPlayerLogins = true; @@ -270,4 +270,10 @@ public class FMLServerHandler implements IFMLSidedHandler { // NOOP } + + @Override + public String stripSpecialChars(String message) + { + return message; + } }