diff --git a/src/main/java/de/bixilon/minosoft/data/chat/message/SignedChatMessage.kt b/src/main/java/de/bixilon/minosoft/data/chat/message/SignedChatMessage.kt index 220d0cda4..537f4aee7 100644 --- a/src/main/java/de/bixilon/minosoft/data/chat/message/SignedChatMessage.kt +++ b/src/main/java/de/bixilon/minosoft/data/chat/message/SignedChatMessage.kt @@ -41,9 +41,9 @@ class SignedChatMessage( // ToDo: parent (formatting) val data = type.chat.formatParameters(parameters) text = if (connection.language.canTranslate(type.chat.translationKey.toResourceLocation())) { - connection.language.translate(type.chat.translationKey.toResourceLocation(), data = data) + connection.language.translate(type.chat.translationKey.toResourceLocation(), restrictedMode = true, data = data) } else { - Language.translate(type.chat.translationKey, data = data) + Language.translate(type.chat.translationKey, restrictedMode = true, data = data) } text.setFallbackColor(ChatUtil.DEFAULT_CHAT_COLOR) } diff --git a/src/main/java/de/bixilon/minosoft/data/language/LanguageUtil.kt b/src/main/java/de/bixilon/minosoft/data/language/LanguageUtil.kt index ac0aab8a7..b00fb8f4e 100644 --- a/src/main/java/de/bixilon/minosoft/data/language/LanguageUtil.kt +++ b/src/main/java/de/bixilon/minosoft/data/language/LanguageUtil.kt @@ -74,11 +74,11 @@ object LanguageUtil { return this.replace("\\n", "\n") } - fun getFallbackTranslation(key: ResourceLocation?, parent: TextComponent?, vararg data: Any?): ChatComponent { + fun getFallbackTranslation(key: ResourceLocation?, parent: TextComponent?, restrictedMode: Boolean = false, vararg data: Any?): ChatComponent { if (data.isEmpty()) { - return ChatComponent.of(key.toString(), null, parent) + return ChatComponent.of(key.toString(), null, parent, restrictedMode) } - return ChatComponent.of(key.toString() + "->" + data.contentToString(), null, parent) + return ChatComponent.of(key.toString() + "->" + data.contentToString(), null, parent, restrictedMode) } fun loadLanguage(language: String, assetsManager: AssetsManager, json: Boolean, path: ResourceLocation): Translator { diff --git a/src/main/java/de/bixilon/minosoft/data/language/lang/Language.kt b/src/main/java/de/bixilon/minosoft/data/language/lang/Language.kt index 8c1d119f1..6c5803f9d 100644 --- a/src/main/java/de/bixilon/minosoft/data/language/lang/Language.kt +++ b/src/main/java/de/bixilon/minosoft/data/language/lang/Language.kt @@ -28,9 +28,9 @@ class Language( return data.containsKey(key?.path) } - override fun translate(key: ResourceLocation?, parent: TextComponent?, vararg data: Any?): ChatComponent { - val placeholder = this.data[key?.path] ?: return LanguageUtil.getFallbackTranslation(key, parent, *data) - return Companion.translate(placeholder, parent, this, *data) + override fun translate(key: ResourceLocation?, parent: TextComponent?, restrictedMode: Boolean, vararg data: Any?): ChatComponent { + val placeholder = this.data[key?.path] ?: return LanguageUtil.getFallbackTranslation(key, parent, restrictedMode, *data) + return Companion.translate(placeholder, parent, this, restrictedMode, *data) } override fun toString(): String { @@ -42,7 +42,7 @@ class Language( private val FORMATTER_SPLIT_REGEX = "%[ds]".toRegex() // %s fell from a high place - fun translate(placeholder: String, parent: TextComponent? = null, translator: Translator? = null, vararg data: Any?): ChatComponent { + fun translate(placeholder: String, parent: TextComponent? = null, translator: Translator? = null, restrictedMode: Boolean = false, vararg data: Any?): ChatComponent { val ret = BaseComponent() @@ -77,9 +77,9 @@ class Language( // create base component for ((index, part) in splitPlaceholder.withIndex()) { - ret += ChatComponent.of(part, translator, parent) + ret += ChatComponent.of(part, translator, parent, restrictedMode) if (index < data.size) { - ret += ChatComponent.of(arguments[index], translator, parent) + ret += ChatComponent.of(arguments[index], translator, parent, restrictedMode) } } diff --git a/src/main/java/de/bixilon/minosoft/data/language/lang/LanguageList.kt b/src/main/java/de/bixilon/minosoft/data/language/lang/LanguageList.kt index da6fb7c27..71661bce9 100644 --- a/src/main/java/de/bixilon/minosoft/data/language/lang/LanguageList.kt +++ b/src/main/java/de/bixilon/minosoft/data/language/lang/LanguageList.kt @@ -32,12 +32,12 @@ class LanguageList( return false } - override fun translate(key: ResourceLocation?, parent: TextComponent?, vararg data: Any?): ChatComponent { + override fun translate(key: ResourceLocation?, parent: TextComponent?, restrictedMode: Boolean, vararg data: Any?): ChatComponent { for (language in list) { if (language.canTranslate(key)) { - return language.translate(key, parent, data) + return language.translate(key, parent, restrictedMode, data) } } - return LanguageUtil.getFallbackTranslation(key, parent, data) + return LanguageUtil.getFallbackTranslation(key, parent, restrictedMode, data) } } diff --git a/src/main/java/de/bixilon/minosoft/data/language/manager/LanguageManager.kt b/src/main/java/de/bixilon/minosoft/data/language/manager/LanguageManager.kt index 94aee567a..610a4e4f1 100644 --- a/src/main/java/de/bixilon/minosoft/data/language/manager/LanguageManager.kt +++ b/src/main/java/de/bixilon/minosoft/data/language/manager/LanguageManager.kt @@ -33,13 +33,13 @@ class LanguageManager( return false } - override fun translate(key: ResourceLocation?, parent: TextComponent?, vararg data: Any?): ChatComponent { + override fun translate(key: ResourceLocation?, parent: TextComponent?, restrictedMode: Boolean, vararg data: Any?): ChatComponent { for (language in languages) { if (!language.canTranslate(key)) { continue } - return language.translate(key, parent, *data) + return language.translate(key, parent, restrictedMode, *data) } - return LanguageUtil.getFallbackTranslation(key, parent, data) + return LanguageUtil.getFallbackTranslation(key, parent, restrictedMode, data) } } diff --git a/src/main/java/de/bixilon/minosoft/data/language/manager/MultiLanguageManager.kt b/src/main/java/de/bixilon/minosoft/data/language/manager/MultiLanguageManager.kt index 80c5cf83c..a81a56bff 100644 --- a/src/main/java/de/bixilon/minosoft/data/language/manager/MultiLanguageManager.kt +++ b/src/main/java/de/bixilon/minosoft/data/language/manager/MultiLanguageManager.kt @@ -27,9 +27,9 @@ class MultiLanguageManager( return translators[key.namespace]?.canTranslate(key) == true } - override fun translate(key: ResourceLocation?, parent: TextComponent?, vararg data: Any?): ChatComponent { - key ?: return ChatComponent.of("null: ${data.contentToString()}") + override fun translate(key: ResourceLocation?, parent: TextComponent?, restrictedMode: Boolean, vararg data: Any?): ChatComponent { + key ?: return ChatComponent.of("null: ${data.contentToString()}", restrictedMode = restrictedMode) - return translators[key.namespace]?.translate(key, parent, *data) ?: ChatComponent.of("$key: ${data.contentToString()}") + return translators[key.namespace]?.translate(key, parent, restrictedMode, *data) ?: ChatComponent.of("$key: ${data.contentToString()}", restrictedMode = restrictedMode) } } diff --git a/src/main/java/de/bixilon/minosoft/data/language/translate/Translator.kt b/src/main/java/de/bixilon/minosoft/data/language/translate/Translator.kt index fa70f0ac1..ea1eac253 100644 --- a/src/main/java/de/bixilon/minosoft/data/language/translate/Translator.kt +++ b/src/main/java/de/bixilon/minosoft/data/language/translate/Translator.kt @@ -21,7 +21,8 @@ interface Translator { fun canTranslate(key: ResourceLocation?): Boolean - fun translate(key: ResourceLocation?, parent: TextComponent? = null, vararg data: Any?): ChatComponent + fun translate(key: ResourceLocation?, parent: TextComponent? = null, vararg data: Any?): ChatComponent = translate(key, parent, false, *data) + fun translate(key: ResourceLocation?, parent: TextComponent? = null, restrictedMode: Boolean = false, vararg data: Any?): ChatComponent fun translate(translatable: Any?): ChatComponent { diff --git a/src/main/java/de/bixilon/minosoft/data/text/BaseComponent.kt b/src/main/java/de/bixilon/minosoft/data/text/BaseComponent.kt index 03c394064..3aeb00c51 100644 --- a/src/main/java/de/bixilon/minosoft/data/text/BaseComponent.kt +++ b/src/main/java/de/bixilon/minosoft/data/text/BaseComponent.kt @@ -150,14 +150,14 @@ class BaseComponent : ChatComponent { fun parseExtra() { json["extra"].toJsonList()?.let { for (data in it) { - parts += ChatComponent.of(data, translator, currentParent) + parts += ChatComponent.of(data, translator, currentParent, restrictedMode) } } } json["text"]?.nullCast()?.let { if (it.indexOf(ProtocolDefinition.TEXT_COMPONENT_SPECIAL_PREFIX_CHAR) != -1) { - this += ChatComponent.of(it, translator, parent) + this += ChatComponent.of(it, translator, parent, restrictedMode) parseExtra() return } @@ -199,7 +199,7 @@ class BaseComponent : ChatComponent { with.add(part ?: continue) } } - parts += translator?.translate(it.toResourceLocation(), currentParent, *with.toTypedArray()) ?: ChatComponent.of(json["with"], translator, currentParent) + parts += translator?.translate(it.toResourceLocation(), currentParent, restrictedMode, *with.toTypedArray()) ?: ChatComponent.of(json["with"], translator, currentParent, restrictedMode) } } diff --git a/src/main/java/de/bixilon/minosoft/data/text/ChatComponent.kt b/src/main/java/de/bixilon/minosoft/data/text/ChatComponent.kt index 70751b759..e5af43049 100644 --- a/src/main/java/de/bixilon/minosoft/data/text/ChatComponent.kt +++ b/src/main/java/de/bixilon/minosoft/data/text/ChatComponent.kt @@ -99,7 +99,7 @@ interface ChatComponent { return raw } if (raw is Translatable && raw !is ResourceLocation) { - return (translator ?: Minosoft.LANGUAGE_MANAGER).translate(raw.translationKey, parent) + return (translator ?: Minosoft.LANGUAGE_MANAGER).translate(raw.translationKey, parent, restrictedMode = restrictedMode) } when (raw) {