Add tpa commands, add back command, change login message
This commit is contained in:
parent
144d2d3025
commit
8963598077
|
@ -1,5 +1,6 @@
|
||||||
package nl.voidcorp.mainplugin
|
package nl.voidcorp.mainplugin
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor
|
||||||
import org.bukkit.event.EventHandler
|
import org.bukkit.event.EventHandler
|
||||||
import org.bukkit.event.Listener
|
import org.bukkit.event.Listener
|
||||||
import org.bukkit.event.player.PlayerJoinEvent
|
import org.bukkit.event.player.PlayerJoinEvent
|
||||||
|
@ -16,6 +17,8 @@ object VoidEvents : Listener {
|
||||||
evt.player.setDisplayName(nick)
|
evt.player.setDisplayName(nick)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
evt.joinMessage = "Hello ${evt.player.displayName}, and welcome to the server!"
|
evt.joinMessage =
|
||||||
|
"Hello ${ChatColor.BLUE}${evt.player.displayName}${ChatColor.RESET}, and welcome to ${ChatColor.BOLD}Xirion.net${ChatColor.RESET}!"
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -15,6 +15,9 @@ bukkit {
|
||||||
author = 'J00LZ'
|
author = 'J00LZ'
|
||||||
depend = ['VoidPlugin']
|
depend = ['VoidPlugin']
|
||||||
commands {
|
commands {
|
||||||
|
spawn {
|
||||||
|
description = "Warp to the worldspawn"
|
||||||
|
}
|
||||||
home {
|
home {
|
||||||
description = "Teleport to a home"
|
description = "Teleport to a home"
|
||||||
}
|
}
|
||||||
|
@ -24,12 +27,34 @@ bukkit {
|
||||||
delhome {
|
delhome {
|
||||||
description = "Delete a home"
|
description = "Delete a home"
|
||||||
}
|
}
|
||||||
|
homes{
|
||||||
|
description = "List all your homes"
|
||||||
|
}
|
||||||
warp {
|
warp {
|
||||||
description = "Warp to a location"
|
description = "Warp to a location"
|
||||||
}
|
}
|
||||||
spawn {
|
setwarp {
|
||||||
description = "Warp to the worldspawn"
|
description = "Set a warp"
|
||||||
}
|
}
|
||||||
|
delwarp {
|
||||||
|
description = "Delete a warp"
|
||||||
|
}
|
||||||
|
warps{
|
||||||
|
description = "List all the warps"
|
||||||
|
}
|
||||||
|
tpa {
|
||||||
|
description = "Request to teleport to a player"
|
||||||
|
}
|
||||||
|
tpaccept {
|
||||||
|
description = "Accept a teleport request"
|
||||||
|
}
|
||||||
|
tpdeny {
|
||||||
|
description = "Deny a teleport request"
|
||||||
|
}
|
||||||
|
back{
|
||||||
|
description = "Go back to your previous location"
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
permissions {
|
permissions {
|
||||||
|
@ -48,6 +73,14 @@ bukkit {
|
||||||
description = "Allows usage of the spawn command"
|
description = "Allows usage of the spawn command"
|
||||||
setDefault("true")
|
setDefault("true")
|
||||||
}
|
}
|
||||||
|
'voidteleport.setwarp' {
|
||||||
|
description = "Allows setting warps"
|
||||||
|
setDefault("OP")
|
||||||
|
}
|
||||||
|
'voidteleport.warp' {
|
||||||
|
description = "Allows usage of the warp command"
|
||||||
|
setDefault("true")
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
package nl.voidcorp.teleportplugin
|
||||||
|
|
||||||
|
import nl.voidcorp.teleportplugin.models.TeleportLocation
|
||||||
|
import nl.voidcorp.teleportplugin.models.TeleportLocations
|
||||||
|
import org.bukkit.Location
|
||||||
|
import org.bukkit.entity.Player
|
||||||
|
import org.bukkit.event.EventHandler
|
||||||
|
import org.bukkit.event.Listener
|
||||||
|
import org.bukkit.event.entity.EntityDamageEvent
|
||||||
|
import org.bukkit.event.player.PlayerTeleportEvent
|
||||||
|
import org.jetbrains.exposed.sql.transactions.transaction
|
||||||
|
|
||||||
|
object TpEvents : Listener {
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
fun onDeath(evt: EntityDamageEvent) {
|
||||||
|
val entity = evt.entity
|
||||||
|
if (entity is Player) {
|
||||||
|
if (entity.health <= 0.0) {
|
||||||
|
setLastTpLoc(entity)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
fun onTeleport(evt: PlayerTeleportEvent) {
|
||||||
|
setLastTpLoc(evt.player, evt.from)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setLastTpLoc(player: Player, location: Location = player.location) {
|
||||||
|
transaction {
|
||||||
|
val tp = TeleportLocation.find { TeleportLocations.player eq player.uniqueId }.firstOrNull()
|
||||||
|
if (tp == null)
|
||||||
|
TeleportLocation.new {
|
||||||
|
this.location = location
|
||||||
|
this.player = player.uniqueId
|
||||||
|
}
|
||||||
|
else
|
||||||
|
tp.location = location
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,8 +2,21 @@ package nl.voidcorp.teleportplugin
|
||||||
|
|
||||||
import nl.voidcorp.mainplugin.CommandHandler
|
import nl.voidcorp.mainplugin.CommandHandler
|
||||||
import nl.voidcorp.mainplugin.VoidPluginBase
|
import nl.voidcorp.mainplugin.VoidPluginBase
|
||||||
import nl.voidcorp.teleportplugin.commands.*
|
import nl.voidcorp.teleportplugin.commands.SpawnCommand
|
||||||
|
import nl.voidcorp.teleportplugin.commands.home.DelHomeCommand
|
||||||
|
import nl.voidcorp.teleportplugin.commands.home.HomeCommand
|
||||||
|
import nl.voidcorp.teleportplugin.commands.home.ListHomeCommand
|
||||||
|
import nl.voidcorp.teleportplugin.commands.home.SetHomeCommand
|
||||||
|
import nl.voidcorp.teleportplugin.commands.tpx.BackCommand
|
||||||
|
import nl.voidcorp.teleportplugin.commands.tpx.TpAcceptCommand
|
||||||
|
import nl.voidcorp.teleportplugin.commands.tpx.TpDenyCommand
|
||||||
|
import nl.voidcorp.teleportplugin.commands.tpx.TpaCommand
|
||||||
|
import nl.voidcorp.teleportplugin.commands.warp.DelWarpCommand
|
||||||
|
import nl.voidcorp.teleportplugin.commands.warp.SetWarpCommand
|
||||||
|
import nl.voidcorp.teleportplugin.commands.warp.WarpCommand
|
||||||
import nl.voidcorp.teleportplugin.models.Homes
|
import nl.voidcorp.teleportplugin.models.Homes
|
||||||
|
import nl.voidcorp.teleportplugin.models.TeleportLocations
|
||||||
|
import nl.voidcorp.teleportplugin.models.TpRequests
|
||||||
import nl.voidcorp.teleportplugin.models.Warps
|
import nl.voidcorp.teleportplugin.models.Warps
|
||||||
import org.jetbrains.exposed.sql.SchemaUtils
|
import org.jetbrains.exposed.sql.SchemaUtils
|
||||||
import org.jetbrains.exposed.sql.transactions.transaction
|
import org.jetbrains.exposed.sql.transactions.transaction
|
||||||
|
@ -13,14 +26,22 @@ class VoidTeleport(override val comment: String = "Teleport around :D") :
|
||||||
|
|
||||||
override fun enable() {
|
override fun enable() {
|
||||||
CommandHandler(this)
|
CommandHandler(this)
|
||||||
|
.registerCommand("spawn", SpawnCommand())
|
||||||
.registerCommand("sethome", SetHomeCommand())
|
.registerCommand("sethome", SetHomeCommand())
|
||||||
.registerCommand("home", HomeCommand())
|
.registerCommand("home", HomeCommand())
|
||||||
.registerCommand("delhome", DelHomeCommand())
|
.registerCommand("delhome", DelHomeCommand())
|
||||||
|
.registerCommand("homes", ListHomeCommand(HomeCommand(), "Your homes are"))
|
||||||
.registerCommand("warp", WarpCommand())
|
.registerCommand("warp", WarpCommand())
|
||||||
.registerCommand("spawn",SpawnCommand())
|
.registerCommand("setwarp", SetWarpCommand())
|
||||||
.registerCommand("setworldspawn", SetWorldspawnCommand())
|
.registerCommand("delwarp", DelWarpCommand())
|
||||||
|
.registerCommand("warps", ListHomeCommand(WarpCommand(),"The warps are"))
|
||||||
|
.registerCommand("tpa", TpaCommand())
|
||||||
|
.registerCommand("tpaccept", TpAcceptCommand())
|
||||||
|
.registerCommand("tpdeny", TpDenyCommand())
|
||||||
|
.registerCommand("back",BackCommand())
|
||||||
|
server.pluginManager.registerEvents(TpEvents, this)
|
||||||
transaction {
|
transaction {
|
||||||
SchemaUtils.createMissingTablesAndColumns(Homes, Warps)
|
SchemaUtils.createMissingTablesAndColumns(Homes, Warps, TpRequests, TeleportLocations)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,16 +0,0 @@
|
||||||
package nl.voidcorp.teleportplugin.commands
|
|
||||||
|
|
||||||
import nl.voidcorp.mainplugin.commands.VoidCommand
|
|
||||||
import org.bukkit.command.Command
|
|
||||||
import org.bukkit.command.CommandSender
|
|
||||||
import org.bukkit.entity.Player
|
|
||||||
|
|
||||||
class SetWorldspawnCommand : VoidCommand() {
|
|
||||||
override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<out String>): Boolean {
|
|
||||||
if ((sender is Player) && sender.hasPermission("voidteleport.setspawn")) {
|
|
||||||
sender.world.spawnLocation = sender.location
|
|
||||||
}
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,4 +1,4 @@
|
||||||
package nl.voidcorp.teleportplugin.commands
|
package nl.voidcorp.teleportplugin.commands.home
|
||||||
|
|
||||||
import nl.voidcorp.mainplugin.commands.VoidCommand
|
import nl.voidcorp.mainplugin.commands.VoidCommand
|
||||||
import nl.voidcorp.teleportplugin.models.Homes
|
import nl.voidcorp.teleportplugin.models.Homes
|
|
@ -1,4 +1,4 @@
|
||||||
package nl.voidcorp.teleportplugin.commands
|
package nl.voidcorp.teleportplugin.commands.home
|
||||||
|
|
||||||
import nl.voidcorp.mainplugin.commands.VoidCommand
|
import nl.voidcorp.mainplugin.commands.VoidCommand
|
||||||
import nl.voidcorp.teleportplugin.models.Home
|
import nl.voidcorp.teleportplugin.models.Home
|
||||||
|
@ -17,7 +17,7 @@ class HomeCommand : VoidCommand() {
|
||||||
args: Array<out String>
|
args: Array<out String>
|
||||||
): List<String> {
|
): List<String> {
|
||||||
return if (sender is Player) {
|
return if (sender is Player) {
|
||||||
val current = args.lastOrNull()
|
val current = args.lastOrNull() ?: ""
|
||||||
transaction {
|
transaction {
|
||||||
Home.find { (Homes.userid eq sender.uniqueId) and (Homes.name like "$current%") }
|
Home.find { (Homes.userid eq sender.uniqueId) and (Homes.name like "$current%") }
|
||||||
.map { it.name }.toList()
|
.map { it.name }.toList()
|
|
@ -0,0 +1,18 @@
|
||||||
|
package nl.voidcorp.teleportplugin.commands.home
|
||||||
|
|
||||||
|
import nl.voidcorp.mainplugin.commands.VoidCommand
|
||||||
|
import org.bukkit.command.Command
|
||||||
|
import org.bukkit.command.CommandSender
|
||||||
|
|
||||||
|
class ListHomeCommand(private val cmd: VoidCommand, val string: String) : VoidCommand() {
|
||||||
|
|
||||||
|
override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<out String>): Boolean {
|
||||||
|
val tab = cmd.onTabComplete(sender, object : Command("oof") {
|
||||||
|
override fun execute(sender: CommandSender, commandLabel: String, args: Array<out String>): Boolean {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}, "", emptyArray())
|
||||||
|
sender.sendMessage("$string: ${tab.joinToString()}")
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package nl.voidcorp.teleportplugin.commands
|
package nl.voidcorp.teleportplugin.commands.home
|
||||||
|
|
||||||
import nl.voidcorp.mainplugin.commands.VoidCommand
|
import nl.voidcorp.mainplugin.commands.VoidCommand
|
||||||
import nl.voidcorp.teleportplugin.models.Home
|
import nl.voidcorp.teleportplugin.models.Home
|
||||||
|
@ -7,7 +7,6 @@ import org.bukkit.command.Command
|
||||||
import org.bukkit.command.CommandSender
|
import org.bukkit.command.CommandSender
|
||||||
import org.bukkit.entity.Player
|
import org.bukkit.entity.Player
|
||||||
import org.jetbrains.exposed.sql.and
|
import org.jetbrains.exposed.sql.and
|
||||||
import org.jetbrains.exposed.sql.select
|
|
||||||
import org.jetbrains.exposed.sql.transactions.transaction
|
import org.jetbrains.exposed.sql.transactions.transaction
|
||||||
|
|
||||||
class SetHomeCommand : VoidCommand() {
|
class SetHomeCommand : VoidCommand() {
|
|
@ -0,0 +1,26 @@
|
||||||
|
package nl.voidcorp.teleportplugin.commands.tpx
|
||||||
|
|
||||||
|
import nl.voidcorp.mainplugin.commands.VoidCommand
|
||||||
|
import nl.voidcorp.teleportplugin.models.TeleportLocation
|
||||||
|
import nl.voidcorp.teleportplugin.models.TeleportLocations
|
||||||
|
import org.bukkit.command.Command
|
||||||
|
import org.bukkit.command.CommandSender
|
||||||
|
import org.bukkit.entity.Player
|
||||||
|
import org.jetbrains.exposed.sql.transactions.transaction
|
||||||
|
|
||||||
|
class BackCommand : VoidCommand() {
|
||||||
|
override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<out String>): Boolean {
|
||||||
|
return if (sender is Player) {
|
||||||
|
transaction {
|
||||||
|
val tp = TeleportLocation.find { TeleportLocations.player eq sender.uniqueId }.firstOrNull()
|
||||||
|
if (tp == null) {
|
||||||
|
sender.sendMessage("Sorry, you don't have a location to go back to on record...")
|
||||||
|
} else {
|
||||||
|
sender.teleport(tp.location)
|
||||||
|
sender.sendMessage("Welcome back!")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
true
|
||||||
|
} else false
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
package nl.voidcorp.teleportplugin.commands.tpx
|
||||||
|
|
||||||
|
import nl.voidcorp.mainplugin.commands.VoidCommand
|
||||||
|
import nl.voidcorp.teleportplugin.models.TpRequest
|
||||||
|
import nl.voidcorp.teleportplugin.models.TpRequests
|
||||||
|
import org.bukkit.Bukkit
|
||||||
|
import org.bukkit.command.Command
|
||||||
|
import org.bukkit.command.CommandSender
|
||||||
|
import org.bukkit.entity.Player
|
||||||
|
import org.jetbrains.exposed.sql.transactions.transaction
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
|
class TpAcceptCommand : VoidCommand() {
|
||||||
|
override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<out String>): Boolean {
|
||||||
|
if (sender is Player) {
|
||||||
|
transaction {
|
||||||
|
val req = TpRequest.find { TpRequests.to eq sender.uniqueId }.toList()
|
||||||
|
if (req.isEmpty()) {
|
||||||
|
sender.sendMessage("You have no requests open...")
|
||||||
|
} else {
|
||||||
|
val teleport = req.first()
|
||||||
|
val from = Bukkit.getPlayer(teleport.from)
|
||||||
|
if (from != null) {
|
||||||
|
sender.sendMessage("Accepted request from ${from.displayName}")
|
||||||
|
from.sendMessage("Teleported to ${sender.displayName}")
|
||||||
|
from.teleport(sender.location)
|
||||||
|
}
|
||||||
|
teleport.delete()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
package nl.voidcorp.teleportplugin.commands.tpx
|
||||||
|
|
||||||
|
import nl.voidcorp.mainplugin.commands.VoidCommand
|
||||||
|
import nl.voidcorp.teleportplugin.models.TpRequest
|
||||||
|
import nl.voidcorp.teleportplugin.models.TpRequests
|
||||||
|
import org.bukkit.Bukkit
|
||||||
|
import org.bukkit.command.Command
|
||||||
|
import org.bukkit.command.CommandSender
|
||||||
|
import org.bukkit.entity.Player
|
||||||
|
import org.jetbrains.exposed.sql.transactions.transaction
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
|
class TpDenyCommand : VoidCommand() {
|
||||||
|
override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<out String>): Boolean {
|
||||||
|
if (sender is Player) {
|
||||||
|
transaction {
|
||||||
|
val req = TpRequest.find { TpRequests.to eq sender.uniqueId }.toList()
|
||||||
|
if (req.isEmpty()) {
|
||||||
|
sender.sendMessage("You have no requests open...")
|
||||||
|
} else {
|
||||||
|
val teleport = req.first()
|
||||||
|
val from = Bukkit.getPlayer(teleport.from)
|
||||||
|
if (from != null) {
|
||||||
|
sender.sendMessage("Denied request from ${from.displayName}")
|
||||||
|
}
|
||||||
|
teleport.delete()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,80 @@
|
||||||
|
package nl.voidcorp.teleportplugin.commands.tpx
|
||||||
|
|
||||||
|
import net.md_5.bungee.api.chat.ClickEvent
|
||||||
|
import net.md_5.bungee.api.chat.TextComponent
|
||||||
|
import nl.voidcorp.mainplugin.commands.VoidCommand
|
||||||
|
import nl.voidcorp.teleportplugin.models.TpRequest
|
||||||
|
import nl.voidcorp.teleportplugin.models.TpRequests
|
||||||
|
import org.bukkit.Bukkit
|
||||||
|
import org.bukkit.ChatColor
|
||||||
|
import org.bukkit.command.Command
|
||||||
|
import org.bukkit.command.CommandSender
|
||||||
|
import org.bukkit.entity.Player
|
||||||
|
import org.jetbrains.exposed.sql.and
|
||||||
|
import org.jetbrains.exposed.sql.transactions.transaction
|
||||||
|
|
||||||
|
class TpaCommand : VoidCommand() {
|
||||||
|
override fun onTabComplete(
|
||||||
|
sender: CommandSender,
|
||||||
|
command: Command,
|
||||||
|
alias: String,
|
||||||
|
args: Array<out String>
|
||||||
|
): List<String> {
|
||||||
|
if (sender is Player) {
|
||||||
|
val toComplete = args.lastOrNull() ?: ""
|
||||||
|
return Bukkit.getOnlinePlayers().toList().map { ChatColor.stripColor(it.name)!! }
|
||||||
|
.filter { it.startsWith(toComplete) }
|
||||||
|
}
|
||||||
|
|
||||||
|
return emptyList()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<out String>): Boolean {
|
||||||
|
if (sender is Player) {
|
||||||
|
if (args.isEmpty()) {
|
||||||
|
sender.sendMessage("The first argument should be a nickname of an online player")
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
val pl = Bukkit.getPlayer(args.first())
|
||||||
|
if (pl == null || !pl.isOnline) {
|
||||||
|
sender.sendMessage("The first argument should be a nickname of an online player")
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
transaction {
|
||||||
|
val open =
|
||||||
|
TpRequest.find { (TpRequests.from eq sender.uniqueId) and (TpRequests.to eq pl.uniqueId) }.toList()
|
||||||
|
open.forEach {
|
||||||
|
if (it.timeout.isAfterNow) {
|
||||||
|
it.delete()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (TpRequest.find { (TpRequests.from eq sender.uniqueId) and (TpRequests.to eq pl.uniqueId) }.toList().isNotEmpty()) {
|
||||||
|
sender.sendMessage("You already have a request open for ${pl.displayName}")
|
||||||
|
} else {
|
||||||
|
TpRequest.new {
|
||||||
|
from = sender.uniqueId
|
||||||
|
to = pl.uniqueId
|
||||||
|
}
|
||||||
|
sender.sendMessage("Sent a teleport request to ${pl.displayName}")
|
||||||
|
pl.sendMessage(
|
||||||
|
TextComponent("Received a new Teleport request from "),
|
||||||
|
TextComponent(sender.displayName).apply { color = net.md_5.bungee.api.ChatColor.AQUA },
|
||||||
|
TextComponent(", use "),
|
||||||
|
TextComponent("/tpaccept").apply {
|
||||||
|
color = net.md_5.bungee.api.ChatColor.GREEN
|
||||||
|
clickEvent = ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tpaccept")
|
||||||
|
},
|
||||||
|
TextComponent(" or "),
|
||||||
|
TextComponent("/tpdeny").apply {
|
||||||
|
color = net.md_5.bungee.api.ChatColor.RED
|
||||||
|
clickEvent = ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tpdeny")
|
||||||
|
},
|
||||||
|
TextComponent(" to accept or deny it!")
|
||||||
|
)
|
||||||
|
//pl.sendMessage("Received a new teleport request from ${sender.displayName}, use /tpaccept or /tpdeny to accept or deny it!")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
package nl.voidcorp.teleportplugin.commands.warp
|
||||||
|
|
||||||
|
import nl.voidcorp.mainplugin.commands.VoidCommand
|
||||||
|
import nl.voidcorp.teleportplugin.models.Warp
|
||||||
|
import nl.voidcorp.teleportplugin.models.Warps
|
||||||
|
import org.bukkit.command.Command
|
||||||
|
import org.bukkit.command.CommandSender
|
||||||
|
import org.bukkit.entity.Player
|
||||||
|
import org.jetbrains.exposed.sql.transactions.transaction
|
||||||
|
|
||||||
|
class DelWarpCommand : VoidCommand() {
|
||||||
|
|
||||||
|
override fun onTabComplete(
|
||||||
|
sender: CommandSender,
|
||||||
|
command: Command,
|
||||||
|
alias: String,
|
||||||
|
args: Array<out String>
|
||||||
|
): List<String> {
|
||||||
|
return if (sender is Player) {
|
||||||
|
transaction {
|
||||||
|
Warp.find { Warps.name like "${args.lastOrNull() ?: ""}%" }.map { it.name }
|
||||||
|
}
|
||||||
|
} else mutableListOf()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<out String>): Boolean {
|
||||||
|
if (sender is Player) {
|
||||||
|
if (!sender.hasPermission("voidteleport.setwarp")) return false
|
||||||
|
if (args.isEmpty()) {
|
||||||
|
sender.sendMessage("You need to specify a warp name!")
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
val loc = args.first()
|
||||||
|
transaction {
|
||||||
|
val warp = Warp.find { Warps.name eq loc }.firstOrNull()
|
||||||
|
if (warp != null) {
|
||||||
|
warp.delete()
|
||||||
|
sender.sendMessage("The warp $loc has been deleted")
|
||||||
|
} else {
|
||||||
|
sender.sendMessage("The warp $loc does not exist?")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
package nl.voidcorp.teleportplugin.commands.warp
|
||||||
|
|
||||||
|
import nl.voidcorp.mainplugin.commands.VoidCommand
|
||||||
|
import nl.voidcorp.teleportplugin.models.Warp
|
||||||
|
import nl.voidcorp.teleportplugin.models.Warps
|
||||||
|
import org.bukkit.command.Command
|
||||||
|
import org.bukkit.command.CommandSender
|
||||||
|
import org.bukkit.entity.Player
|
||||||
|
import org.jetbrains.exposed.sql.transactions.transaction
|
||||||
|
|
||||||
|
class SetWarpCommand : VoidCommand() {
|
||||||
|
override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<out String>): Boolean {
|
||||||
|
if (sender is Player) {
|
||||||
|
if (!sender.hasPermission("voidteleport.setwarp")) return false
|
||||||
|
if (args.isEmpty()) {
|
||||||
|
sender.sendMessage("You need to specify a warp name!")
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
val loc = args.first()
|
||||||
|
transaction {
|
||||||
|
val warp = Warp.find {
|
||||||
|
Warps.name eq (args.firstOrNull() ?: "home")
|
||||||
|
}.any()
|
||||||
|
if (warp) {
|
||||||
|
sender.sendMessage("The warp '$loc' already exists!")
|
||||||
|
} else {
|
||||||
|
Warp.new {
|
||||||
|
location = sender.location
|
||||||
|
this.name = loc
|
||||||
|
}
|
||||||
|
sender.sendMessage("Created warp '$loc'")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
package nl.voidcorp.teleportplugin.commands
|
package nl.voidcorp.teleportplugin.commands.warp
|
||||||
|
|
||||||
import nl.voidcorp.mainplugin.commands.VoidCommand
|
import nl.voidcorp.mainplugin.commands.VoidCommand
|
||||||
|
import nl.voidcorp.teleportplugin.models.Warp
|
||||||
import nl.voidcorp.teleportplugin.models.Warps
|
import nl.voidcorp.teleportplugin.models.Warps
|
||||||
import org.bukkit.Bukkit
|
import org.bukkit.Bukkit
|
||||||
import org.bukkit.Location
|
import org.bukkit.Location
|
||||||
|
@ -19,13 +20,14 @@ class WarpCommand : VoidCommand() {
|
||||||
): List<String> {
|
): List<String> {
|
||||||
return if (sender is Player) {
|
return if (sender is Player) {
|
||||||
transaction {
|
transaction {
|
||||||
Warps.select { Warps.name like "${args.lastOrNull() ?: ""}%" }.map { it[Warps.name] }
|
Warp.find { Warps.name like "${args.lastOrNull() ?: ""}%" }.map { it.name }
|
||||||
}
|
}
|
||||||
} else mutableListOf()
|
} else mutableListOf()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<out String>): Boolean {
|
override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<out String>): Boolean {
|
||||||
return if (sender is Player) {
|
return if (sender is Player) {
|
||||||
|
if (!sender.hasPermission("voidteleport.warp")) return false
|
||||||
val where = args.firstOrNull() ?: return false
|
val where = args.firstOrNull() ?: return false
|
||||||
transaction {
|
transaction {
|
||||||
val res = Warps.select { (Warps.name eq where) }.firstOrNull()
|
val res = Warps.select { (Warps.name eq where) }.firstOrNull()
|
|
@ -0,0 +1,29 @@
|
||||||
|
package nl.voidcorp.teleportplugin.models
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit
|
||||||
|
import org.bukkit.Location
|
||||||
|
import org.jetbrains.exposed.dao.EntityID
|
||||||
|
import org.jetbrains.exposed.dao.IntEntity
|
||||||
|
import org.jetbrains.exposed.dao.IntEntityClass
|
||||||
|
|
||||||
|
class TeleportLocation(id: EntityID<Int>) : IntEntity(id) {
|
||||||
|
companion object : IntEntityClass<TeleportLocation>(TeleportLocations)
|
||||||
|
|
||||||
|
var player by TeleportLocations.player
|
||||||
|
var x by TeleportLocations.x
|
||||||
|
var y by TeleportLocations.y
|
||||||
|
var z by TeleportLocations.z
|
||||||
|
var world by TeleportLocations.world
|
||||||
|
var pitch by TeleportLocations.pitch
|
||||||
|
var yaw by TeleportLocations.yaw
|
||||||
|
var location: Location
|
||||||
|
get() = Location(Bukkit.getWorld(world), x, y, z, yaw, pitch)
|
||||||
|
set(value) {
|
||||||
|
this.x = value.x
|
||||||
|
this.y = value.y
|
||||||
|
this.z = value.z
|
||||||
|
this.world = value.world.uid
|
||||||
|
this.yaw = value.yaw
|
||||||
|
this.pitch = value.pitch
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
package nl.voidcorp.teleportplugin.models
|
||||||
|
|
||||||
|
import org.jetbrains.exposed.dao.IntIdTable
|
||||||
|
|
||||||
|
object TeleportLocations : IntIdTable() {
|
||||||
|
val player = uuid("player").uniqueIndex()
|
||||||
|
val x = double("x")
|
||||||
|
val y = double("y")
|
||||||
|
val z = double("z")
|
||||||
|
val world = uuid("world")
|
||||||
|
val pitch = float("pitch").default(0.0f)
|
||||||
|
val yaw = float("yaw").default(0.0f)
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
package nl.voidcorp.teleportplugin.models
|
||||||
|
|
||||||
|
import org.jetbrains.exposed.dao.EntityID
|
||||||
|
import org.jetbrains.exposed.dao.IntEntity
|
||||||
|
import org.jetbrains.exposed.dao.IntEntityClass
|
||||||
|
|
||||||
|
class TpRequest(id: EntityID<Int>) : IntEntity(id) {
|
||||||
|
companion object : IntEntityClass<TpRequest>(TpRequests)
|
||||||
|
|
||||||
|
var to by TpRequests.to
|
||||||
|
var from by TpRequests.from
|
||||||
|
var timeout by TpRequests.timeout
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
package nl.voidcorp.teleportplugin.models
|
||||||
|
|
||||||
|
import org.jetbrains.exposed.dao.IntIdTable
|
||||||
|
import org.joda.time.DateTime
|
||||||
|
|
||||||
|
object TpRequests : IntIdTable() {
|
||||||
|
val from = uuid("from")
|
||||||
|
val to = uuid("to").uniqueIndex()
|
||||||
|
val timeout = datetime("timeout").clientDefault { DateTime.now().plusSeconds(30) }
|
||||||
|
}
|
Loading…
Reference in a new issue