From c03b6f2061bd6964c586491dca01c78208885b14 Mon Sep 17 00:00:00 2001 From: Hikari <3279642466@qq.com> Date: Thu, 18 Jul 2024 15:30:39 +0800 Subject: [PATCH] Improve Message Formatting --- .../com/github/zly2006/enclosure/Enclosure.kt | 8 +++++--- .../zly2006/enclosure/command/BuilderScope.kt | 11 +++++------ .../enclosure/command/CreateSubcommand.kt | 15 +++++++++------ .../enclosure/command/SeltionSubcommand.kt | 5 +++-- .../resources/assets/enclosure/lang/en_us.json | 18 +++++++++--------- .../resources/assets/enclosure/lang/zh_cn.json | 18 +++++++++--------- 6 files changed, 40 insertions(+), 35 deletions(-) diff --git a/src/main/kotlin/com/github/zly2006/enclosure/Enclosure.kt b/src/main/kotlin/com/github/zly2006/enclosure/Enclosure.kt index 3d16ee2..316c726 100644 --- a/src/main/kotlin/com/github/zly2006/enclosure/Enclosure.kt +++ b/src/main/kotlin/com/github/zly2006/enclosure/Enclosure.kt @@ -10,6 +10,7 @@ import net.minecraft.registry.RegistryWrapper.WrapperLookup import net.minecraft.server.network.ServerPlayerEntity import net.minecraft.server.world.ServerWorld import net.minecraft.text.MutableText +import net.minecraft.text.Text import net.minecraft.util.Formatting import net.minecraft.util.math.BlockPos @@ -57,17 +58,18 @@ class Enclosure : EnclosureArea { override fun serialize(settings: SerializationSettings, player: ServerPlayerEntity?): MutableText { if (settings == SerializationSettings.Full) { val text = super.serialize(settings, player) + val subLandsText: MutableText = Text.empty() if (subEnclosures.areas.isNotEmpty()) { text.append("\n") - text.append(TrT.of("enclosure.message.sub_lands")) for (area in subEnclosures.areas) { - text.append(area.serialize(SerializationSettings.Name, player).styled { + subLandsText.append(area.serialize(SerializationSettings.Name, player).styled { it.withColor(Formatting.GOLD) .hoverText(area.serialize(SerializationSettings.Hover, player)) .clickRun("/enclosure info ${area.fullName}") }) - text.append(" ") + subLandsText.append(" ") } + text.append(TrT.of("enclosure.message.sub_lands", subLandsText)) } return text } else { diff --git a/src/main/kotlin/com/github/zly2006/enclosure/command/BuilderScope.kt b/src/main/kotlin/com/github/zly2006/enclosure/command/BuilderScope.kt index d701400..a7d24e4 100644 --- a/src/main/kotlin/com/github/zly2006/enclosure/command/BuilderScope.kt +++ b/src/main/kotlin/com/github/zly2006/enclosure/command/BuilderScope.kt @@ -48,7 +48,7 @@ class BuilderScope(var parent: T) { throw e } catch (e: Throwable) { LOGGER.error("Error while executing command: " + it.input, e) - error(TrT.of("enclosure.message.error").append("${e.javaClass.simpleName}: ${e.message}"), it) + error(TrT.of("enclosure.message.error","${e.javaClass.simpleName}: ${e.message}"), it) } } } @@ -66,11 +66,10 @@ class BuilderScope(var parent: T) { val firstPage = page == 1 val lastPage = page >= totalPage - val ret: MutableText = TrT.of("enclosure.menu.page.0") - .append(page.toString()) - .append(TrT.of("enclosure.menu.page.1")) - .append(totalPage.toString()) - .append("\n") + val ret: MutableText = TrT.of("enclosure.menu.page", + page.toString(), + totalPage.toString() + ).append("\n") var i: Int = size * (page - 1) while (i < size * page && i < list.size) { diff --git a/src/main/kotlin/com/github/zly2006/enclosure/command/CreateSubcommand.kt b/src/main/kotlin/com/github/zly2006/enclosure/command/CreateSubcommand.kt index 2a14333..a5caa99 100644 --- a/src/main/kotlin/com/github/zly2006/enclosure/command/CreateSubcommand.kt +++ b/src/main/kotlin/com/github/zly2006/enclosure/command/CreateSubcommand.kt @@ -70,8 +70,9 @@ fun BuilderScope<*>.registerCreate() { val intersectArea = sessionOf(source).intersect(enclosure.subEnclosures) if (intersectArea != null) { error( - TrT.of("enclosure.message.intersected") - .append(intersectArea.serialize(SerializationSettings.Name, source.player)), this + TrT.of("enclosure.message.intersected", + intersectArea.serialize(SerializationSettings.Name, source.player) + ), this ) } val limits = getLimits(this) @@ -80,16 +81,18 @@ fun BuilderScope<*>.registerCreate() { val count = enclosure.subEnclosures.areas.size.toLong() if (count > limits.maxSubLands) { error( - TrT.of("enclosure.message.scle").append(Text.literal(limits.maxSubLands.toString())), - this + TrT.of("enclosure.message.sub_lands.exceed", + Text.literal(limits.maxSubLands.toString()) + ),this ) } } area.changeWorld(session.world) enclosure.addChild(area) source.sendMessage( - TrT.of("enclosure.message.created") - .append(area.serialize(SerializationSettings.Name, source.player)) + TrT.of("enclosure.message.created", + area.serialize(SerializationSettings.Name, source.player) + ) ) LOGGER.info("Created subzone {} by {}", area.fullName, source.name) } diff --git a/src/main/kotlin/com/github/zly2006/enclosure/command/SeltionSubcommand.kt b/src/main/kotlin/com/github/zly2006/enclosure/command/SeltionSubcommand.kt index 4932c15..ec93ff7 100644 --- a/src/main/kotlin/com/github/zly2006/enclosure/command/SeltionSubcommand.kt +++ b/src/main/kotlin/com/github/zly2006/enclosure/command/SeltionSubcommand.kt @@ -57,8 +57,9 @@ fun BuilderScope<*>.registerSelection() { .append(session.world.registryKey.value.toString()) ) source.sendMessage( - TrT.of("enclosure.message.total_size") - .append(session.size().toString()) + TrT.of("enclosure.message.total_size", + session.size().toString() + ) ) if (intersectArea != null) { source.sendMessage( diff --git a/src/main/resources/assets/enclosure/lang/en_us.json b/src/main/resources/assets/enclosure/lang/en_us.json index 38070df..62864ed 100644 --- a/src/main/resources/assets/enclosure/lang/en_us.json +++ b/src/main/resources/assets/enclosure/lang/en_us.json @@ -48,8 +48,7 @@ "enclosure.limit.min_y": "Minimum Y coordinate", "enclosure.limit.min_z_range": "Minimum Z range", "enclosure.menu.next": "Next>", - "enclosure.menu.page.0": "Page ", - "enclosure.menu.page.1": " of ", + "enclosure.menu.page": "Page %s of %s", "enclosure.menu.previous": "", - "enclosure.menu.page.0": "页码: ", - "enclosure.menu.page.1": " / ", + "enclosure.menu.page": "页码: %s / %s", "enclosure.menu.previous": "<上一页 ", "enclosure.message.added_user": "添加了玩家: %s", "enclosure.message.backup.another_in_progress": "已有一个备份正在进行中", @@ -62,11 +61,11 @@ "enclosure.message.dangerous": "这是一个危险的操作,请点击本提示以确认!", "enclosure.message.default_message": "默认欢迎/离开消息", "enclosure.message.deleted": "你成功删除了领地: ", - "enclosure.message.error": "发生了错误,请向你的服务器管理员或模组作者反馈: ", + "enclosure.message.error": "发生了错误,请向你的服务器管理员或模组作者反馈: %s", "enclosure.message.existed": "领地已存在", "enclosure.message.expanded": "把领地扩大了", "enclosure.message.given": "将领地 %s 赠送给了 %s", - "enclosure.message.intersected": "你划定的领地范围与一个已存在的领地出现了交叠: ", + "enclosure.message.intersected": "你划定的领地范围与一个已存在的领地出现了交叠: %s", "enclosure.message.invalid_permission": "无效的权限!你可以用 `/enclosure flags` 查看所有权限.", "enclosure.message.item_only_self_pickup": "你没有权限扔出物品,但我们无法将其放入你的背包,请尽快前去捡起你的物品", "enclosure.message.kick.rollback": "由于领地正在回滚,您已被踢出领地", @@ -125,12 +124,13 @@ "enclosure.message.shifted": "把选区移动了", "enclosure.message.shrunk": "把选区缩小了", "enclosure.message.sub_enclosure_outside": "子领地 %s 必须在父领地内", - "enclosure.message.sub_lands": "子领地: ", + "enclosure.message.sub_lands": "子领地: %s", + "enclosure.message.sub_lands.exceed": "子领地数量达到限制:%s", "enclosure.message.suggest_gui": "你的客户端已经安装了领地mod,可以点击这里打开领地GUI", "enclosure.message.teleport_too_fast": "传送过于频繁,请等待 %s 秒", "enclosure.message.teleport_warning": "传送位置可能不安全,请确认您是否传送。", "enclosure.message.teleport_warning.on_set": "这个位置可能是危险的(没有支撑方块/在墙里/有流体), 传送到你的领地的玩家将会被警告.", - "enclosure.message.total_size": "领地总大小:", + "enclosure.message.total_size": "领地总大小:%s", "enclosure.message.unexpected_info": "接收到意外的类型: 期望输入: enter|leave", "enclosure.message.unexpected_optional_boolean": "接收到意外的值: 期望输入: true | false | none", "enclosure.message.unknown_user": "未知用户", @@ -209,14 +209,14 @@ "enclosure.widget.false": "拒绝", "enclosure.widget.father_land.hover": "点击显示父领地", "enclosure.widget.global": "全局权限", - "enclosure.widget.in_enclosure": "在领地", + "enclosure.widget.in_enclosure": " 在领地: %s", "enclosure.widget.no": "否", "enclosure.widget.none": "默认", - "enclosure.widget.player": "玩家", + "enclosure.widget.player": "玩家: %s", "enclosure.widget.search": "搜索", "enclosure.widget.selection_render.hover": "点击显示领地的区域范围", "enclosure.widget.set": "设置", - "enclosure.widget.set_permission": "正在设置权限:", + "enclosure.widget.set_permission": "正在设置权限:%s ", "enclosure.widget.sub_land.hover": "点击显示子领地", "enclosure.widget.transfer": "转让领地", "enclosure.widget.transfer_confirm": "确认转让领地给玩家,此操作不可逆!",