diff --git a/src/main/kotlin/club/mcscrims/speedhg/command/KitCommand.kt b/src/main/kotlin/club/mcscrims/speedhg/command/KitCommand.kt index 09e30b9..cd1fad5 100644 --- a/src/main/kotlin/club/mcscrims/speedhg/command/KitCommand.kt +++ b/src/main/kotlin/club/mcscrims/speedhg/command/KitCommand.kt @@ -4,7 +4,6 @@ import club.mcscrims.speedhg.SpeedHG import club.mcscrims.speedhg.game.GameState import club.mcscrims.speedhg.kit.Playstyle import club.mcscrims.speedhg.kit.impl.BackupKit -import club.mcscrims.speedhg.util.legacySerializer import club.mcscrims.speedhg.util.sendMsg import org.bukkit.command.Command import org.bukkit.command.CommandExecutor @@ -74,14 +73,14 @@ class KitCommand : CommandExecutor, TabCompleter { plugin.kitManager.selectPlaystyle( player, playstyle ) plugin.kitManager.applyKit( player ) - player.sendMsg( "commands.kit.selected", "playstyle" to playstyle.displayName, "kit" to legacySerializer.serialize( kit.displayName )) + player.sendMsg( "commands.kit.selected", mapOf( "playstyle" to playstyle.displayName ), "kit" to kit.displayName ) return true } plugin.kitManager.selectKit( player, kit ) plugin.kitManager.selectPlaystyle( player, playstyle ) - player.sendMsg( "commands.kit.selected", "playstyle" to playstyle.displayName, "kit" to legacySerializer.serialize( kit.displayName )) + player.sendMsg( "commands.kit.selected", mapOf( "playstyle" to playstyle.displayName ), "kit" to kit.displayName ) return true } diff --git a/src/main/kotlin/club/mcscrims/speedhg/config/LanguageManager.kt b/src/main/kotlin/club/mcscrims/speedhg/config/LanguageManager.kt index 04db74f..57a1975 100644 --- a/src/main/kotlin/club/mcscrims/speedhg/config/LanguageManager.kt +++ b/src/main/kotlin/club/mcscrims/speedhg/config/LanguageManager.kt @@ -90,6 +90,19 @@ class LanguageManager( return data?.lists?.get( key ) ?: listOf( "Missing List: $key" ) } + fun getMessageList( + player: Player, + key: String, + placeholders: Map, + components: Map = mapOf() + ): List + { + val rawList = getRawMessageList( player, key ) + val compTags = components.map { (k, v) -> Placeholder.component( k, v ) } + val tags = placeholders.map { (k, v) -> Placeholder.parsed( k, v ) }.plus( compTags ) + return rawList.map { str -> miniMessage.deserialize( str, *tags.toTypedArray() ) } + } + fun getDefaultRawMessageList( key: String ): List @@ -101,13 +114,15 @@ class LanguageManager( fun getComponent( player: Player, key: String, - placeholders: Map + placeholders: Map, + components: Map = mapOf() ): Component { val prefixRaw = getRawMessage( player, "default.prefix" ) val prefixTag = Placeholder.parsed( "prefix", prefixRaw ) val raw = getRawMessage( player, key ) - val tags = placeholders.map { (k, v) -> Placeholder.parsed( k, v ) }.plus( prefixTag ) + val compTags = components.map { (k, v) -> Placeholder.component( k, v ) } + val tags = placeholders.map { (k, v) -> Placeholder.parsed( k, v ) }.plus( prefixTag ).plus( compTags ) return miniMessage.deserialize( raw, *tags.toTypedArray() ) } diff --git a/src/main/kotlin/club/mcscrims/speedhg/kit/impl/GoblinKit.kt b/src/main/kotlin/club/mcscrims/speedhg/kit/impl/GoblinKit.kt index 0778a24..9f94eb9 100644 --- a/src/main/kotlin/club/mcscrims/speedhg/kit/impl/GoblinKit.kt +++ b/src/main/kotlin/club/mcscrims/speedhg/kit/impl/GoblinKit.kt @@ -8,7 +8,6 @@ import club.mcscrims.speedhg.kit.ability.ActiveAbility import club.mcscrims.speedhg.kit.ability.PassiveAbility import club.mcscrims.speedhg.util.ItemBuilder import club.mcscrims.speedhg.util.WorldEditUtils -import club.mcscrims.speedhg.util.legacySerializer import club.mcscrims.speedhg.util.trans import net.kyori.adventure.text.Component import org.bukkit.Bukkit @@ -157,7 +156,7 @@ class GoblinKit : Kit() { activeStealTasks[ player.uniqueId ] = task player.playSound( player.location, Sound.ENTITY_EVOKER_CAST_SPELL, 1f, 1.5f ) - player.sendActionBar(player.trans( "kits.goblin.messages.stole_kit", "kit" to legacySerializer.serialize( targetKit.displayName ))) + player.sendActionBar(player.trans( "kits.goblin.messages.stole_kit", mapOf(), "kit" to targetKit.displayName )) return AbilityResult.Success } diff --git a/src/main/kotlin/club/mcscrims/speedhg/listener/ConnectListener.kt b/src/main/kotlin/club/mcscrims/speedhg/listener/ConnectListener.kt index 639000c..fd02a5d 100644 --- a/src/main/kotlin/club/mcscrims/speedhg/listener/ConnectListener.kt +++ b/src/main/kotlin/club/mcscrims/speedhg/listener/ConnectListener.kt @@ -28,7 +28,7 @@ class ConnectListener : Listener { return Bukkit.getOnlinePlayers().forEach { p -> - p.sendMsg( "game.join", "" to player.name ) + p.sendMsg( "game.join", "name" to player.name ) } player.showTitle(Title.title( @@ -49,7 +49,7 @@ class ConnectListener : Listener { return Bukkit.getOnlinePlayers().forEach { p -> - p.sendMsg( "game.quit", "" to player.name ) + p.sendMsg( "game.quit", "name" to player.name ) } } diff --git a/src/main/kotlin/club/mcscrims/speedhg/scoreboard/ScoreboardManager.kt b/src/main/kotlin/club/mcscrims/speedhg/scoreboard/ScoreboardManager.kt index 769fd1b..c346368 100644 --- a/src/main/kotlin/club/mcscrims/speedhg/scoreboard/ScoreboardManager.kt +++ b/src/main/kotlin/club/mcscrims/speedhg/scoreboard/ScoreboardManager.kt @@ -2,9 +2,7 @@ package club.mcscrims.speedhg.scoreboard import club.mcscrims.speedhg.SpeedHG import club.mcscrims.speedhg.game.GameState -import club.mcscrims.speedhg.util.legacySerializer import club.mcscrims.speedhg.util.trans -import club.mcscrims.speedhg.util.transList import fr.mrmicky.fastboard.adventure.FastBoard import net.kyori.adventure.text.Component import org.bukkit.Bukkit @@ -66,7 +64,7 @@ class ScoreboardManager( val online = Bukkit.getOnlinePlayers().size.toString() val max = Bukkit.getMaxPlayers().toString() - val kitName = legacySerializer.serialize(plugin.kitManager.getSelectedKit( player )?.displayName ?: Component.text( "None" )) + val kitName = plugin.kitManager.getSelectedKit( player )?.displayName ?: Component.text( "None" ) val lines: List @@ -74,12 +72,11 @@ class ScoreboardManager( { val timeString = if ( state == GameState.STARTING ) formatTime( gm.timer ) else "Waiting..." - lines = player.transList( "scoreboard.lobby", mapOf( - "online" to online, - "max" to max, - "kit" to kitName, - "time" to timeString - )) + lines = plugin.languageManager.getMessageList( + player, "scoreboard.lobby", + mapOf( "online" to online, "max" to max, "time" to timeString ), + mapOf( "kit" to kitName ) + ) } else { @@ -88,13 +85,11 @@ class ScoreboardManager( val kills = player.getStatistic( Statistic.PLAYER_KILLS ).toString() val border = String.format( "%.0f", player.world.worldBorder.size ) - lines = player.transList( "scoreboard.ingame", mapOf( - "timer" to timeString, - "alive" to alive, - "kills" to kills, - "border" to border, - "kit" to kitName - )) + lines = plugin.languageManager.getMessageList( + player, "scoreboard.ingame", + mapOf( "timer" to timeString, "alive" to alive, "kills" to kills, "border" to border ), + mapOf( "kit" to kitName ) + ) } board.updateLines( lines ) diff --git a/src/main/kotlin/club/mcscrims/speedhg/util/Extensions.kt b/src/main/kotlin/club/mcscrims/speedhg/util/Extensions.kt index dde2a33..48587a7 100644 --- a/src/main/kotlin/club/mcscrims/speedhg/util/Extensions.kt +++ b/src/main/kotlin/club/mcscrims/speedhg/util/Extensions.kt @@ -8,7 +8,7 @@ import org.bukkit.entity.Player private val langManager get() = SpeedHG.instance.languageManager -internal val legacySerializer = LegacyComponentSerializer.builder() +private val legacySerializer = LegacyComponentSerializer.builder() .character('ยง') .hexColors() .useUnusualXRepeatedCharacterHexFormat() @@ -22,6 +22,15 @@ fun Player.sendMsg( this.sendMessage( component ) } +fun Player.sendMsg( + key: String, + placeholders: Map, + vararg components: Pair +) { + val component = langManager.getComponent( this, key, placeholders, components.toMap() ) + this.sendMessage( component ) +} + fun Player.trans( key: String, vararg placeholders: Pair @@ -30,6 +39,15 @@ fun Player.trans( return langManager.getComponent( this, key, placeholders.toMap() ) } +fun Player.trans( + key: String, + placeholders: Map, + vararg components: Pair +): Component +{ + return langManager.getComponent( this, key, placeholders, components.toMap() ) +} + fun Player.transList( key: String, placeholders: Map