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 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
|
||||
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.end.BedInteractListener
|
||||
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.player.PlayerManager
|
||||
import xyz.ineanto.dragon.scoreboard.ScoreboardTeams
|
||||
|
@ -86,7 +86,7 @@ class RunnerDragon : JavaPlugin() {
|
|||
|
||||
server.pluginManager.registerEvents(DimensionEntranceListener(), this)
|
||||
server.pluginManager.registerEvents(BedInteractListener(), this)
|
||||
server.pluginManager.registerEvents(EnderDragonListener(), this)
|
||||
server.pluginManager.registerEvents(FinalBlowListener(), this)
|
||||
server.pluginManager.registerEvents(PlayerJoinListener(), this)
|
||||
server.pluginManager.registerEvents(PlayerQuitListener(), 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 {
|
||||
@EventHandler
|
||||
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) {
|
||||
val player = (event.entity as Player)
|
||||
if (RunnerDragon.STATE == GameState.GRACE_PERIOD && event.cause == EntityDamageEvent.DamageCause.ENTITY_ATTACK) {
|
||||
|
|
|
@ -16,8 +16,6 @@ class PlayerJoinListener : Listener {
|
|||
val player = event.player
|
||||
val dragonPlayer: DragonPlayer = RunnerDragon.instance.playerManager.addPlayer(player.uniqueId)
|
||||
|
||||
// TODO (Ineanto, 6/26/23): Set nick
|
||||
|
||||
event.joinMessage(
|
||||
Component.text("(", NamedTextColor.WHITE)
|
||||
.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() {
|
||||
val team = RunnerDragon.instance.teamManager.getPlayerTeam(bukkitPlayer)
|
||||
|
||||
// TODO (Ineanto, 06/09/2025): do this via scoreboard teams
|
||||
}
|
||||
|
||||
private fun formatDuration(totalSeconds: Int): String {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue