diff --git a/src/main/kotlin/me/iru/data/Session.kt b/src/main/kotlin/me/iru/data/Session.kt index 4956928..92d3e47 100644 --- a/src/main/kotlin/me/iru/data/Session.kt +++ b/src/main/kotlin/me/iru/data/Session.kt @@ -2,7 +2,7 @@ package me.iru.data import me.iru.Authy import me.iru.LoginType -import me.iru.utils.teleportToGround +import me.iru.utils.TeleportUtil import org.bukkit.entity.Player import java.lang.Long.parseLong import java.sql.Timestamp @@ -27,7 +27,7 @@ class Session { val curtime = Timestamp(System.currentTimeMillis()) val timestamp = curtime.time if((parseLong(session.toString()) + (authy.config.getInt("sessionExpiresIn") * 3600000) > timestamp) && p.address?.address?.hostAddress == authyPlayer.ip) { - teleportToGround(p) + TeleportUtil.teleportToValidPlace(p) authManager.login(p, LoginType.Session) return true } diff --git a/src/main/kotlin/me/iru/process/JoinProcess.kt b/src/main/kotlin/me/iru/process/JoinProcess.kt index 183e8bf..869969e 100644 --- a/src/main/kotlin/me/iru/process/JoinProcess.kt +++ b/src/main/kotlin/me/iru/process/JoinProcess.kt @@ -3,8 +3,8 @@ package me.iru.process import me.iru.Authy import me.iru.PrefixType import me.iru.data.migration.Migration +import me.iru.utils.TeleportUtil import me.iru.utils.hasValidName -import me.iru.utils.teleportToGround import org.bukkit.Location import org.bukkit.entity.Player import org.bukkit.potion.PotionEffect @@ -28,7 +28,7 @@ class JoinProcess(private val player: Player) { if(session.tryAutoLogin(player)) return joinTeleports() - teleportToGround(player) + TeleportUtil.teleportToValidPlace(player) // Place premium check here diff --git a/src/main/kotlin/me/iru/utils/TeleportUtil.kt b/src/main/kotlin/me/iru/utils/TeleportUtil.kt new file mode 100644 index 0000000..f3adda5 --- /dev/null +++ b/src/main/kotlin/me/iru/utils/TeleportUtil.kt @@ -0,0 +1,36 @@ +package me.iru.utils + +import me.iru.Authy +import org.bukkit.Location +import org.bukkit.block.BlockFace +import org.bukkit.entity.Player +import org.bukkit.scheduler.BukkitTask + +object TeleportUtil { + fun teleportToValidPlace(player: Player) { + teleportToGround(player) + } + + fun teleportToGround(player: Player) { + val authy = Authy.instance + + var f = false + if(player.isFlying) { + f = true + player.isFlying = false + } + + var task0 : BukkitTask? = null + var loc = player.location + task0 = authy.server.scheduler.runTaskTimer(authy, Runnable { + if(!loc.block.getRelative(BlockFace.DOWN).type.isSolid) { + loc = Location(loc.world, loc.x, loc.y - 1, loc.z) + } else { + task0!!.cancel() + player.teleport(loc) + } + }, 0L, 0L) + + if(f) player.isFlying = true + } +} \ No newline at end of file diff --git a/src/main/kotlin/me/iru/utils/teleportToGround.kt b/src/main/kotlin/me/iru/utils/teleportToGround.kt deleted file mode 100644 index 4c3c040..0000000 --- a/src/main/kotlin/me/iru/utils/teleportToGround.kt +++ /dev/null @@ -1,30 +0,0 @@ -package me.iru.utils - -import me.iru.Authy -import org.bukkit.Location -import org.bukkit.block.BlockFace -import org.bukkit.entity.Player -import org.bukkit.scheduler.BukkitTask - -fun teleportToGround(player: Player) { - val authy = Authy.instance - - var f = false - if(player.isFlying) { - f = true - player.isFlying = false - } - - var task0 : BukkitTask? = null - var loc = player.location - task0 = authy.server.scheduler.runTaskTimer(authy, Runnable { - if(loc.block.getRelative(BlockFace.DOWN).type.isAir) { - loc = Location(loc.world, loc.x, loc.y - 1, loc.z) - } else { - task0!!.cancel() - player.teleport(loc) - } - }, 0L, 0L) - - if(f) player.isFlying = true -} \ No newline at end of file