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