Fix elytra rocket

This commit is contained in:
2025-07-03 01:56:25 -07:00
parent f290bc9074
commit 1ee1ce394b
3 changed files with 35 additions and 30 deletions

View File

@@ -32,6 +32,7 @@ class ChaosMCLobbyPlugin : JavaPlugin() {
val pluginManager = server.pluginManager val pluginManager = server.pluginManager
pluginManager.registerEvents(InventoryClickListener(), this) pluginManager.registerEvents(InventoryClickListener(), this)
pluginManager.registerEvents(PlayerAdvancementCriterionGrantListener(), this) pluginManager.registerEvents(PlayerAdvancementCriterionGrantListener(), this)
pluginManager.registerEvents(PlayerElytraBoostListener(this), this)
pluginManager.registerEvents(PlayerGameModeChangeListener(), this) pluginManager.registerEvents(PlayerGameModeChangeListener(), this)
pluginManager.registerEvents(PlayerInteractListener(this), this) pluginManager.registerEvents(PlayerInteractListener(this), this)
pluginManager.registerEvents(PlayerItemDamageListener(), this) pluginManager.registerEvents(PlayerItemDamageListener(), this)
@@ -40,7 +41,6 @@ class ChaosMCLobbyPlugin : JavaPlugin() {
pluginManager.registerEvents(PlayerMoveListener(this), this) pluginManager.registerEvents(PlayerMoveListener(this), this)
pluginManager.registerEvents(PlayerSwapHandItemsListener(), this) pluginManager.registerEvents(PlayerSwapHandItemsListener(), this)
pluginManager.registerEvents(PlayerToggleFlightListener(), this) pluginManager.registerEvents(PlayerToggleFlightListener(), this)
pluginManager.registerEvents(ProjectileLaunchListener(), this)
} }
internal fun resetPlayer(player: Player, teleport: Boolean, setGamemode: Boolean) { internal fun resetPlayer(player: Player, teleport: Boolean, setGamemode: Boolean) {

View File

@@ -0,0 +1,34 @@
package xyz.lncvrt.chaosmclobby.event
import com.destroystokyo.paper.event.player.PlayerElytraBoostEvent
import net.kyori.adventure.text.minimessage.MiniMessage
import org.bukkit.Material
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.inventory.ItemStack
import org.sayandev.stickynote.bukkit.plugin
import xyz.lncvrt.chaosmcapi.utils.MessageFormat
import xyz.lncvrt.chaosmclobby.ChaosMCLobbyPlugin
class PlayerElytraBoostListener(plugin: ChaosMCLobbyPlugin) : Listener {
@EventHandler
fun onPlayerElytraBoostEvent(event: PlayerElytraBoostEvent) {
plugin.server.scheduler.runTaskLater(plugin, Runnable {
val player = event.player
val fireworkItem = ItemStack(Material.FIREWORK_ROCKET)
val fireworkMeta = fireworkItem.itemMeta
fireworkMeta.displayName(
MiniMessage.miniMessage().deserialize(
MessageFormat.setPrimaryColor(
"<italic:false>Elytra ${
MessageFormat.setSecondaryColor("(Fly around the lobby!)")
}</italic>"
)
)
)
fireworkItem.setItemMeta(fireworkMeta)
player.inventory.setItem(7, fireworkItem)
player.setCooldown(fireworkItem.type, 20)
}, 1)
}
}

View File

@@ -1,29 +0,0 @@
package xyz.lncvrt.chaosmclobby.event
import net.kyori.adventure.text.minimessage.MiniMessage
import org.bukkit.Material
import org.bukkit.entity.Firework
import org.bukkit.entity.Player
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.entity.ProjectileLaunchEvent
import org.bukkit.inventory.ItemStack
import xyz.lncvrt.chaosmcapi.utils.MessageFormat
class ProjectileLaunchListener() : Listener {
@EventHandler
fun onProjectileLaunchEvent(event: ProjectileLaunchEvent) {
val firework = event.getEntity()
val player = firework.shooter
if (firework is Firework) {
if (player is Player) {
val fireworkItem = ItemStack(Material.FIREWORK_ROCKET)
val fireworkMeta = fireworkItem.itemMeta
fireworkMeta.displayName(MiniMessage.miniMessage().deserialize(MessageFormat.setPrimaryColor("<italic:false>Elytra ${MessageFormat.setSecondaryColor("(Fly around the lobby!)")}</italic>")))
fireworkItem.setItemMeta(fireworkMeta)
player.inventory.setItem(7, fireworkItem)
player.setCooldown(fireworkItem.type, 20)
}
}
}
}