diff --git a/src/main/java/de/bixilon/minosoft/data/language/LanguageManager.kt b/src/main/java/de/bixilon/minosoft/data/language/LanguageManager.kt index d41e65974..6435a6d0f 100644 --- a/src/main/java/de/bixilon/minosoft/data/language/LanguageManager.kt +++ b/src/main/java/de/bixilon/minosoft/data/language/LanguageManager.kt @@ -20,6 +20,7 @@ import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.data.text.TextComponent import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.util.KUtil.synchronizedListOf +import de.bixilon.minosoft.util.KUtil.tryCatch import de.bixilon.minosoft.util.nbt.tag.NBTUtil.asCompound import java.io.FileNotFoundException @@ -52,14 +53,6 @@ class LanguageManager( fun load(language: String, version: Version?, path: ResourceLocation = ResourceLocation("lang/")): LanguageManager { val assetsManager = version?.assetsManager ?: Minosoft.MINOSOFT_ASSETS_MANAGER - fun tryLoadMinecraftLanguage(language: String): Language? { - return try { - tryLoadMinecraftLanguage(language) - } catch (exception: FileNotFoundException) { - null - } - } - fun loadMinecraftLanguage(language: String): Language { val data: MutableMap = mutableMapOf() @@ -85,7 +78,7 @@ class LanguageManager( val languages: MutableList = mutableListOf() if (language != "en_US") { - tryLoadMinecraftLanguage(language)?.let { languages += it } + tryCatch(FileNotFoundException::class.java, executor = { languages += loadMinecraftLanguage(language) }) } languages += loadMinecraftLanguage("en_US") diff --git a/src/main/java/de/bixilon/minosoft/util/KUtil.kt b/src/main/java/de/bixilon/minosoft/util/KUtil.kt index ae92e615e..1f06d850a 100644 --- a/src/main/java/de/bixilon/minosoft/util/KUtil.kt +++ b/src/main/java/de/bixilon/minosoft/util/KUtil.kt @@ -292,4 +292,17 @@ object KUtil { else -> TODO() } } + + fun tryCatch(vararg exceptions: Class = arrayOf(), executor: () -> T): T? { + try { + return executor() + } catch (thrown: Throwable) { + for (exception in exceptions) { + if (exception.isAssignableFrom(thrown::class.java)) { + return null + } + } + throw thrown + } + } }