forked from SteamWar/SteamWar
Fixes, changes and Refactors
This commit is contained in:
+1
-1
@@ -17,7 +17,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package de.steamwar.tntleague.inventory
|
||||
package de.steamwar.kotlin.inventory
|
||||
|
||||
import org.bukkit.event.inventory.InventoryClickEvent
|
||||
import org.bukkit.event.inventory.InventoryCloseEvent
|
||||
@@ -19,31 +19,41 @@
|
||||
|
||||
package de.steamwar.kotlin.message
|
||||
|
||||
import com.comphenix.tinyprotocol.Reflection
|
||||
import de.steamwar.kotlin.KotlinCore
|
||||
import de.steamwar.sql.SteamwarUser
|
||||
import org.bukkit.Bukkit
|
||||
import org.bukkit.craftbukkit.v1_21_R1.entity.CraftPlayer
|
||||
import org.bukkit.entity.Player
|
||||
import org.bukkit.event.EventHandler
|
||||
import org.bukkit.event.EventPriority
|
||||
import org.bukkit.event.Listener
|
||||
import org.bukkit.event.player.PlayerJoinEvent
|
||||
import org.bukkit.event.player.PlayerLocaleChangeEvent
|
||||
import java.util.Locale
|
||||
|
||||
object LanguageListener: Listener {
|
||||
|
||||
private val getHandleMethod = Reflection.getMethod("{obc}.entity.CraftPlayer", "getHandle")
|
||||
private val localeField = Reflection.getField("{nms.server.level}.EntityPlayer", "adventure\$locale", Locale::class.java)
|
||||
|
||||
private val Player.handle
|
||||
get() = getHandleMethod.invoke(this)
|
||||
|
||||
private var Player.adventureLocale
|
||||
get() = localeField.get(handle) as Locale
|
||||
set(value) {
|
||||
localeField.set(handle, value)
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
|
||||
fun onPlayerJoin(event: PlayerJoinEvent) {
|
||||
val user = SteamwarUser.get(event.player.uniqueId)
|
||||
val player = event.player as CraftPlayer
|
||||
player.handle.`adventure$locale` = user.locale
|
||||
event.player.adventureLocale = SteamwarUser.get(event.player.uniqueId).locale
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
fun onPlayerConfig(event: PlayerLocaleChangeEvent) {
|
||||
Bukkit.getScheduler().runTask(KotlinCore.plugin, Runnable {
|
||||
val user = SteamwarUser.get(event.player.uniqueId)
|
||||
val player = event.player as CraftPlayer
|
||||
player.handle.`adventure$locale` = user.locale
|
||||
event.player.adventureLocale = SteamwarUser.get(event.player.uniqueId).locale
|
||||
})
|
||||
}
|
||||
}
|
||||
+20
-20
@@ -17,9 +17,8 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package de.steamwar.tntleague.util
|
||||
package de.steamwar.kotlin.message
|
||||
|
||||
import de.steamwar.tntleague.game.TNTLeagueTeam
|
||||
import net.kyori.adventure.text.Component
|
||||
import net.kyori.adventure.text.ComponentLike
|
||||
import net.kyori.adventure.text.TranslatableComponent
|
||||
@@ -31,22 +30,26 @@ import net.kyori.adventure.translation.GlobalTranslator
|
||||
import org.bukkit.entity.Player
|
||||
import java.util.Locale
|
||||
|
||||
val prefix = Component.text("Steam").yellow()
|
||||
.append(Component.text("War").darkGray())
|
||||
.appendSpace()
|
||||
object StyleConfig {
|
||||
var prefix = Component.text("Steam").yellow()
|
||||
.append(Component.text("War").darkGray())
|
||||
.appendSpace()
|
||||
set(value) {
|
||||
field = value
|
||||
chatPrefix = value
|
||||
.append(Component.text("»").darkGray())
|
||||
.appendSpace()
|
||||
}
|
||||
var chatPrefix = prefix
|
||||
.append(Component.text("»").darkGray())
|
||||
.appendSpace()
|
||||
}
|
||||
|
||||
val tntLeaguePrefix = Component.text("TNT").color(NamedTextColor.DARK_RED)
|
||||
.append(Component.text("League").color(NamedTextColor.GOLD))
|
||||
fun TranslatableComponent.basic(): Component = StyleConfig.chatPrefix.append(this.gray())
|
||||
|
||||
val tntLeagueChatPrefix: Component = tntLeaguePrefix
|
||||
.append(Component.text("»").darkGray())
|
||||
.appendSpace()
|
||||
fun TranslatableComponent.error(): Component = StyleConfig.chatPrefix.append(this.red())
|
||||
|
||||
fun TranslatableComponent.basic(): Component = tntLeagueChatPrefix.append(this.gray())
|
||||
|
||||
fun TranslatableComponent.error(): Component = tntLeagueChatPrefix.append(this.red())
|
||||
|
||||
fun TranslatableComponent.success(): Component = tntLeagueChatPrefix.append(this.green())
|
||||
fun TranslatableComponent.success(): Component = StyleConfig.chatPrefix.append(this.green())
|
||||
|
||||
fun String.component(): Component = Component.text(this)
|
||||
|
||||
@@ -80,13 +83,10 @@ fun translate(key: String, vararg args: ComponentLike): TranslatableComponent =
|
||||
|
||||
fun Component.reset(): Component = this.style(Style.empty())
|
||||
|
||||
fun Component.colorByTeam(team: TNTLeagueTeam?) = when (team) {
|
||||
null -> this.gray()
|
||||
else -> this.color(team.color)
|
||||
}
|
||||
|
||||
fun Component.translate(locale: Locale): Component = GlobalTranslator.render(this, locale)
|
||||
|
||||
fun Component.translate(p: Player): Component = this.translate(p.locale())
|
||||
|
||||
fun Component.toLegacy(): String = LegacyComponentSerializer.legacySection().serialize(this)
|
||||
|
||||
fun Component.space(): Component = append(Component.space())
|
||||
+1
-1
@@ -17,7 +17,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package de.steamwar.tntleague.util
|
||||
package de.steamwar.kotlin.util
|
||||
|
||||
import org.bukkit.Location
|
||||
import org.bukkit.block.Block
|
||||
@@ -20,13 +20,19 @@
|
||||
package de.steamwar.tntleague
|
||||
|
||||
import de.steamwar.kotlin.message.ComponentMessage
|
||||
import de.steamwar.kotlin.message.StyleConfig
|
||||
import de.steamwar.kotlin.message.darkGray
|
||||
import de.steamwar.kotlin.message.gray
|
||||
import de.steamwar.tntleague.command.AcceptCommand
|
||||
import de.steamwar.tntleague.command.InviteCommand
|
||||
import de.steamwar.tntleague.command.LeaveCommand
|
||||
import de.steamwar.tntleague.command.RemoveCommand
|
||||
import de.steamwar.tntleague.events.GlobalListener
|
||||
import de.steamwar.tntleague.events.LobbyListener
|
||||
import de.steamwar.tntleague.game.TNTLeagueTeam
|
||||
import net.kyori.adventure.key.Key
|
||||
import net.kyori.adventure.text.Component
|
||||
import net.kyori.adventure.text.format.NamedTextColor
|
||||
import net.kyori.adventure.translation.GlobalTranslator
|
||||
import net.kyori.adventure.translation.TranslationRegistry
|
||||
import net.kyori.adventure.util.UTF8ResourceBundleControl
|
||||
@@ -36,9 +42,14 @@ import java.util.*
|
||||
lateinit var plugin: TNTLeague
|
||||
lateinit var message: ComponentMessage
|
||||
|
||||
val tntLeaguePrefix = Component.text("TNT").color(NamedTextColor.DARK_RED)
|
||||
.append(Component.text("League").color(NamedTextColor.GOLD))
|
||||
|
||||
class TNTLeague : JavaPlugin() {
|
||||
init {
|
||||
plugin = this
|
||||
|
||||
StyleConfig.prefix = tntLeaguePrefix
|
||||
}
|
||||
|
||||
override fun onEnable() {
|
||||
@@ -58,3 +69,8 @@ class TNTLeague : JavaPlugin() {
|
||||
LeaveCommand.register()
|
||||
}
|
||||
}
|
||||
|
||||
fun Component.colorByTeam(team: TNTLeagueTeam?) = when (team) {
|
||||
null -> this.gray()
|
||||
else -> this.color(team.color)
|
||||
}
|
||||
|
||||
@@ -21,8 +21,9 @@ package de.steamwar.tntleague.command
|
||||
|
||||
import de.steamwar.command.SWCommand
|
||||
import de.steamwar.command.TypeValidator
|
||||
import de.steamwar.kotlin.message.*
|
||||
import de.steamwar.tntleague.colorByTeam
|
||||
import de.steamwar.tntleague.game.TNTLeagueGame
|
||||
import de.steamwar.tntleague.util.*
|
||||
import net.kyori.adventure.text.event.ClickEvent
|
||||
import net.kyori.adventure.text.event.HoverEvent
|
||||
import org.bukkit.entity.Player
|
||||
@@ -37,7 +38,8 @@ 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.name.yellow(), translate(team.name).colorByTeam(team)).basic().clickEvent(
|
||||
ClickEvent.callback {
|
||||
if (target !in team.invites) return@callback
|
||||
|
||||
|
||||
@@ -20,13 +20,12 @@
|
||||
package de.steamwar.tntleague.config
|
||||
|
||||
import de.steamwar.tntleague.plugin
|
||||
import de.steamwar.tntleague.util.Area
|
||||
import de.steamwar.tntleague.util.translate
|
||||
import de.steamwar.kotlin.util.Area
|
||||
import de.steamwar.kotlin.message.translate
|
||||
import org.bukkit.Location
|
||||
import org.bukkit.Material
|
||||
import org.bukkit.configuration.ConfigurationSection
|
||||
import org.bukkit.configuration.file.YamlConfiguration
|
||||
import org.bukkit.entity.Villager
|
||||
import org.bukkit.entity.WanderingTrader
|
||||
import java.io.File
|
||||
|
||||
|
||||
@@ -19,12 +19,15 @@
|
||||
|
||||
package de.steamwar.tntleague.events
|
||||
|
||||
import de.steamwar.kotlin.message.basic
|
||||
import de.steamwar.kotlin.message.bold
|
||||
import de.steamwar.kotlin.message.translate
|
||||
import de.steamwar.tntleague.colorByTeam
|
||||
import de.steamwar.tntleague.config.TNTLeagueWorldConfig
|
||||
import de.steamwar.tntleague.game.TNTLeagueGame
|
||||
import de.steamwar.tntleague.game.TNTLeagueTeam
|
||||
import de.steamwar.tntleague.inventory.SWInventoryHolder
|
||||
import de.steamwar.kotlin.inventory.SWInventoryHolder
|
||||
import de.steamwar.tntleague.plugin
|
||||
import de.steamwar.tntleague.util.*
|
||||
import org.bukkit.GameMode
|
||||
import org.bukkit.Material
|
||||
import org.bukkit.event.EventHandler
|
||||
@@ -85,6 +88,7 @@ object GlobalListener: Listener {
|
||||
fun onPlayerDeath(e: PlayerDeathEvent) {
|
||||
e.deathMessage(null)
|
||||
e.drops.clear()
|
||||
e.keepInventory = true
|
||||
|
||||
e.itemsToKeep.removeIf { it.type != Material.DIAMOND_PICKAXE }
|
||||
}
|
||||
|
||||
@@ -41,8 +41,7 @@ object LobbyListener: Listener {
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
fun onPlayerQuit(e: PlayerQuitEvent) {
|
||||
val team = TNTLeagueGame.getTeam(e.player) ?: return
|
||||
team.leave(e.player)
|
||||
TNTLeagueGame.getTeam(e.player)?.leave(e.player)
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
|
||||
package de.steamwar.tntleague.game
|
||||
|
||||
import de.steamwar.kotlin.message.*
|
||||
import de.steamwar.kotlin.util.Area
|
||||
import de.steamwar.scoreboard.SWScoreboard
|
||||
import de.steamwar.sql.Fight
|
||||
import de.steamwar.sql.FightPlayer
|
||||
@@ -37,12 +39,9 @@ import net.kyori.adventure.sound.Sound
|
||||
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
|
||||
@@ -181,7 +180,7 @@ object TNTLeagueGame {
|
||||
redTeam.invites.remove(player)
|
||||
getTeam(player)?.apply {
|
||||
members.remove(player)
|
||||
if (leader == player) {
|
||||
if (leader == player && members.isNotEmpty() && state == GameState.RUNNING) {
|
||||
win(this.opposite, WinReason.LEAVE)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,10 +19,11 @@
|
||||
|
||||
package de.steamwar.tntleague.game
|
||||
|
||||
import de.steamwar.kotlin.message.*
|
||||
import de.steamwar.tntleague.colorByTeam
|
||||
import de.steamwar.tntleague.config.TNTLeagueWorldConfig
|
||||
import de.steamwar.tntleague.config.targetedBlocks
|
||||
import de.steamwar.tntleague.plugin
|
||||
import de.steamwar.tntleague.util.*
|
||||
import net.kyori.adventure.sound.Sound
|
||||
import net.kyori.adventure.text.format.NamedTextColor
|
||||
import net.kyori.adventure.text.format.TextColor
|
||||
@@ -31,7 +32,6 @@ import org.bukkit.Material
|
||||
import org.bukkit.enchantments.Enchantment
|
||||
import org.bukkit.entity.Player
|
||||
import org.bukkit.inventory.ItemStack
|
||||
import java.awt.Color.green
|
||||
|
||||
data class TNTLeagueTeam(val config: TNTLeagueWorldConfig.TeamConfig, private val team: Team) {
|
||||
|
||||
@@ -134,9 +134,7 @@ data class TNTLeagueTeam(val config: TNTLeagueWorldConfig.TeamConfig, private va
|
||||
}
|
||||
|
||||
fun leave(player: Player) {
|
||||
if (TNTLeagueGame.state == TNTLeagueGame.GameState.RUNNING) {
|
||||
TNTLeagueGame.playerLeave(player)
|
||||
} else {
|
||||
if (TNTLeagueGame.state != TNTLeagueGame.GameState.RUNNING) {
|
||||
members.remove(player)
|
||||
|
||||
if (members.isEmpty()) {
|
||||
@@ -146,6 +144,10 @@ data class TNTLeagueTeam(val config: TNTLeagueWorldConfig.TeamConfig, private va
|
||||
}
|
||||
if (leader == player) {
|
||||
leader = members.firstOrNull()
|
||||
|
||||
if (leader == null && TNTLeagueGame.state == TNTLeagueGame.GameState.LOBBY) {
|
||||
isReady = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,14 +19,13 @@
|
||||
|
||||
package de.steamwar.tntleague.inventory
|
||||
|
||||
import de.steamwar.kotlin.inventory.SWInventoryHolder
|
||||
import de.steamwar.kotlin.message.*
|
||||
import de.steamwar.tntleague.config.TNTLeagueConfig
|
||||
import de.steamwar.tntleague.game.TNTLeagueGame
|
||||
import de.steamwar.tntleague.plugin
|
||||
import de.steamwar.tntleague.util.*
|
||||
import net.kyori.adventure.sound.Sound
|
||||
import net.kyori.adventure.text.Component
|
||||
import net.kyori.adventure.text.format.Style
|
||||
import net.kyori.adventure.text.format.TextDecoration
|
||||
import org.bukkit.Material
|
||||
import org.bukkit.NamespacedKey
|
||||
import org.bukkit.entity.Player
|
||||
|
||||
@@ -19,10 +19,13 @@
|
||||
|
||||
package de.steamwar.tntleague.util
|
||||
|
||||
import de.steamwar.kotlin.message.*
|
||||
import de.steamwar.scoreboard.ScoreboardCallback
|
||||
import de.steamwar.tntleague.colorByTeam
|
||||
import de.steamwar.tntleague.config.targetedBlocks
|
||||
import de.steamwar.tntleague.game.TNTLeagueGame
|
||||
import de.steamwar.tntleague.game.TNTLeagueTeam
|
||||
import de.steamwar.tntleague.tntLeaguePrefix
|
||||
import net.kyori.adventure.text.Component
|
||||
import org.bukkit.entity.Player
|
||||
import kotlin.collections.HashMap
|
||||
@@ -43,7 +46,8 @@ data class TNTLeagueScoreboard(val p: Player): ScoreboardCallback {
|
||||
|
||||
when (val team = TNTLeagueGame.getTeam(p)) {
|
||||
is TNTLeagueTeam -> lines.add(translate("scoreboardCoins", team.coins.toString().yellow()).gray())
|
||||
else -> lines.add(translate("scoreboardCoins",
|
||||
else -> lines.add(
|
||||
translate("scoreboardCoins",
|
||||
Component.text(TNTLeagueGame.blueTeam.coins.toString()).colorByTeam(TNTLeagueGame.blueTeam)
|
||||
.append(Component.text("/").darkGray())
|
||||
.append(Component.text(TNTLeagueGame.redTeam.coins.toString()).colorByTeam(TNTLeagueGame.redTeam))
|
||||
|
||||
Reference in New Issue
Block a user