From fbfa0865fc2b461902ba273b8dd5c68aa44706d5 Mon Sep 17 00:00:00 2001 From: Lncvrt Date: Fri, 20 Jun 2025 10:46:11 -0700 Subject: [PATCH] Prevent kids from crashing my server --- .../lncvrt/galaxycreations/GalaxyCreations.kt | 6 ++++-- .../events/PlayerInteractListener.kt | 21 +++++++++++++++++++ .../events/VehicleCreateListener.kt | 15 +++++++++++++ .../events/VehicleMoveListener.kt | 15 +++++++++++++ 4 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 src/main/kotlin/xyz/lncvrt/galaxycreations/events/PlayerInteractListener.kt create mode 100644 src/main/kotlin/xyz/lncvrt/galaxycreations/events/VehicleCreateListener.kt create mode 100644 src/main/kotlin/xyz/lncvrt/galaxycreations/events/VehicleMoveListener.kt diff --git a/src/main/kotlin/xyz/lncvrt/galaxycreations/GalaxyCreations.kt b/src/main/kotlin/xyz/lncvrt/galaxycreations/GalaxyCreations.kt index 9ba645c..75d3566 100644 --- a/src/main/kotlin/xyz/lncvrt/galaxycreations/GalaxyCreations.kt +++ b/src/main/kotlin/xyz/lncvrt/galaxycreations/GalaxyCreations.kt @@ -2,14 +2,16 @@ package xyz.lncvrt.galaxycreations import net.kyori.adventure.text.minimessage.MiniMessage import org.bukkit.plugin.java.JavaPlugin -import xyz.lncvrt.galaxycreations.events.PlayerJoinListener -import xyz.lncvrt.galaxycreations.events.ProjectileLaunchListener +import xyz.lncvrt.galaxycreations.events.* class GalaxyCreations : JavaPlugin() { internal val miniMessage = MiniMessage.miniMessage() override fun onEnable() { + server.pluginManager.registerEvents(PlayerInteractListener(), this) server.pluginManager.registerEvents(PlayerJoinListener(this), this) server.pluginManager.registerEvents(ProjectileLaunchListener(), this) + server.pluginManager.registerEvents(VehicleCreateListener(), this) + server.pluginManager.registerEvents(VehicleMoveListener(), this) } } diff --git a/src/main/kotlin/xyz/lncvrt/galaxycreations/events/PlayerInteractListener.kt b/src/main/kotlin/xyz/lncvrt/galaxycreations/events/PlayerInteractListener.kt new file mode 100644 index 0000000..ffc9bf6 --- /dev/null +++ b/src/main/kotlin/xyz/lncvrt/galaxycreations/events/PlayerInteractListener.kt @@ -0,0 +1,21 @@ +package xyz.lncvrt.galaxycreations.events + +import org.bukkit.entity.Vehicle +import org.bukkit.event.EventHandler +import org.bukkit.event.Listener +import org.bukkit.event.block.Action +import org.bukkit.event.player.PlayerInteractEvent + +class PlayerInteractListener : Listener { + @EventHandler + fun onPlayerInteractEvent(event: PlayerInteractEvent) { + if (event.action == Action.RIGHT_CLICK_BLOCK) { + val item = event.item ?: return + if (item.type.name.contains("MINECART")) { + val chunk = event.clickedBlock?.location?.chunk ?: return + val vehicles = chunk.entities.filterIsInstance() + if (vehicles.size > 9) vehicles.forEach { it.remove() } + } + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/xyz/lncvrt/galaxycreations/events/VehicleCreateListener.kt b/src/main/kotlin/xyz/lncvrt/galaxycreations/events/VehicleCreateListener.kt new file mode 100644 index 0000000..32bc5a6 --- /dev/null +++ b/src/main/kotlin/xyz/lncvrt/galaxycreations/events/VehicleCreateListener.kt @@ -0,0 +1,15 @@ +package xyz.lncvrt.galaxycreations.events + +import org.bukkit.entity.Vehicle +import org.bukkit.event.EventHandler +import org.bukkit.event.Listener +import org.bukkit.event.vehicle.VehicleCreateEvent + +class VehicleCreateListener : Listener { + @EventHandler + fun onVehicleCreateEvent(event: VehicleCreateEvent) { + val chunk = event.vehicle.location.chunk + val vehicles = chunk.entities.filterIsInstance() + if (vehicles.size > 9) vehicles.forEach { it.remove() } + } +} \ No newline at end of file diff --git a/src/main/kotlin/xyz/lncvrt/galaxycreations/events/VehicleMoveListener.kt b/src/main/kotlin/xyz/lncvrt/galaxycreations/events/VehicleMoveListener.kt new file mode 100644 index 0000000..45e4242 --- /dev/null +++ b/src/main/kotlin/xyz/lncvrt/galaxycreations/events/VehicleMoveListener.kt @@ -0,0 +1,15 @@ +package xyz.lncvrt.galaxycreations.events + +import org.bukkit.entity.Vehicle +import org.bukkit.event.EventHandler +import org.bukkit.event.Listener +import org.bukkit.event.vehicle.VehicleMoveEvent + +class VehicleMoveListener : Listener { + @EventHandler + fun onVehicleMoveEvent(event: VehicleMoveEvent) { + val chunk = event.vehicle.location.chunk + val vehicles = chunk.entities.filterIsInstance() + if (vehicles.size > 9) vehicles.forEach { it.remove() } + } +} \ No newline at end of file