From 6fd47f360c02bd6bb79c183ee6082227af5d3e7c Mon Sep 17 00:00:00 2001 From: coolGi Date: Thu, 1 Dec 2022 21:32:37 +1030 Subject: [PATCH] Fix to issue 446. (special characters in folder name causes crash) --- .../lod/core/file/structure/ClientOnlySaveStructure.java | 5 ++++- core/src/main/java/com/seibel/lod/core/util/LodUtil.java | 6 ++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/com/seibel/lod/core/file/structure/ClientOnlySaveStructure.java b/core/src/main/java/com/seibel/lod/core/file/structure/ClientOnlySaveStructure.java index 282204bbf..e453ae6bf 100644 --- a/core/src/main/java/com/seibel/lod/core/file/structure/ClientOnlySaveStructure.java +++ b/core/src/main/java/com/seibel/lod/core/file/structure/ClientOnlySaveStructure.java @@ -1,5 +1,6 @@ package com.seibel.lod.core.file.structure; +import com.google.common.net.PercentEscaper; import com.seibel.lod.core.file.LevelToFileMatcher; import com.seibel.lod.core.config.Config; import com.seibel.lod.api.enums.config.EServerFolderNameMode; @@ -65,7 +66,9 @@ public class ClientOnlySaveStructure extends SaveStructure { folderName = serverName + ", IP " + serverIpCleaned + (serverPortCleaned.length() != 0 ? ("-" + serverPortCleaned) : "") + ", GameVersion " + serverMcVersion; break; } - return folderName; + // PercentEscaper makes the characters all part of the standard alphameric character set + // This fixes some issues when the server is named something in other languages + return new PercentEscaper("", true).escape(folderName); } LevelToFileMatcher fileMatcher = null; diff --git a/core/src/main/java/com/seibel/lod/core/util/LodUtil.java b/core/src/main/java/com/seibel/lod/core/util/LodUtil.java index 1733e23d7..6b058f514 100644 --- a/core/src/main/java/com/seibel/lod/core/util/LodUtil.java +++ b/core/src/main/java/com/seibel/lod/core/util/LodUtil.java @@ -23,6 +23,7 @@ import java.util.Iterator; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import com.google.common.net.PercentEscaper; import com.seibel.lod.core.config.Config; import com.seibel.lod.api.enums.config.EServerFolderNameMode; import com.seibel.lod.api.enums.config.EVanillaOverdraw; @@ -234,8 +235,9 @@ public class LodUtil folderName = serverName + ", IP " + serverIpCleaned + (serverPortCleaned.length() != 0 ? ("-" + serverPortCleaned) : "") + ", GameVersion " + serverMcVersion; break; } - - return folderName; + // PercentEscaper makes the characters all part of the standard alphameric character set + // This fixes some issues when the server is named something in other languages + return new PercentEscaper("", true).escape(folderName); } public static int computeOverdrawOffset() {