From a48cf2b0fa2ecbdc236eb56ce486f60bbd85b5dd Mon Sep 17 00:00:00 2001 From: Ziggy Date: Sat, 2 Dec 2023 10:03:39 +0100 Subject: [PATCH] Added support for the /teleport admin command to the headless SWG client, so we can move characters around for testing purposes --- .../com/projectswg/holocore/headless/admin.kt | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/projectswg/holocore/headless/admin.kt b/src/test/java/com/projectswg/holocore/headless/admin.kt index 14d090093..3a7657ebc 100644 --- a/src/test/java/com/projectswg/holocore/headless/admin.kt +++ b/src/test/java/com/projectswg/holocore/headless/admin.kt @@ -26,6 +26,10 @@ ***********************************************************************************/ package com.projectswg.holocore.headless +import com.projectswg.common.data.location.Terrain +import com.projectswg.common.network.packets.swg.zone.UpdateContainmentMessage +import com.projectswg.common.network.packets.swg.zone.UpdateTransformMessage +import com.projectswg.common.network.packets.swg.zone.UpdateTransformWithParentMessage import com.projectswg.common.network.packets.swg.zone.chat.ChatSystemMessage import com.projectswg.common.network.packets.swg.zone.deltas.DeltasMessage import com.projectswg.holocore.resources.support.objects.swg.SWGObject @@ -47,4 +51,29 @@ fun ZonedInCharacter.adminKill(target: SWGObject?) { fun ZonedInCharacter.adminGrantSkill(skill: String) { sendCommand("grantSkill", args = skill) player.waitForNextPacket(DeltasMessage::class.java, 50, TimeUnit.MILLISECONDS) ?: java.lang.IllegalStateException("No known packet received") -} \ No newline at end of file +} + +/** + * Admin command /teleport + * @param target The object to teleport. If null, the player executing the command will be teleported. + * @param planet The planet to teleport to + * @param x The x coordinate to teleport to + * @param y The y coordinate to teleport to + * @param z The z coordinate to teleport to + */ +fun ZonedInCharacter.adminTeleport(target: SWGObject? = null, planet: Terrain, x: Number, y: Number, z: Number) { + val argList = mutableListOf() + if (target != null) { + val targetFirstName = target.objectName.split(" ").first() + argList.add(targetFirstName) + } + + argList.add(planet.getName()) + argList.add(x.toInt().toString()) + argList.add(y.toInt().toString()) + argList.add(z.toInt().toString()) + + sendCommand("teleport", args = argList.joinToString(separator = " ")) + + player.waitForNextPacket(setOf(UpdateContainmentMessage::class.java, UpdateTransformMessage::class.java, UpdateTransformWithParentMessage::class.java), 50, TimeUnit.MILLISECONDS) ?: java.lang.IllegalStateException("No known packet received") +}