Sit (untested) and NoJoinMessage

This commit is contained in:
bizink
2025-06-12 01:20:36 +10:00
parent 5501b75d95
commit 31dd22426a
6 changed files with 129 additions and 7 deletions

View File

@ -2,7 +2,9 @@ package com.pobnellion.pobutils
import com.pobnellion.pobutils.modules.CmdModule
import com.pobnellion.pobutils.modules.ModuleBase
import com.pobnellion.pobutils.modules.noJoinMessage.NoJoinMessage
import com.pobnellion.pobutils.modules.portals.Portals
import com.pobnellion.pobutils.modules.sit.Sit
import org.bukkit.plugin.java.JavaPlugin
@ -20,6 +22,8 @@ class Pobutils : JavaPlugin() {
CmdModule.register(this)
registerModule(Portals(this))
registerModule(NoJoinMessage(this))
registerModule(Sit(this))
logger.info("Registered ${availableModules.size} modules: [${availableModules.keys.joinToString()}]")
@ -47,9 +51,11 @@ class Pobutils : JavaPlugin() {
saveResource("config.yml", false)
config.addDefault("modules.noJoinMessage", false)
config.addDefault("modules.sit", false)
config.addDefault("modules.spawn", false)
config.addDefault("modules.portals", false)
config.addDefault("modules.sit", false)
config.addDefault("modules.spawn", false)
config.addDefault("modules.warp", false)
config.addDefault("modules.hub", false)
config.addDefault("modules.disableTNT", false)

View File

@ -0,0 +1,33 @@
package com.pobnellion.pobutils.modules.noJoinMessage
import com.pobnellion.pobutils.Pobutils
import com.pobnellion.pobutils.modules.ModuleBase
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.player.PlayerJoinEvent
import org.bukkit.event.player.PlayerQuitEvent
import org.bukkit.plugin.java.JavaPlugin
class NoJoinMessage(plugin: JavaPlugin) : ModuleBase(plugin), Listener {
override val name: String = "noJoinMessage"
override fun register() {
plugin.server.pluginManager.registerEvents(this, plugin)
}
override fun reload() {}
override fun onDisable() {}
override fun onEnable() {}
@EventHandler
fun onPlayerJoin(event: PlayerJoinEvent) {
if (Pobutils.isEnabled(this.name))
event.joinMessage(null)
}
@EventHandler
fun onPlayerLeave(event: PlayerQuitEvent) {
if (Pobutils.isEnabled(this.name))
event.quitMessage(null)
}
}

View File

@ -21,7 +21,7 @@ object CmdPortal {
fun register(plugin: JavaPlugin, portals: Portals) {
val command = Commands.literal("portal")
.requires { source ->
Pobutils.isEnabled("portals") &&
Pobutils.isEnabled(portals.name) &&
source.sender.hasPermission("pobutils.admin") &&
source.sender is Player
}

View File

@ -4,7 +4,6 @@ import com.google.common.io.ByteStreams
import com.pobnellion.pobutils.Pobutils
import com.pobnellion.pobutils.modules.ModuleBase
import io.papermc.paper.math.BlockPosition
import org.bukkit.Bukkit
import org.bukkit.Location
import org.bukkit.NamespacedKey
import org.bukkit.attribute.Attribute
@ -21,14 +20,12 @@ import org.bukkit.plugin.messaging.PluginMessageListener
@Suppress("UnstableApiUsage")
class Portals(plugin: JavaPlugin) : ModuleBase(plugin), Listener, PluginMessageListener {
val portals: MutableList<Portal> = mutableListOf()
val portals: MutableSet<Portal> = mutableSetOf()
val portalCooldowns: MutableMap<Player, Location> = mutableMapOf()
override val name: String = "portals"
override fun register() {
Bukkit.getPluginManager().registerEvents(this, plugin)
plugin.server.pluginManager.registerEvents(this, plugin)
CmdPortal.register(plugin, this)
}

View File

@ -0,0 +1,25 @@
package com.pobnellion.pobutils.modules.sit
import com.mojang.brigadier.Command
import com.pobnellion.pobutils.Pobutils
import io.papermc.paper.command.brigadier.Commands
import io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents
import org.bukkit.entity.Player
import org.bukkit.plugin.java.JavaPlugin
@Suppress("UnstableApiUsage")
object CmdSit {
fun register(plugin: JavaPlugin, sit: Sit) {
val command = Commands.literal("sit")
.requires { source -> Pobutils.isEnabled(sit.name) && source.sender is Player }
.executes { ctx ->
sit.sit(ctx.source.sender as Player)
return@executes Command.SINGLE_SUCCESS
}
.build()
plugin.lifecycleManager.registerEventHandler(LifecycleEvents.COMMANDS) { commands ->
commands.registrar().register(command)
}
}
}

View File

@ -0,0 +1,61 @@
package com.pobnellion.pobutils.modules.sit
import com.pobnellion.pobutils.Pobutils
import com.pobnellion.pobutils.modules.ModuleBase
import org.bukkit.entity.Entity
import org.bukkit.entity.EntityType
import org.bukkit.entity.Player
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.entity.EntityDismountEvent
import org.bukkit.event.player.PlayerQuitEvent
import org.bukkit.plugin.java.JavaPlugin
class Sit(plugin: JavaPlugin) : ModuleBase(plugin), Listener {
override val name: String = "sit"
private val sittingPlayers: MutableMap<Player, Entity> = mutableMapOf()
override fun register() {
plugin.server.pluginManager.registerEvents(this, plugin)
CmdSit.register(plugin, this)
}
override fun reload() {
onDisable()
onEnable()
}
override fun onEnable() { }
override fun onDisable() {
for ((_, seat) in sittingPlayers)
seat.remove()
sittingPlayers.clear()
}
fun sit(player: Player) {
val seat = player.world.spawnEntity(player.location, EntityType.TEXT_DISPLAY)
seat.addScoreboardTag("seat")
seat.addPassenger(player)
sittingPlayers[player] = seat
}
@EventHandler
fun onPlayerDismount(event: EntityDismountEvent) {
if (event.entity !is Player || !Pobutils.isEnabled(this.name))
return
val player = event.entity as Player
if (sittingPlayers.containsKey(player))
sittingPlayers[player]?.remove()
}
@EventHandler
fun onPlayerLeave(event: PlayerQuitEvent) {
if (!Pobutils.isEnabled(this.name) || !sittingPlayers.containsKey(event.player))
return
sittingPlayers[event.player]?.remove()
}
}