restrict chat mode even more

This commit is contained in:
Bixilon 2022-11-07 19:31:17 +01:00
parent a3a98c2897
commit f9be5680d1
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
9 changed files with 26 additions and 25 deletions

View File

@ -41,9 +41,9 @@ class SignedChatMessage(
// ToDo: parent (formatting) // ToDo: parent (formatting)
val data = type.chat.formatParameters(parameters) val data = type.chat.formatParameters(parameters)
text = if (connection.language.canTranslate(type.chat.translationKey.toResourceLocation())) { 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 { } else {
Language.translate(type.chat.translationKey, data = data) Language.translate(type.chat.translationKey, restrictedMode = true, data = data)
} }
text.setFallbackColor(ChatUtil.DEFAULT_CHAT_COLOR) text.setFallbackColor(ChatUtil.DEFAULT_CHAT_COLOR)
} }

View File

@ -74,11 +74,11 @@ object LanguageUtil {
return this.replace("\\n", "\n") 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()) { 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 { fun loadLanguage(language: String, assetsManager: AssetsManager, json: Boolean, path: ResourceLocation): Translator {

View File

@ -28,9 +28,9 @@ class Language(
return data.containsKey(key?.path) return data.containsKey(key?.path)
} }
override fun translate(key: ResourceLocation?, parent: TextComponent?, vararg data: Any?): ChatComponent { override fun translate(key: ResourceLocation?, parent: TextComponent?, restrictedMode: Boolean, vararg data: Any?): ChatComponent {
val placeholder = this.data[key?.path] ?: return LanguageUtil.getFallbackTranslation(key, parent, *data) val placeholder = this.data[key?.path] ?: return LanguageUtil.getFallbackTranslation(key, parent, restrictedMode, *data)
return Companion.translate(placeholder, parent, this, *data) return Companion.translate(placeholder, parent, this, restrictedMode, *data)
} }
override fun toString(): String { override fun toString(): String {
@ -42,7 +42,7 @@ class Language(
private val FORMATTER_SPLIT_REGEX = "%[ds]".toRegex() // %s fell from a high place 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() val ret = BaseComponent()
@ -77,9 +77,9 @@ class Language(
// create base component // create base component
for ((index, part) in splitPlaceholder.withIndex()) { for ((index, part) in splitPlaceholder.withIndex()) {
ret += ChatComponent.of(part, translator, parent) ret += ChatComponent.of(part, translator, parent, restrictedMode)
if (index < data.size) { if (index < data.size) {
ret += ChatComponent.of(arguments[index], translator, parent) ret += ChatComponent.of(arguments[index], translator, parent, restrictedMode)
} }
} }

View File

@ -32,12 +32,12 @@ class LanguageList(
return false 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) { for (language in list) {
if (language.canTranslate(key)) { 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)
} }
} }

View File

@ -33,13 +33,13 @@ class LanguageManager(
return false 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) { for (language in languages) {
if (!language.canTranslate(key)) { if (!language.canTranslate(key)) {
continue 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)
} }
} }

View File

@ -27,9 +27,9 @@ class MultiLanguageManager(
return translators[key.namespace]?.canTranslate(key) == true return translators[key.namespace]?.canTranslate(key) == true
} }
override fun translate(key: ResourceLocation?, parent: TextComponent?, vararg data: Any?): ChatComponent { override fun translate(key: ResourceLocation?, parent: TextComponent?, restrictedMode: Boolean, vararg data: Any?): ChatComponent {
key ?: return ChatComponent.of("null: ${data.contentToString()}") 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)
} }
} }

View File

@ -21,7 +21,8 @@ interface Translator {
fun canTranslate(key: ResourceLocation?): Boolean 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 { fun translate(translatable: Any?): ChatComponent {

View File

@ -150,14 +150,14 @@ class BaseComponent : ChatComponent {
fun parseExtra() { fun parseExtra() {
json["extra"].toJsonList()?.let { json["extra"].toJsonList()?.let {
for (data in it) { for (data in it) {
parts += ChatComponent.of(data, translator, currentParent) parts += ChatComponent.of(data, translator, currentParent, restrictedMode)
} }
} }
} }
json["text"]?.nullCast<String>()?.let { json["text"]?.nullCast<String>()?.let {
if (it.indexOf(ProtocolDefinition.TEXT_COMPONENT_SPECIAL_PREFIX_CHAR) != -1) { if (it.indexOf(ProtocolDefinition.TEXT_COMPONENT_SPECIAL_PREFIX_CHAR) != -1) {
this += ChatComponent.of(it, translator, parent) this += ChatComponent.of(it, translator, parent, restrictedMode)
parseExtra() parseExtra()
return return
} }
@ -199,7 +199,7 @@ class BaseComponent : ChatComponent {
with.add(part ?: continue) 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)
} }
} }

View File

@ -99,7 +99,7 @@ interface ChatComponent {
return raw return raw
} }
if (raw is Translatable && raw !is ResourceLocation) { 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) { when (raw) {