refactor: cleanup whatever that was
This commit is contained in:
parent
3f49698c4c
commit
7665ef9114
10 changed files with 97 additions and 185 deletions
9
TODO.md
9
TODO.md
|
@ -1,9 +1,12 @@
|
||||||
- [ ] Démarrage en forme de Title
|
|
||||||
- [ ] Système de bounties pour les nazes (objectifs à complèter)
|
- [ ] Système de bounties pour les nazes (objectifs à complèter)
|
||||||
- [ ] Système de palier par équipe (qui en est où par rapport au dragon)
|
- [ ] Système de palier par équipe (qui en est où par rapport au dragon)
|
||||||
- [ ] Classer les équipes qui ont le plus tapé le dragon
|
|
||||||
- [ ] Calculer le deuxième groupe le plus proche de l'Enderdragon
|
|
||||||
|
|
||||||
|
- [ ] Démarrage en forme de Title
|
||||||
|
- [ ] spread le spawn dans un rayon de 1000 blocks
|
||||||
|
- [ x ] Calculer le deuxième groupe le plus proche de l'Enderdragon
|
||||||
|
|
||||||
|
Après que les premiers joueurs aient passé le portail de l'End,
|
||||||
|
balancer les coordonnées
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
val advancement = Advancement.Builder.advancement().save({}, "runnerdragon:test").toBukkit()
|
val advancement = Advancement.Builder.advancement().save({}, "runnerdragon:test").toBukkit()
|
||||||
|
|
|
@ -17,7 +17,7 @@ import xyz.ineanto.dragon.commands.GameCommand
|
||||||
import xyz.ineanto.dragon.event.*
|
import xyz.ineanto.dragon.event.*
|
||||||
import xyz.ineanto.dragon.event.end.BedInteractListener
|
import xyz.ineanto.dragon.event.end.BedInteractListener
|
||||||
import xyz.ineanto.dragon.event.end.BlockPlaceListener
|
import xyz.ineanto.dragon.event.end.BlockPlaceListener
|
||||||
import xyz.ineanto.dragon.event.end.EnderDragonListener
|
import xyz.ineanto.dragon.event.end.FinalBlowListener
|
||||||
import xyz.ineanto.dragon.event.waiting.WaitingListener
|
import xyz.ineanto.dragon.event.waiting.WaitingListener
|
||||||
import xyz.ineanto.dragon.player.PlayerManager
|
import xyz.ineanto.dragon.player.PlayerManager
|
||||||
import xyz.ineanto.dragon.scoreboard.ScoreboardTeams
|
import xyz.ineanto.dragon.scoreboard.ScoreboardTeams
|
||||||
|
@ -86,7 +86,7 @@ class RunnerDragon : JavaPlugin() {
|
||||||
|
|
||||||
server.pluginManager.registerEvents(DimensionEntranceListener(), this)
|
server.pluginManager.registerEvents(DimensionEntranceListener(), this)
|
||||||
server.pluginManager.registerEvents(BedInteractListener(), this)
|
server.pluginManager.registerEvents(BedInteractListener(), this)
|
||||||
server.pluginManager.registerEvents(EnderDragonListener(), this)
|
server.pluginManager.registerEvents(FinalBlowListener(), this)
|
||||||
server.pluginManager.registerEvents(PlayerJoinListener(), this)
|
server.pluginManager.registerEvents(PlayerJoinListener(), this)
|
||||||
server.pluginManager.registerEvents(PlayerQuitListener(), this)
|
server.pluginManager.registerEvents(PlayerQuitListener(), this)
|
||||||
server.pluginManager.registerEvents(PlayerRespawnListener(), this)
|
server.pluginManager.registerEvents(PlayerRespawnListener(), this)
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
package xyz.ineanto.dragon.assets
|
|
||||||
|
|
||||||
data class Asset(
|
|
||||||
private val qualifier: String,
|
|
||||||
val name: String,
|
|
||||||
var path: String = "assets/${qualifier}/${name}.png"
|
|
||||||
) {
|
|
||||||
class Icons {
|
|
||||||
companion object {
|
|
||||||
val DENY: Asset = Asset("icon", "deny")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
package xyz.ineanto.dragon.coordinates
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player
|
||||||
|
|
||||||
|
class CoordsDumper {
|
||||||
|
// TODO (Ineanto, 06/09/2025): Coords
|
||||||
|
// tous les joueurs (x, y, z + dimension + équipe)
|
||||||
|
// stronghold (x, y, z + dimension)
|
||||||
|
|
||||||
|
fun dumpCoords(player: Player) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -11,6 +11,8 @@ import xyz.ineanto.dragon.RunnerDragon
|
||||||
class EntityDamageListener : Listener {
|
class EntityDamageListener : Listener {
|
||||||
@EventHandler
|
@EventHandler
|
||||||
fun onEntityDamage(event: EntityDamageEvent) {
|
fun onEntityDamage(event: EntityDamageEvent) {
|
||||||
|
// TODO (Ineanto, 06/09/2025): annuler les dégâts entre membres d'une même équipe
|
||||||
|
|
||||||
if (event.entity is Player) {
|
if (event.entity is Player) {
|
||||||
val player = (event.entity as Player)
|
val player = (event.entity as Player)
|
||||||
if (RunnerDragon.STATE == GameState.GRACE_PERIOD && event.cause == EntityDamageEvent.DamageCause.ENTITY_ATTACK) {
|
if (RunnerDragon.STATE == GameState.GRACE_PERIOD && event.cause == EntityDamageEvent.DamageCause.ENTITY_ATTACK) {
|
||||||
|
|
|
@ -16,8 +16,6 @@ class PlayerJoinListener : Listener {
|
||||||
val player = event.player
|
val player = event.player
|
||||||
val dragonPlayer: DragonPlayer = RunnerDragon.instance.playerManager.addPlayer(player.uniqueId)
|
val dragonPlayer: DragonPlayer = RunnerDragon.instance.playerManager.addPlayer(player.uniqueId)
|
||||||
|
|
||||||
// TODO (Ineanto, 6/26/23): Set nick
|
|
||||||
|
|
||||||
event.joinMessage(
|
event.joinMessage(
|
||||||
Component.text("(", NamedTextColor.WHITE)
|
Component.text("(", NamedTextColor.WHITE)
|
||||||
.append(Component.text("+", NamedTextColor.GREEN))
|
.append(Component.text("+", NamedTextColor.GREEN))
|
||||||
|
|
|
@ -1,95 +0,0 @@
|
||||||
package xyz.ineanto.dragon.event.end
|
|
||||||
|
|
||||||
import net.kyori.adventure.text.Component
|
|
||||||
import net.kyori.adventure.text.format.NamedTextColor
|
|
||||||
import net.kyori.adventure.text.format.TextDecoration
|
|
||||||
import net.kyori.adventure.text.minimessage.MiniMessage
|
|
||||||
import org.bukkit.Bukkit
|
|
||||||
import org.bukkit.Sound
|
|
||||||
import org.bukkit.World.Environment
|
|
||||||
import org.bukkit.entity.EnderDragon
|
|
||||||
import org.bukkit.entity.Entity
|
|
||||||
import org.bukkit.entity.Player
|
|
||||||
import org.bukkit.entity.Projectile
|
|
||||||
import org.bukkit.event.EventHandler
|
|
||||||
import org.bukkit.event.Listener
|
|
||||||
import org.bukkit.event.entity.EntityDamageEvent
|
|
||||||
import org.bukkit.event.entity.EntityDeathEvent
|
|
||||||
import xyz.ineanto.dragon.RunnerDragon
|
|
||||||
import java.util.*
|
|
||||||
|
|
||||||
class EnderDragonListener : Listener {
|
|
||||||
@EventHandler
|
|
||||||
fun onEnderDragonDeath(event: EntityDeathEvent) {
|
|
||||||
if (event.entity is EnderDragon) {
|
|
||||||
val dragon = event.entity as EnderDragon
|
|
||||||
val lastDamageCause = dragon.lastDamageCause ?: return
|
|
||||||
val entity: Entity = lastDamageCause.entity
|
|
||||||
|
|
||||||
var player: Player? = null
|
|
||||||
when (lastDamageCause.cause) {
|
|
||||||
EntityDamageEvent.DamageCause.BLOCK_EXPLOSION -> {
|
|
||||||
val first: Optional<UUID> = RunnerDragon.LAST_BED_INTERACT.asMap().entries.stream()
|
|
||||||
.sorted { a, b -> b.value.compareTo(a.value) }
|
|
||||||
.map { it.key }
|
|
||||||
.findFirst()
|
|
||||||
player = Bukkit.getPlayer(first.get()) ?: return
|
|
||||||
}
|
|
||||||
|
|
||||||
EntityDamageEvent.DamageCause.ENTITY_ATTACK, EntityDamageEvent.DamageCause.ENTITY_SWEEP_ATTACK, EntityDamageEvent.DamageCause.PROJECTILE -> {
|
|
||||||
if (entity is Projectile) {
|
|
||||||
player = entity.shooter as Player
|
|
||||||
} else if (entity is Player) {
|
|
||||||
player = entity
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
else -> {}
|
|
||||||
}
|
|
||||||
|
|
||||||
val dragonPlayer = player?.uniqueId?.let { RunnerDragon.instance.playerManager.getPlayer(it) }
|
|
||||||
val team = dragonPlayer?.getTeam()
|
|
||||||
if (dragon.dragonBattle?.hasBeenPreviouslyKilled()?.not() == true) {
|
|
||||||
Bukkit.getOnlinePlayers().forEach {
|
|
||||||
if ((it.location.world!!.environment == Environment.THE_END).not()) {
|
|
||||||
it.playSound(it.location, Sound.ENTITY_ENDER_DRAGON_DEATH, 1f, 0.5f)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
val victoryComponent: Component = Component.text()
|
|
||||||
.append(RunnerDragon.PREFIX)
|
|
||||||
.appendSpace()
|
|
||||||
.append(
|
|
||||||
MiniMessage.miniMessage().deserialize("<gradient:#ff8b26:#ff6193><b>VICTOIRE !</b></gradient>")
|
|
||||||
)
|
|
||||||
.build()
|
|
||||||
|
|
||||||
|
|
||||||
val teamComponent = Component.text()
|
|
||||||
.append(RunnerDragon.PREFIX)
|
|
||||||
.appendSpace()
|
|
||||||
.append(
|
|
||||||
Component.text(
|
|
||||||
"Le dragon a été tué par l'équipe :",
|
|
||||||
NamedTextColor.WHITE
|
|
||||||
)
|
|
||||||
)
|
|
||||||
.appendSpace()
|
|
||||||
|
|
||||||
team?.let {
|
|
||||||
teamComponent.append(team.displayName)
|
|
||||||
} ?: {
|
|
||||||
teamComponent.append(Component.text("???", NamedTextColor.RED, TextDecoration.OBFUSCATED))
|
|
||||||
}
|
|
||||||
|
|
||||||
teamComponent.appendSpace()
|
|
||||||
teamComponent.append(Component.text("!", NamedTextColor.WHITE, TextDecoration.BOLD))
|
|
||||||
|
|
||||||
Bukkit.broadcast(victoryComponent)
|
|
||||||
Bukkit.broadcast(teamComponent.build())
|
|
||||||
}
|
|
||||||
|
|
||||||
//SecondFight.start(dragon)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,72 @@
|
||||||
|
package xyz.ineanto.dragon.event.end
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.Component
|
||||||
|
import net.kyori.adventure.text.format.NamedTextColor
|
||||||
|
import net.kyori.adventure.text.format.TextDecoration
|
||||||
|
import net.kyori.adventure.text.minimessage.MiniMessage
|
||||||
|
import org.bukkit.Bukkit
|
||||||
|
import org.bukkit.NamespacedKey
|
||||||
|
import org.bukkit.Sound
|
||||||
|
import org.bukkit.World.Environment
|
||||||
|
import org.bukkit.event.EventHandler
|
||||||
|
import org.bukkit.event.Listener
|
||||||
|
import org.bukkit.event.player.PlayerAdvancementDoneEvent
|
||||||
|
import xyz.ineanto.dragon.RunnerDragon
|
||||||
|
import xyz.ineanto.dragon.teams.Team
|
||||||
|
|
||||||
|
class FinalBlowListener : Listener {
|
||||||
|
@EventHandler
|
||||||
|
fun onEnderDragonDeath(event: PlayerAdvancementDoneEvent) {
|
||||||
|
if (event.advancement == Bukkit.getAdvancement(NamespacedKey.fromString("minecraft:story/follow_ender_eye")!!)) {
|
||||||
|
// TODO (Ineanto, 06/09/2025): dumper les coords du stronghold
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event.advancement == Bukkit.getAdvancement(NamespacedKey.fromString("minecraft:end/kill_dragon")!!)) {
|
||||||
|
// TODO (Ineanto, 06/09/2025): finir ce bordel
|
||||||
|
|
||||||
|
val player = event.player
|
||||||
|
val dragonPlayer = player.uniqueId.let { RunnerDragon.instance.playerManager.getPlayer(it) }
|
||||||
|
val team: Team? = dragonPlayer.getTeam()
|
||||||
|
Bukkit.getOnlinePlayers().forEach {
|
||||||
|
if ((it.location.world!!.environment == Environment.THE_END).not()) {
|
||||||
|
it.playSound(it.location, Sound.ENTITY_ENDER_DRAGON_DEATH, 1f, 0.5f)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val victoryComponent: Component = Component.text()
|
||||||
|
.append(RunnerDragon.PREFIX)
|
||||||
|
.appendSpace()
|
||||||
|
.append(
|
||||||
|
MiniMessage.miniMessage().deserialize("<gradient:#ff8b26:#ff6193><b>VICTOIRE !</b></gradient>")
|
||||||
|
)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
|
||||||
|
val teamComponent = Component.text()
|
||||||
|
.append(RunnerDragon.PREFIX)
|
||||||
|
.appendSpace()
|
||||||
|
.append(
|
||||||
|
Component.text(
|
||||||
|
"Le dragon a été tué par l'équipe :",
|
||||||
|
NamedTextColor.WHITE
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.appendSpace()
|
||||||
|
|
||||||
|
|
||||||
|
teamComponent.appendSpace()
|
||||||
|
teamComponent.append(Component.text("!", NamedTextColor.WHITE, TextDecoration.BOLD))
|
||||||
|
|
||||||
|
team?.let {
|
||||||
|
teamComponent.append(team.displayName)
|
||||||
|
} ?: {
|
||||||
|
teamComponent.append(Component.text("???", NamedTextColor.RED, TextDecoration.OBFUSCATED))
|
||||||
|
}
|
||||||
|
|
||||||
|
Bukkit.broadcast(victoryComponent)
|
||||||
|
Bukkit.broadcast(teamComponent.build())
|
||||||
|
|
||||||
|
//SecondFight.start(dragon)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,70 +0,0 @@
|
||||||
package xyz.ineanto.dragon.inventory
|
|
||||||
|
|
||||||
import net.kyori.adventure.key.Key
|
|
||||||
import net.kyori.adventure.text.Component
|
|
||||||
import net.kyori.adventure.text.format.NamedTextColor
|
|
||||||
import net.kyori.adventure.text.format.TextDecoration
|
|
||||||
import ru.brikster.glyphs.compile.GlyphCompiler
|
|
||||||
import ru.brikster.glyphs.glyph.Glyph
|
|
||||||
import ru.brikster.glyphs.glyph.GlyphComponentBuilder
|
|
||||||
import ru.brikster.glyphs.glyph.GlyphComponentBuilder.PositionType
|
|
||||||
import ru.brikster.glyphs.glyph.image.ImageGlyph
|
|
||||||
import ru.brikster.glyphs.glyph.image.TextureProperties
|
|
||||||
import ru.brikster.glyphs.glyph.space.mojang.MojangSpacesGlyph
|
|
||||||
import ru.brikster.glyphs.resources.GlyphResources
|
|
||||||
import team.unnamed.creative.texture.Texture
|
|
||||||
|
|
||||||
class TeamSelectionScreen {
|
|
||||||
fun show() {
|
|
||||||
// Glyphs objects
|
|
||||||
var spaces = MojangSpacesGlyph.create()
|
|
||||||
|
|
||||||
var guiBackground = ImageGlyph.of(
|
|
||||||
Key.key(Glyph.DEFAULT_NAMESPACE, "gui/gui_background"),
|
|
||||||
Texture.of(
|
|
||||||
Key.key(Glyph.DEFAULT_NAMESPACE, "gui/gui_background"),
|
|
||||||
GlyphResources.resourceFromJar("gui_background.png")
|
|
||||||
),
|
|
||||||
TextureProperties(/* height */ 256, /* ascent */ 19)
|
|
||||||
)
|
|
||||||
|
|
||||||
var exampleButton = ImageGlyph.of(
|
|
||||||
Key.key(Glyph.DEFAULT_NAMESPACE, "gui/example_button"),
|
|
||||||
Texture.of(
|
|
||||||
Key.key(Glyph.DEFAULT_NAMESPACE, "gui/example_button"),
|
|
||||||
GlyphResources.resourceFromJar("example_button.png")
|
|
||||||
),
|
|
||||||
TextureProperties(/* height */ 22, /* ascent */ -56
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
var font = GlyphResources.minecraftFontGlyphCollection(
|
|
||||||
listOf(
|
|
||||||
TextureProperties(/* height */ 12, /* ascent */ -6),
|
|
||||||
TextureProperties(/* height */ 8, /* ascent */ -24
|
|
||||||
),
|
|
||||||
TextureProperties(/* height */ 8, /* ascent */-36)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
val resources = GlyphCompiler.instance()
|
|
||||||
.compile(spaces, guiBackground, exampleButton, font);
|
|
||||||
resources.addAll(GlyphResources.blankSlotResources());
|
|
||||||
|
|
||||||
//createResourcepack(resources)
|
|
||||||
|
|
||||||
val title = GlyphComponentBuilder.gui(spaces)
|
|
||||||
.append(guiBackground)
|
|
||||||
.append(/* position */ 131, exampleButton)
|
|
||||||
.append(/* position */ 16, font.translate(/* height */ 12, /* ascent */ -6, "Example text"))
|
|
||||||
.append(/* position */ 16, font.translate(/* height */ 8, /* ascent */ -24, "Hello "))
|
|
||||||
.append(PositionType.RELATIVE, font.translate(/* height */ 8, /* ascent */ -24, "world..."))
|
|
||||||
.append(
|
|
||||||
PositionType.ABSOLUTE, /* position */
|
|
||||||
16,
|
|
||||||
font.translate(/* height */ 8, /* ascent */ -36, "Hello world...", NamedTextColor.LIGHT_PURPLE)
|
|
||||||
)
|
|
||||||
.build()
|
|
||||||
.append(Component.text("Test menu with glyphs", NamedTextColor.DARK_GRAY, TextDecoration.UNDERLINED))
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -122,7 +122,9 @@ class DragonPlayer(uuid: UUID) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun updateDisplayName() {
|
fun updateDisplayName() {
|
||||||
|
val team = RunnerDragon.instance.teamManager.getPlayerTeam(bukkitPlayer)
|
||||||
|
|
||||||
|
// TODO (Ineanto, 06/09/2025): do this via scoreboard teams
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun formatDuration(totalSeconds: Int): String {
|
private fun formatDuration(totalSeconds: Int): String {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue