forked from SteamWar/SteamWar
Update Message
This commit is contained in:
@@ -58,7 +58,7 @@ public class Message {
|
||||
return parse(message, false, sender, params);
|
||||
}
|
||||
|
||||
private String parse(String message, boolean prefixed, CommandSender sender, Object... params){
|
||||
public MessageFormat parseRaw(String message, boolean prefixed, CommandSender sender) {
|
||||
Locale locale;
|
||||
if(sender instanceof Player)
|
||||
locale = getLocale((Player) sender);
|
||||
@@ -71,7 +71,12 @@ public class Message {
|
||||
pattern = fromRB(resourceBundle, "PREFIX") + " ";
|
||||
pattern += fromRB(resourceBundle, message);
|
||||
|
||||
return new MessageFormat(pattern, locale).format(params);
|
||||
return new MessageFormat(pattern, locale);
|
||||
}
|
||||
|
||||
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) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package de.steamwar.tntleague
|
||||
|
||||
import de.steamwar.message.Message
|
||||
import de.steamwar.tntleague.command.AcceptCommand
|
||||
import de.steamwar.tntleague.command.InviteCommand
|
||||
import de.steamwar.tntleague.command.LeaveCommand
|
||||
@@ -9,11 +10,14 @@ import de.steamwar.tntleague.events.LobbyListener
|
||||
import net.kyori.adventure.key.Key
|
||||
import net.kyori.adventure.translation.GlobalTranslator
|
||||
import net.kyori.adventure.translation.TranslationRegistry
|
||||
import net.kyori.adventure.translation.Translator
|
||||
import net.kyori.adventure.util.UTF8ResourceBundleControl
|
||||
import org.bukkit.plugin.java.JavaPlugin
|
||||
import java.text.MessageFormat
|
||||
import java.util.*
|
||||
|
||||
lateinit var plugin: TNTLeague
|
||||
lateinit var message: Message
|
||||
|
||||
class TNTLeague : JavaPlugin() {
|
||||
init {
|
||||
@@ -22,18 +26,8 @@ class TNTLeague : JavaPlugin() {
|
||||
|
||||
override fun onEnable() {
|
||||
saveResource("config.yml", false)
|
||||
saveDefaultConfig()
|
||||
|
||||
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)
|
||||
message = Message("de.steamwar.tntleague.TNTLeague", classLoader)
|
||||
|
||||
server.pluginManager.registerEvents(LobbyListener, this)
|
||||
server.pluginManager.registerEvents(GlobalListener, this)
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
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!
|
||||
@@ -0,0 +1,28 @@
|
||||
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!
|
||||
@@ -1,30 +0,0 @@
|
||||
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!
|
||||
@@ -1,32 +0,0 @@
|
||||
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)!!
|
||||
team.invites.add(target)
|
||||
|
||||
target.sendMessage(translate("invited", sender.name.yellow(), translate(team.name).colorByTeam(team)).basic().clickEvent(
|
||||
target.sendMessage(translate("invited", sender, sender.name.yellow(), translate(team.name, sender).colorByTeam(team)).basic().clickEvent(
|
||||
ClickEvent.callback {
|
||||
if (target !in team.invites) return@callback
|
||||
|
||||
@@ -45,8 +45,8 @@ object InviteCommand: SWCommand("invite") {
|
||||
team.opposite.invites.remove(target)
|
||||
team.join(target)
|
||||
})
|
||||
.hoverEvent(HoverEvent.showText(translate("invitedHover", translate(team.name).colorByTeam(team)).green())))
|
||||
sender.sendMessage(translate("invitedPlayer", target.name.yellow()).basic())
|
||||
.hoverEvent(HoverEvent.showText(translate("invitedHover", sender, translate(team.name, sender).colorByTeam(team)).green())))
|
||||
sender.sendMessage(translate("invitedPlayer", sender, target.name.yellow()).basic())
|
||||
}
|
||||
|
||||
@Validator("isLeader", local = false)
|
||||
|
||||
@@ -21,16 +21,17 @@ import org.bukkit.event.player.PlayerRespawnEvent
|
||||
|
||||
object GlobalListener: Listener {
|
||||
|
||||
@EventHandler(priority = EventPriority.LOW)
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
fun onPlayerJoin(e: PlayerJoinEvent) {
|
||||
e.joinMessage(null)
|
||||
with(e.player) {
|
||||
teleport(TNTLeagueWorldConfig.lobby)
|
||||
inventory.clear()
|
||||
plugin.server.broadcast(translate("join", name.bold()).basic())
|
||||
plugin.server.broadcast(translate("join", this, name.bold()).basic())
|
||||
isOp = false
|
||||
gameMode = GameMode.SPECTATOR
|
||||
respawnLocation = TNTLeagueWorldConfig.lobby
|
||||
println(locale())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,11 +79,4 @@ object GlobalListener: Listener {
|
||||
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) {
|
||||
if (e.player.gameMode == GameMode.SPECTATOR) return
|
||||
|
||||
if(e.rightClicked.type == EntityType.VILLAGER) {
|
||||
if(e.rightClicked.type == EntityType.WANDERING_TRADER) {
|
||||
e.isCancelled = true
|
||||
e.player.openInventory(DealerInventory(e.player).getInventory())
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ import org.bukkit.event.player.PlayerQuitEvent
|
||||
|
||||
object LobbyListener: Listener {
|
||||
|
||||
@EventHandler
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
fun onPlayerJoin(e: PlayerJoinEvent) {
|
||||
TNTLeagueGame.getFreeTeam()?.run {
|
||||
join(e.player)
|
||||
|
||||
@@ -11,19 +11,18 @@ import de.steamwar.tntleague.events.DummyListener
|
||||
import de.steamwar.tntleague.events.IngameListener
|
||||
import de.steamwar.tntleague.events.LobbyListener
|
||||
import de.steamwar.tntleague.inventory.DealerInventory
|
||||
import de.steamwar.tntleague.message
|
||||
import de.steamwar.tntleague.plugin
|
||||
import de.steamwar.tntleague.util.*
|
||||
import net.kyori.adventure.bossbar.BossBar
|
||||
import net.kyori.adventure.sound.Sound
|
||||
import net.kyori.adventure.text.Component
|
||||
import org.bukkit.GameMode
|
||||
import org.bukkit.Location
|
||||
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.Player
|
||||
import org.bukkit.entity.TNTPrimed
|
||||
import org.bukkit.entity.Villager
|
||||
import org.bukkit.event.HandlerList
|
||||
import org.bukkit.event.Listener
|
||||
import org.bukkit.inventory.ItemStack
|
||||
@@ -62,7 +61,7 @@ object TNTLeagueGame {
|
||||
blueTeam.start()
|
||||
redTeam.start()
|
||||
|
||||
plugin.server.broadcast(translate("gameStarted").success())
|
||||
message.broadcast("gameStarted")
|
||||
|
||||
val tnt = ItemStack(Material.TNT)
|
||||
|
||||
@@ -87,7 +86,7 @@ object TNTLeagueGame {
|
||||
}
|
||||
|
||||
if (gameTimeRemaining % 300 == 0) {
|
||||
plugin.server.broadcast(translate("timeRemaining", (gameTimeRemaining / 60).toString().yellow()).basic())
|
||||
message.broadcast("timeRemaining", gameTimeRemaining / 60)
|
||||
plugin.server.onlinePlayers.forEach { it.playSound(Sound.sound(org.bukkit.Sound.BLOCK_NOTE_BLOCK_PLING.key, Sound.Source.MASTER, 1f, 1f)) }
|
||||
}
|
||||
}, 20, 20)
|
||||
@@ -105,7 +104,7 @@ object TNTLeagueGame {
|
||||
it.playSound(Sound.sound(org.bukkit.Sound.ENTITY_ENDER_DRAGON_DEATH.key, Sound.Source.MASTER, 1f, 1f))
|
||||
}
|
||||
|
||||
plugin.server.broadcast(translate("gameEnded").success())
|
||||
message.broadcast("gameEnded")
|
||||
|
||||
spawnerTask.cancel()
|
||||
|
||||
@@ -116,7 +115,7 @@ object TNTLeagueGame {
|
||||
plugin.server.shutdown()
|
||||
}
|
||||
|
||||
plugin.server.broadcast(translate("shutdown", shutdown.toString().yellow()).basic())
|
||||
message.broadcast("shutdown", shutdown)
|
||||
|
||||
shutdown--
|
||||
}, 20, 20)
|
||||
@@ -135,8 +134,8 @@ object TNTLeagueGame {
|
||||
state = GameState.STARTING
|
||||
|
||||
var countdown = TNTLeagueConfig.config.startDelay
|
||||
plugin.server.broadcast(translate("gameStarting", countdown.toString().yellow()).basic())
|
||||
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)
|
||||
message.broadcast("gameStarting", countdown)
|
||||
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)
|
||||
plugin.server.onlinePlayers.forEach { bar.addViewer(it) }
|
||||
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)) }
|
||||
|
||||
@@ -1,15 +1,21 @@
|
||||
package de.steamwar.tntleague.util
|
||||
|
||||
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.ComponentLike
|
||||
import net.kyori.adventure.text.TextComponent
|
||||
import net.kyori.adventure.text.TranslatableComponent
|
||||
import net.kyori.adventure.text.format.NamedTextColor
|
||||
import net.kyori.adventure.text.format.Style
|
||||
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.translation.GlobalTranslator
|
||||
import net.kyori.adventure.translation.Translator
|
||||
import org.bukkit.entity.Player
|
||||
import java.text.MessageFormat
|
||||
import java.util.Locale
|
||||
|
||||
val prefix = Component.text("Steam").yellow()
|
||||
@@ -23,11 +29,11 @@ val tntLeagueChatPrefix: Component = tntLeaguePrefix
|
||||
.append(Component.text("»").darkGray())
|
||||
.appendSpace()
|
||||
|
||||
fun TranslatableComponent.basic(): Component = tntLeagueChatPrefix.append(this.gray())
|
||||
fun Component.basic(): Component = tntLeagueChatPrefix.append(this.gray())
|
||||
|
||||
fun TranslatableComponent.error(): Component = tntLeagueChatPrefix.append(this.red())
|
||||
fun Component.error(): Component = tntLeagueChatPrefix.append(this.red())
|
||||
|
||||
fun TranslatableComponent.success(): Component = tntLeagueChatPrefix.append(this.green())
|
||||
fun Component.success(): Component = tntLeagueChatPrefix.append(this.green())
|
||||
|
||||
fun String.component(): Component = Component.text(this)
|
||||
|
||||
@@ -57,8 +63,6 @@ fun String.darkGray(): Component = this.component().darkGray()
|
||||
|
||||
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.colorByTeam(team: TNTLeagueTeam?) = when (team) {
|
||||
|
||||
@@ -4,7 +4,10 @@ main: de.steamwar.tntleague.TNTLeague
|
||||
load: POSTWORLD
|
||||
api-version: '1.21'
|
||||
dependencies:
|
||||
- name: SpigotCore
|
||||
required: true
|
||||
- name: KotlinCore
|
||||
required: true
|
||||
server:
|
||||
SpigotCore:
|
||||
required: true
|
||||
load: BEFORE
|
||||
KotlinCore:
|
||||
required: true
|
||||
load: BEFORE
|
||||
Reference in New Issue
Block a user