diff --git a/.kotlin/sessions/kotlin-compiler-12260198840055133192.salive b/.kotlin/sessions/kotlin-compiler-12260198840055133192.salive
new file mode 100644
index 0000000..e69de29
diff --git a/build.gradle.kts b/build.gradle.kts
index d5e2998..32c242c 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -20,7 +20,9 @@ dependencies {
paperweight.paperDevBundle("1.21-R0.1-SNAPSHOT")
// Game Libraries
- implementation("xyz.xenondevs.invui:invui:1.33")
+ compileOnly("xyz.xenondevs.invui:invui:1.33")
+ compileOnly("xyz.xenondevs.invui:invui-kotlin:1.33")
+
implementation("ru.brikster:glyphs-api:1.1.0")
implementation("ru.brikster:glyphs-resources:1.1.0")
implementation("team.unnamed:creative-api:1.7.2")
@@ -38,10 +40,6 @@ kotlin {
}
tasks {
- assemble {
- dependsOn(reobfJar)
- }
-
runServer {
minecraftVersion("1.21")
}
diff --git a/src/main/kotlin/xyz/ineanto/dragon/RunnerDragon.kt b/src/main/kotlin/xyz/ineanto/dragon/RunnerDragon.kt
index c5a8f7d..3fbeb5a 100644
--- a/src/main/kotlin/xyz/ineanto/dragon/RunnerDragon.kt
+++ b/src/main/kotlin/xyz/ineanto/dragon/RunnerDragon.kt
@@ -2,6 +2,7 @@ package xyz.ineanto.dragon
import com.google.common.cache.Cache
import com.google.common.cache.CacheBuilder
+import io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents
import net.kyori.adventure.text.Component
import net.kyori.adventure.text.format.NamedTextColor
import net.kyori.adventure.text.format.TextDecoration
@@ -17,13 +18,13 @@ import xyz.ineanto.dragon.event.end.BlockPlaceListener
import xyz.ineanto.dragon.event.end.EnderDragonListener
import xyz.ineanto.dragon.event.waiting.WaitingListener
import xyz.ineanto.dragon.player.PlayerManager
-import xyz.ineanto.dragon.schematic.SchematicLoader
import xyz.ineanto.dragon.scoreboard.ScoreboardTeams
import xyz.ineanto.dragon.tasks.GracePeriodTask
import xyz.ineanto.dragon.tasks.TimerTask
import xyz.ineanto.dragon.teams.Team
import xyz.ineanto.dragon.teams.TeamManager
import xyz.ineanto.dragon.world.WorldManager
+import xyz.xenondevs.invui.InvUI
import java.time.Duration
import java.time.Instant
import java.util.*
@@ -58,8 +59,6 @@ class RunnerDragon : JavaPlugin() {
var TIMER_TASK: BukkitTask? = null
var GRACE_PERIOD_TASK: BukkitTask? = null
-
- lateinit var LOBBY_SCHEMATIC: SchematicLoader
}
lateinit var teamManager: TeamManager
@@ -68,8 +67,10 @@ class RunnerDragon : JavaPlugin() {
private lateinit var scoreboardTeams: ScoreboardTeams
+ @Suppress("UnstableApiUsage")
override fun onEnable() {
instance = this
+ InvUI.getInstance().setPlugin(this)
playerManager = PlayerManager()
teamManager = TeamManager(this)
@@ -84,7 +85,11 @@ class RunnerDragon : JavaPlugin() {
server.pluginManager.registerEvents(BlockPlaceListener(), this)
server.pluginManager.registerEvents(EntityDeathListener(), this)
server.pluginManager.registerEvents(EntityDamageListener(), this)
- getCommand("rd")!!.setExecutor(MainCommand())
+
+ lifecycleManager.registerEventHandler(LifecycleEvents.COMMANDS) { event ->
+ val commands = event.registrar()
+ commands.register("rd", MainCommand())
+ }
worldManager = WorldManager(this)
worldManager.init()
diff --git a/src/main/kotlin/xyz/ineanto/dragon/RunnerDragonLoader.kt b/src/main/kotlin/xyz/ineanto/dragon/RunnerDragonLoader.kt
new file mode 100644
index 0000000..f8f91f2
--- /dev/null
+++ b/src/main/kotlin/xyz/ineanto/dragon/RunnerDragonLoader.kt
@@ -0,0 +1,23 @@
+package xyz.ineanto.dragon
+
+import io.papermc.paper.plugin.loader.PluginClasspathBuilder
+import io.papermc.paper.plugin.loader.PluginLoader
+import io.papermc.paper.plugin.loader.library.impl.MavenLibraryResolver
+import org.eclipse.aether.artifact.DefaultArtifact
+import org.eclipse.aether.graph.Dependency
+import org.eclipse.aether.repository.RemoteRepository
+
+class RunnerDragonLoader : PluginLoader {
+ override fun classloader(classpathBuilder: PluginClasspathBuilder) {
+ val resolver = MavenLibraryResolver()
+
+ resolver.addRepository(
+ RemoteRepository.Builder("xenondevs", "default", "https://repo.xenondevs.xyz/releases/").build()
+ )
+
+ resolver.addDependency(Dependency(DefaultArtifact("xyz.xenondevs.invui:invui:pom:1.33"), null))
+ resolver.addDependency(Dependency(DefaultArtifact("xyz.xenondevs.invui:invui-kotlin:pom:1.33"), null))
+
+ classpathBuilder.addLibrary(resolver)
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/xyz/ineanto/dragon/commands/MainCommand.kt b/src/main/kotlin/xyz/ineanto/dragon/commands/MainCommand.kt
index 5eef5bd..d7fdb74 100644
--- a/src/main/kotlin/xyz/ineanto/dragon/commands/MainCommand.kt
+++ b/src/main/kotlin/xyz/ineanto/dragon/commands/MainCommand.kt
@@ -1,29 +1,32 @@
package xyz.ineanto.dragon.commands
+import io.papermc.paper.command.brigadier.BasicCommand
+import io.papermc.paper.command.brigadier.CommandSourceStack
import net.kyori.adventure.text.Component
import net.kyori.adventure.text.format.NamedTextColor
import net.kyori.adventure.text.format.TextDecoration
import org.bukkit.Bukkit
-import org.bukkit.command.Command
-import org.bukkit.command.CommandExecutor
-import org.bukkit.command.CommandSender
import org.bukkit.entity.Player
import xyz.ineanto.dragon.RunnerDragon
-class MainCommand : CommandExecutor {
- override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<String>): Boolean {
- if (sender is Player) {
- val player: Player = sender
+@Suppress("UnstableApiUsage")
+class MainCommand : BasicCommand {
+ override fun execute(
+ stack: CommandSourceStack,
+ args: Array<out String>
+ ) {
+ if (stack.sender is Player) {
+ val player: Player = stack.sender as Player
val dragonPlayer = RunnerDragon.instance.playerManager.getPlayer(player.uniqueId)
if (player.isOp.not()) {
- dragonPlayer.sendMessage(Component.text("Erreur: Status d'opérateur requis."))
- return true
+ dragonPlayer.sendMessage(Component.text("Erreur: Statut d'opérateur requis."))
+ return
}
if (args.isEmpty()) {
dragonPlayer.sendMessage(Component.text("Argument manquant: /rd (teams/game/say)"))
- return true
+ return
}
when (args[0]) {
@@ -38,7 +41,6 @@ class MainCommand : CommandExecutor {
.append(Component.text("Veuillez préciser un message.", NamedTextColor.RED))
.build()
)
- return true
}
val announcementComponent = Component.text()
@@ -51,6 +53,5 @@ class MainCommand : CommandExecutor {
}
}
}
- return true
}
}
\ No newline at end of file
diff --git a/src/main/kotlin/xyz/ineanto/dragon/commands/TeamsSubCommand.kt b/src/main/kotlin/xyz/ineanto/dragon/commands/TeamsSubCommand.kt
index 040b7ec..e923786 100644
--- a/src/main/kotlin/xyz/ineanto/dragon/commands/TeamsSubCommand.kt
+++ b/src/main/kotlin/xyz/ineanto/dragon/commands/TeamsSubCommand.kt
@@ -19,7 +19,7 @@ class TeamsSubCommand {
.text()
.append(Component.text("-", NamedTextColor.DARK_GRAY))
.appendSpace()
- .append(Component.text("Status:", NamedTextColor.GOLD))
+ .append(Component.text("État:", NamedTextColor.GOLD))
.appendSpace()
if (RunnerDragon.TEAM_LOCK) {
diff --git a/src/main/kotlin/xyz/ineanto/dragon/event/PlayerRespawnListener.kt b/src/main/kotlin/xyz/ineanto/dragon/event/PlayerRespawnListener.kt
index 8df5202..c3e44be 100644
--- a/src/main/kotlin/xyz/ineanto/dragon/event/PlayerRespawnListener.kt
+++ b/src/main/kotlin/xyz/ineanto/dragon/event/PlayerRespawnListener.kt
@@ -3,11 +3,17 @@ package xyz.ineanto.dragon.event
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.player.PlayerRespawnEvent
+import xyz.ineanto.dragon.GameState
+import xyz.ineanto.dragon.RunnerDragon
import xyz.ineanto.dragon.world.WorldManager
class PlayerRespawnListener : Listener {
@EventHandler
fun onRespawn(event: PlayerRespawnEvent) {
- event.respawnLocation = WorldManager.GAME_WORLD.spawnLocation
+ if (RunnerDragon.STATE == GameState.WAITING) {
+ event.respawnLocation = WorldManager.LIMBO_WORLD.spawnLocation
+ } else {
+ event.respawnLocation = WorldManager.GAME_WORLD.spawnLocation
+ }
}
}
\ No newline at end of file
diff --git a/src/main/kotlin/xyz/ineanto/dragon/world/WorldManager.kt b/src/main/kotlin/xyz/ineanto/dragon/world/WorldManager.kt
index 95281a1..2261119 100644
--- a/src/main/kotlin/xyz/ineanto/dragon/world/WorldManager.kt
+++ b/src/main/kotlin/xyz/ineanto/dragon/world/WorldManager.kt
@@ -25,16 +25,16 @@ class WorldManager(private val instance: RunnerDragon) {
}
fun init(): Boolean {
- val limboFolder = File(GAME_WORLD_NAME)
+ val limboFolder = File(LIMBO_WORLD_NAME)
if (!limboFolder.exists()) {
// Limbo is the world where players are
// held (hostage) before the game starts.
instance.logger.severe("Limbo world doesn't exist! Generating an emergency spawn...")
LIMBO_WORLD = createWorld(LIMBO_WORLD_NAME, World.Environment.NETHER, false)
- }
- else {
- LIMBO_WORLD = Bukkit.getWorld(LIMBO_WORLD_NAME)!!
+ } else {
+ // Load the Limbo world
+ LIMBO_WORLD = Bukkit.createWorld(WorldCreator(LIMBO_WORLD_NAME))!!
}
LIMBO_SPAWN = LIMBO_WORLD.spawnLocation
diff --git a/src/main/resources/plugin.yml b/src/main/resources/paper-plugin.yml
similarity index 76%
rename from src/main/resources/plugin.yml
rename to src/main/resources/paper-plugin.yml
index 0b39c47..54f1768 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/paper-plugin.yml
@@ -1,7 +1,9 @@
name: RunnerDragon
+version: '1.1'
+api-version: '1.21'
main: xyz.ineanto.dragon.RunnerDragon
-version: 1.1
-api-version: "1.21"
+loader: xyz.ineanto.dragon.RunnerDragonLoader
+
commands:
rd:
permission: "runnerdragon.admin"