From 69ba974960bb8cf491a727f13f83c8c236f54fa3 Mon Sep 17 00:00:00 2001 From: tterrag Date: Wed, 30 Oct 2019 15:01:25 -0400 Subject: [PATCH] Escape control chars and unicode when writing out lang datagen --- .../java/net/minecraftforge/common/data/LanguageProvider.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/net/minecraftforge/common/data/LanguageProvider.java b/src/main/java/net/minecraftforge/common/data/LanguageProvider.java index 43fd8d46d1..e82f146e76 100644 --- a/src/main/java/net/minecraftforge/common/data/LanguageProvider.java +++ b/src/main/java/net/minecraftforge/common/data/LanguageProvider.java @@ -27,6 +27,8 @@ import java.util.Objects; import java.util.TreeMap; import java.util.function.Supplier; +import org.apache.commons.lang3.StringEscapeUtils; + import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -41,6 +43,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.potion.Effect; import net.minecraft.world.biome.Biome; +@SuppressWarnings("deprecation") public abstract class LanguageProvider implements IDataProvider { private static final Gson GSON = (new GsonBuilder()).setPrettyPrinting().disableHtmlEscaping().create(); private final Map data = new TreeMap<>(); @@ -70,6 +73,7 @@ public abstract class LanguageProvider implements IDataProvider { private void save(DirectoryCache cache, Object object, Path target) throws IOException { String data = GSON.toJson(object); + data = StringEscapeUtils.escapeJava(data); // Escape control chars and unicode String hash = IDataProvider.HASH_FUNCTION.hashUnencodedChars(data).toString(); if (!Objects.equals(cache.getPreviousHash(target), hash) || !Files.exists(target)) { Files.createDirectories(target.getParent());