Revert "Update Message"

This reverts commit ac9197c554.
This commit is contained in:
2024-11-14 22:18:34 +01:00
parent 26f15304a2
commit 9dff1f5884
13 changed files with 107 additions and 105 deletions
@@ -58,7 +58,7 @@ public class Message {
return parse(message, false, sender, params); return parse(message, false, sender, params);
} }
public MessageFormat parseRaw(String message, boolean prefixed, CommandSender sender) { private String parse(String message, boolean prefixed, CommandSender sender, Object... params){
Locale locale; Locale locale;
if(sender instanceof Player) if(sender instanceof Player)
locale = getLocale((Player) sender); locale = getLocale((Player) sender);
@@ -71,12 +71,7 @@ public class Message {
pattern = fromRB(resourceBundle, "PREFIX") + " "; pattern = fromRB(resourceBundle, "PREFIX") + " ";
pattern += fromRB(resourceBundle, message); pattern += fromRB(resourceBundle, message);
return new MessageFormat(pattern, locale); return new MessageFormat(pattern, locale).format(params);
}
private String parse(String message, boolean prefixed, CommandSender sender, Object... params){
return parseRaw(message, prefixed, sender).format(params);
} }
private String fromRB(ResourceBundle bundle, String key) { private String fromRB(ResourceBundle bundle, String key) {
@@ -1,6 +1,5 @@
package de.steamwar.tntleague package de.steamwar.tntleague
import de.steamwar.message.Message
import de.steamwar.tntleague.command.AcceptCommand import de.steamwar.tntleague.command.AcceptCommand
import de.steamwar.tntleague.command.InviteCommand import de.steamwar.tntleague.command.InviteCommand
import de.steamwar.tntleague.command.LeaveCommand import de.steamwar.tntleague.command.LeaveCommand
@@ -10,14 +9,11 @@ import de.steamwar.tntleague.events.LobbyListener
import net.kyori.adventure.key.Key import net.kyori.adventure.key.Key
import net.kyori.adventure.translation.GlobalTranslator import net.kyori.adventure.translation.GlobalTranslator
import net.kyori.adventure.translation.TranslationRegistry import net.kyori.adventure.translation.TranslationRegistry
import net.kyori.adventure.translation.Translator
import net.kyori.adventure.util.UTF8ResourceBundleControl import net.kyori.adventure.util.UTF8ResourceBundleControl
import org.bukkit.plugin.java.JavaPlugin import org.bukkit.plugin.java.JavaPlugin
import java.text.MessageFormat
import java.util.* import java.util.*
lateinit var plugin: TNTLeague lateinit var plugin: TNTLeague
lateinit var message: Message
class TNTLeague : JavaPlugin() { class TNTLeague : JavaPlugin() {
init { init {
@@ -26,8 +22,18 @@ class TNTLeague : JavaPlugin() {
override fun onEnable() { override fun onEnable() {
saveResource("config.yml", false) saveResource("config.yml", false)
saveDefaultConfig()
message = Message("de.steamwar.tntleague.TNTLeague", classLoader) val registry = TranslationRegistry.create(Key.key("steamwar:tntleague"))
val bundleDe = ResourceBundle.getBundle("de.steamwar.tntleague.TNTLeague", Locale.GERMAN, UTF8ResourceBundleControl())
val bundleEn = ResourceBundle.getBundle("de.steamwar.tntleague.TNTLeague", Locale.US, UTF8ResourceBundleControl())
registry.defaultLocale(Locale.GERMAN)
registry.registerAll(Locale.GERMAN, bundleDe, true)
registry.registerAll(Locale.US, bundleEn, true)
GlobalTranslator.translator().addSource(registry)
server.pluginManager.registerEvents(LobbyListener, this) server.pluginManager.registerEvents(LobbyListener, this)
server.pluginManager.registerEvents(GlobalListener, this) server.pluginManager.registerEvents(GlobalListener, this)
@@ -1,33 +0,0 @@
PREFIX=§4TNT§6League §8»
join=§e{0} §7joined the game!
joinTeam=§e{0} §7joined the {1} §7team!
quit=§e{0} §7left the game!
quitTeam=§e{0} §7left the {1} §7team!
blue=§9Blue
red=§cRed
shutdown=§7The server stops in §e{0} §7seconds!
teamWin=§aTeam {0} §awins!
notEnoughCoins=§cYou don't have enough coins to buy this item!
gameStarting=§7The game starts in §e{0} §7seconds!
gameStart=§7Starting in §e{0}
gameStarted=§aThe game has started!
timeRemaining=§e{0} §7minutes remaining!
gameEnded=§eThe game has ended!
draw=§7The game ended in a draw!
dealer=Shopkeeper
dealerPrice=§7Price: §e{0} §7Coins
scoreboardTime=§7Time: §e{0}§8:§e{1}
scoreboardTeam=§7Team {0}§8: §e{1}
ready=§aReady
notReady=§cNot ready
isReady=§7Team {0} §7is ready!
isNotReady=§7Team {0} §7is not ready!
invited=§e{0} §7invited you to join the {1} §7team! §e*Click*
invitedHover=§7Click to join the {0} §7team!
invitedPlayer=§7Invited §e{0} §7to join your team!
@@ -1,28 +0,0 @@
join=§e{0} §7ist dem Spiel beigetreten!
joinTeam=§e{0} §7ist dem {1} §7team begetreten!
quit=§e{0} §7hat das Spiel verlassen!
quitTeam=§e{0} §7hat das {1} §7team verlassen!
blue=§9Blau
red=§cRot
shutdown=§7Der Server fährt in §e{0} §7sekunden herunter!
teamWin=§aTeam {0} §agewinnt!
notEnoughCoins=§cDu hast nicht genug Coins um dir das zu kaufen!
gameStarting=§7Das Spiel beginnt in §e{0} §7Sekunden!
gameStart=§7Start in §e{0}
gameStarted=§aDas Spiel beginnt!
timeRemaining=§7noch §e{0} §7Minuten!
gameEnded=§eDas Spiel ist vorbei!
draw=§7Keiner hat gewonnen!
dealer=Händler
dealerItem={0} {1}
dealerPrice=§7Kosten: §e{0} §7Coins
scoreboardTarget=Ziel: {0}
scoreboardTime=§7Zeit: §e{0}§8:§e{1}
ready=§aBereit
notReady=§cNicht bereit
isReady=§aTeam {0} §aist bereit!
isNotReady=§7Team {0} §7ist nicht bereit!
invited=§e{0} §7hat dich in team {1} §7eingeladen! §e*Klick*
invitedHover=§7Team {0} §7beitreten!
invitedPlayer=§e{0} §7wurde eingeladen!
@@ -0,0 +1,30 @@
join={0} ist dem Spiel beigetreten!
joinTeam={0} ist dem {1} team begetreten!
quit={0} hat das Spiel verlassen!
quitTeam={0} hat das {1} team verlassen!
blue=Blau
red=Rot
shutdown=Der Server fährt in {0} sekunden herunter!
teamWin=Team {0} gewinnt!
notEnoughCoins=Du hast nicht genug Coins um dir das zu kaufen!
gameStarting=Das Spiel beginnt in {0} Sekunden!
gameStart=Start in {0}
gameStarted=Das Spiel beginnt!
timeRemaining=noch {0} Minuten!
gameEnded=Das Spiel ist vorbei!
draw=Keiner hat gewonnen!
chat={0}» {1}
dealer=Händler
dealerItem={0} {1}
dealerPrice=Kosten: {0} Coins
scoreboardTarget=Ziel: {0}
scoreboardTime=Zeit: {0}:{1}
scoreboardTeam=Team {0}: {1}
ready=Bereit
notReady=Nicht bereit
isReady=Team {0} ist bereit!
isNotReady=Team {0} ist nicht bereit!
invited={0} hat dich in team {1} eingeladen! *Klick*
invitedHover=Team {0} beitreten!
invitedPlayer={0} wurde eingeladen!
@@ -0,0 +1,32 @@
join={0} joined the game!
joinTeam={0} joined the {1} team!
quit={0} left the game!
quitTeam={0} left the {1} team!
blue=Blue
red=Red
shutdown=The server stops in {0} seconds!
teamWin=Team {0} wins!
notEnoughCoins=You don't have enough coins to buy this item!
gameStarting=The game starts in {0} seconds!
gameStart=Starting in {0}
gameStarted=The game has started!
timeRemaining={0} minutes remaining!
gameEnded=The game has ended!
draw=The game ended in a draw!
dealer=Shopkeeper
dealerPrice=Price: {0} Coins
scoreboardTarget=Target: {0}
scoreboardTime=Time: {0}:{1}
ready=Ready
notReady=Not ready
isReady=Team {0} is ready!
isNotReady=Team {0} is not ready!
invited={0} invited you to join the {1} team! *Click*
invitedHover=Click to join the {0} team!
invitedPlayer=Invited {0} to join your team!
@@ -37,7 +37,7 @@ object InviteCommand: SWCommand("invite") {
val team = TNTLeagueGame.getTeam(sender)!! val team = TNTLeagueGame.getTeam(sender)!!
team.invites.add(target) team.invites.add(target)
target.sendMessage(translate("invited", sender, sender.name.yellow(), translate(team.name, sender).colorByTeam(team)).basic().clickEvent( target.sendMessage(translate("invited", sender.name.yellow(), translate(team.name).colorByTeam(team)).basic().clickEvent(
ClickEvent.callback { ClickEvent.callback {
if (target !in team.invites) return@callback if (target !in team.invites) return@callback
@@ -45,8 +45,8 @@ object InviteCommand: SWCommand("invite") {
team.opposite.invites.remove(target) team.opposite.invites.remove(target)
team.join(target) team.join(target)
}) })
.hoverEvent(HoverEvent.showText(translate("invitedHover", sender, translate(team.name, sender).colorByTeam(team)).green()))) .hoverEvent(HoverEvent.showText(translate("invitedHover", translate(team.name).colorByTeam(team)).green())))
sender.sendMessage(translate("invitedPlayer", sender, target.name.yellow()).basic()) sender.sendMessage(translate("invitedPlayer", target.name.yellow()).basic())
} }
@Validator("isLeader", local = false) @Validator("isLeader", local = false)
@@ -21,17 +21,16 @@ import org.bukkit.event.player.PlayerRespawnEvent
object GlobalListener: Listener { object GlobalListener: Listener {
@EventHandler(priority = EventPriority.HIGH) @EventHandler(priority = EventPriority.LOW)
fun onPlayerJoin(e: PlayerJoinEvent) { fun onPlayerJoin(e: PlayerJoinEvent) {
e.joinMessage(null) e.joinMessage(null)
with(e.player) { with(e.player) {
teleport(TNTLeagueWorldConfig.lobby) teleport(TNTLeagueWorldConfig.lobby)
inventory.clear() inventory.clear()
plugin.server.broadcast(translate("join", this, name.bold()).basic()) plugin.server.broadcast(translate("join", name.bold()).basic())
isOp = false isOp = false
gameMode = GameMode.SPECTATOR gameMode = GameMode.SPECTATOR
respawnLocation = TNTLeagueWorldConfig.lobby respawnLocation = TNTLeagueWorldConfig.lobby
println(locale())
} }
} }
@@ -79,4 +78,11 @@ object GlobalListener: Listener {
null -> e.respawnLocation = TNTLeagueWorldConfig.lobby null -> e.respawnLocation = TNTLeagueWorldConfig.lobby
} }
} }
@EventHandler
fun onChat(e: AsyncChatEvent) {
e.renderer { source, sourceDisplayName, message, _ ->
translate("chat", sourceDisplayName.colorByTeam(TNTLeagueGame.getTeam(source)), message).basic()
}
}
} }
@@ -26,7 +26,7 @@ object IngameListener: Listener {
fun onEntityInteract(e: PlayerInteractEntityEvent) { fun onEntityInteract(e: PlayerInteractEntityEvent) {
if (e.player.gameMode == GameMode.SPECTATOR) return if (e.player.gameMode == GameMode.SPECTATOR) return
if(e.rightClicked.type == EntityType.WANDERING_TRADER) { if(e.rightClicked.type == EntityType.VILLAGER) {
e.isCancelled = true e.isCancelled = true
e.player.openInventory(DealerInventory(e.player).getInventory()) e.player.openInventory(DealerInventory(e.player).getInventory())
} }
@@ -20,7 +20,7 @@ import org.bukkit.event.player.PlayerQuitEvent
object LobbyListener: Listener { object LobbyListener: Listener {
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler
fun onPlayerJoin(e: PlayerJoinEvent) { fun onPlayerJoin(e: PlayerJoinEvent) {
TNTLeagueGame.getFreeTeam()?.run { TNTLeagueGame.getFreeTeam()?.run {
join(e.player) join(e.player)
@@ -11,18 +11,19 @@ import de.steamwar.tntleague.events.DummyListener
import de.steamwar.tntleague.events.IngameListener import de.steamwar.tntleague.events.IngameListener
import de.steamwar.tntleague.events.LobbyListener import de.steamwar.tntleague.events.LobbyListener
import de.steamwar.tntleague.inventory.DealerInventory import de.steamwar.tntleague.inventory.DealerInventory
import de.steamwar.tntleague.message
import de.steamwar.tntleague.plugin import de.steamwar.tntleague.plugin
import de.steamwar.tntleague.util.* import de.steamwar.tntleague.util.*
import net.kyori.adventure.bossbar.BossBar import net.kyori.adventure.bossbar.BossBar
import net.kyori.adventure.sound.Sound import net.kyori.adventure.sound.Sound
import net.kyori.adventure.text.Component
import org.bukkit.GameMode import org.bukkit.GameMode
import org.bukkit.Location import org.bukkit.Location
import org.bukkit.Material import org.bukkit.Material
import org.bukkit.block.data.type.TNT
import org.bukkit.entity.Entity
import org.bukkit.entity.Item import org.bukkit.entity.Item
import org.bukkit.entity.Player import org.bukkit.entity.Player
import org.bukkit.entity.TNTPrimed import org.bukkit.entity.TNTPrimed
import org.bukkit.entity.Villager
import org.bukkit.event.HandlerList import org.bukkit.event.HandlerList
import org.bukkit.event.Listener import org.bukkit.event.Listener
import org.bukkit.inventory.ItemStack import org.bukkit.inventory.ItemStack
@@ -61,7 +62,7 @@ object TNTLeagueGame {
blueTeam.start() blueTeam.start()
redTeam.start() redTeam.start()
message.broadcast("gameStarted") plugin.server.broadcast(translate("gameStarted").success())
val tnt = ItemStack(Material.TNT) val tnt = ItemStack(Material.TNT)
@@ -86,7 +87,7 @@ object TNTLeagueGame {
} }
if (gameTimeRemaining % 300 == 0) { if (gameTimeRemaining % 300 == 0) {
message.broadcast("timeRemaining", gameTimeRemaining / 60) plugin.server.broadcast(translate("timeRemaining", (gameTimeRemaining / 60).toString().yellow()).basic())
plugin.server.onlinePlayers.forEach { it.playSound(Sound.sound(org.bukkit.Sound.BLOCK_NOTE_BLOCK_PLING.key, Sound.Source.MASTER, 1f, 1f)) } plugin.server.onlinePlayers.forEach { it.playSound(Sound.sound(org.bukkit.Sound.BLOCK_NOTE_BLOCK_PLING.key, Sound.Source.MASTER, 1f, 1f)) }
} }
}, 20, 20) }, 20, 20)
@@ -104,7 +105,7 @@ object TNTLeagueGame {
it.playSound(Sound.sound(org.bukkit.Sound.ENTITY_ENDER_DRAGON_DEATH.key, Sound.Source.MASTER, 1f, 1f)) it.playSound(Sound.sound(org.bukkit.Sound.ENTITY_ENDER_DRAGON_DEATH.key, Sound.Source.MASTER, 1f, 1f))
} }
message.broadcast("gameEnded") plugin.server.broadcast(translate("gameEnded").success())
spawnerTask.cancel() spawnerTask.cancel()
@@ -115,7 +116,7 @@ object TNTLeagueGame {
plugin.server.shutdown() plugin.server.shutdown()
} }
message.broadcast("shutdown", shutdown) plugin.server.broadcast(translate("shutdown", shutdown.toString().yellow()).basic())
shutdown-- shutdown--
}, 20, 20) }, 20, 20)
@@ -134,8 +135,8 @@ object TNTLeagueGame {
state = GameState.STARTING state = GameState.STARTING
var countdown = TNTLeagueConfig.config.startDelay var countdown = TNTLeagueConfig.config.startDelay
message.broadcast("gameStarting", countdown) plugin.server.broadcast(translate("gameStarting", countdown.toString().yellow()).basic())
val bar = BossBar.bossBar(Component.text(message.parse("gameStart", countdown)), (TNTLeagueConfig.config.startDelay - countdown) / TNTLeagueConfig.config.startDelay.toFloat(), BossBar.Color.GREEN, BossBar.Overlay.NOTCHED_10) val bar = BossBar.bossBar(translate("gameStart", countdown.toString().yellow()).gray(), (TNTLeagueConfig.config.startDelay - countdown) / TNTLeagueConfig.config.startDelay.toFloat(), BossBar.Color.GREEN, BossBar.Overlay.NOTCHED_10)
plugin.server.onlinePlayers.forEach { bar.addViewer(it) } plugin.server.onlinePlayers.forEach { bar.addViewer(it) }
task = plugin.server.scheduler.scheduleSyncRepeatingTask(plugin, { task = plugin.server.scheduler.scheduleSyncRepeatingTask(plugin, {
plugin.server.onlinePlayers.forEach { it.playSound(Sound.sound(org.bukkit.Sound.ENTITY_EXPERIENCE_ORB_PICKUP.key, Sound.Source.MASTER, 1f, 1f)) } plugin.server.onlinePlayers.forEach { it.playSound(Sound.sound(org.bukkit.Sound.ENTITY_EXPERIENCE_ORB_PICKUP.key, Sound.Source.MASTER, 1f, 1f)) }
@@ -1,21 +1,15 @@
package de.steamwar.tntleague.util package de.steamwar.tntleague.util
import de.steamwar.tntleague.game.TNTLeagueTeam import de.steamwar.tntleague.game.TNTLeagueTeam
import de.steamwar.tntleague.message
import net.kyori.adventure.key.Key
import net.kyori.adventure.text.Component import net.kyori.adventure.text.Component
import net.kyori.adventure.text.ComponentLike import net.kyori.adventure.text.ComponentLike
import net.kyori.adventure.text.TextComponent
import net.kyori.adventure.text.TranslatableComponent import net.kyori.adventure.text.TranslatableComponent
import net.kyori.adventure.text.format.NamedTextColor import net.kyori.adventure.text.format.NamedTextColor
import net.kyori.adventure.text.format.Style import net.kyori.adventure.text.format.Style
import net.kyori.adventure.text.format.TextDecoration import net.kyori.adventure.text.format.TextDecoration
import net.kyori.adventure.text.renderer.TranslatableComponentRenderer
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer
import net.kyori.adventure.translation.GlobalTranslator import net.kyori.adventure.translation.GlobalTranslator
import net.kyori.adventure.translation.Translator
import org.bukkit.entity.Player import org.bukkit.entity.Player
import java.text.MessageFormat
import java.util.Locale import java.util.Locale
val prefix = Component.text("Steam").yellow() val prefix = Component.text("Steam").yellow()
@@ -29,11 +23,11 @@ val tntLeagueChatPrefix: Component = tntLeaguePrefix
.append(Component.text("»").darkGray()) .append(Component.text("»").darkGray())
.appendSpace() .appendSpace()
fun Component.basic(): Component = tntLeagueChatPrefix.append(this.gray()) fun TranslatableComponent.basic(): Component = tntLeagueChatPrefix.append(this.gray())
fun Component.error(): Component = tntLeagueChatPrefix.append(this.red()) fun TranslatableComponent.error(): Component = tntLeagueChatPrefix.append(this.red())
fun Component.success(): Component = tntLeagueChatPrefix.append(this.green()) fun TranslatableComponent.success(): Component = tntLeagueChatPrefix.append(this.green())
fun String.component(): Component = Component.text(this) fun String.component(): Component = Component.text(this)
@@ -63,6 +57,8 @@ fun String.darkGray(): Component = this.component().darkGray()
fun Component.gold(): Component = this.color(NamedTextColor.GOLD) fun Component.gold(): Component = this.color(NamedTextColor.GOLD)
fun translate(key: String, vararg args: ComponentLike): TranslatableComponent = Component.translatable(key, *args).decoration(TextDecoration.ITALIC, false)
fun Component.reset(): Component = this.style(Style.empty()) fun Component.reset(): Component = this.style(Style.empty())
fun Component.colorByTeam(team: TNTLeagueTeam?) = when (team) { fun Component.colorByTeam(team: TNTLeagueTeam?) = when (team) {
+4 -7
View File
@@ -4,10 +4,7 @@ main: de.steamwar.tntleague.TNTLeague
load: POSTWORLD load: POSTWORLD
api-version: '1.21' api-version: '1.21'
dependencies: dependencies:
server: - name: SpigotCore
SpigotCore: required: true
required: true - name: KotlinCore
load: BEFORE required: true
KotlinCore:
required: true
load: BEFORE