パーミッションの退出時保存
This commit is contained in:
parent
1dfaf8494c
commit
fc004bc09e
|
|
@ -1,13 +1,20 @@
|
||||||
package net.hareworks.on_join_spawn
|
package net.hareworks.on_join_spawn
|
||||||
|
|
||||||
|
import io.papermc.paper.event.player.AsyncPlayerSpawnLocationEvent
|
||||||
import org.bukkit.event.EventHandler
|
import org.bukkit.event.EventHandler
|
||||||
import org.bukkit.event.EventPriority
|
import org.bukkit.event.EventPriority
|
||||||
import org.bukkit.event.Listener
|
import org.bukkit.event.Listener
|
||||||
import org.bukkit.event.player.PlayerJoinEvent
|
import org.bukkit.event.player.PlayerQuitEvent
|
||||||
import org.bukkit.plugin.java.JavaPlugin
|
import org.bukkit.plugin.java.JavaPlugin
|
||||||
|
import java.io.File
|
||||||
|
import java.util.UUID
|
||||||
|
|
||||||
class App : JavaPlugin(), Listener {
|
class App : JavaPlugin(), Listener {
|
||||||
|
private lateinit var ignoredDir: File
|
||||||
|
|
||||||
override fun onEnable() {
|
override fun onEnable() {
|
||||||
|
ignoredDir = File(dataFolder, "ignored")
|
||||||
|
ignoredDir.mkdirs()
|
||||||
server.pluginManager.registerEvents(this, this)
|
server.pluginManager.registerEvents(this, this)
|
||||||
logger.info("on-join-spawn plugin enabled")
|
logger.info("on-join-spawn plugin enabled")
|
||||||
}
|
}
|
||||||
|
|
@ -16,20 +23,24 @@ class App : JavaPlugin(), Listener {
|
||||||
logger.info("on-join-spawn plugin disabled")
|
logger.info("on-join-spawn plugin disabled")
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST)
|
@EventHandler
|
||||||
fun onPlayerJoin(event: PlayerJoinEvent) {
|
fun onPlayerQuit(event: PlayerQuitEvent) {
|
||||||
val player = event.player
|
val player = event.player
|
||||||
|
val file = File(ignoredDir, "${player.uniqueId}")
|
||||||
// Check if player has ignore permission
|
|
||||||
if (player.hasPermission("onjoinspawn.ignore")) {
|
if (player.hasPermission("onjoinspawn.ignore")) {
|
||||||
return
|
file.createNewFile()
|
||||||
|
} else {
|
||||||
|
file.delete()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the world's spawn location
|
@EventHandler(priority = EventPriority.HIGHEST)
|
||||||
val spawnLocation = player.world.spawnLocation.clone()
|
fun onPlayerSpawnLocation(event: AsyncPlayerSpawnLocationEvent) {
|
||||||
|
val uuid = event.connection.profile.id ?: return
|
||||||
|
if (isIgnored(uuid)) return
|
||||||
|
|
||||||
|
val spawnLocation = event.spawnLocation.world.spawnLocation.clone()
|
||||||
|
|
||||||
// Add 0.5 to X and Z coordinates if they are whole numbers
|
|
||||||
// This centers the player on the block
|
|
||||||
val x = spawnLocation.x
|
val x = spawnLocation.x
|
||||||
val z = spawnLocation.z
|
val z = spawnLocation.z
|
||||||
|
|
||||||
|
|
@ -40,8 +51,8 @@ class App : JavaPlugin(), Listener {
|
||||||
spawnLocation.z = z + 0.5
|
spawnLocation.z = z + 0.5
|
||||||
}
|
}
|
||||||
|
|
||||||
// Teleport player to spawn immediately
|
event.spawnLocation = spawnLocation
|
||||||
// This happens before the player is fully loaded into the world
|
|
||||||
player.teleportAsync(spawnLocation)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun isIgnored(uuid: UUID): Boolean = File(ignoredDir, "$uuid").exists()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user