mirror of
https://github.com/2006-Scape/apollo.git
synced 2026-07-06 00:38:18 +00:00
Let ::pos return other players positions (#422)
Rework ::pos to allow a user to return another player's position
This commit is contained in:
@@ -1,20 +1,36 @@
|
|||||||
|
|
||||||
import com.google.common.primitives.Ints
|
import com.google.common.primitives.Ints
|
||||||
import org.apollo.game.model.Position
|
import org.apollo.game.model.Position
|
||||||
|
import org.apollo.game.model.entity.Player
|
||||||
import org.apollo.game.model.entity.setting.PrivilegeLevel
|
import org.apollo.game.model.entity.setting.PrivilegeLevel
|
||||||
import org.apollo.game.plugin.api.Position.component1
|
import org.apollo.game.plugin.api.Position.component1
|
||||||
import org.apollo.game.plugin.api.Position.component2
|
import org.apollo.game.plugin.api.Position.component2
|
||||||
import org.apollo.game.plugin.api.Position.component3
|
import org.apollo.game.plugin.api.Position.component3
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends the player's position.
|
* Sends a player's position.
|
||||||
*/
|
*/
|
||||||
on_command("pos", PrivilegeLevel.MODERATOR)
|
on_command("pos", PrivilegeLevel.MODERATOR)
|
||||||
.then { player ->
|
.then { player ->
|
||||||
val (x, y, z) = player.position
|
val target: Player
|
||||||
val region = player.position.regionCoordinates
|
val name: String
|
||||||
|
|
||||||
player.sendMessage("You are at: ($x, $y, $z) in region (${region.x}, ${region.y}).")
|
if (arguments.size >= 1) {
|
||||||
|
name = arguments.joinToString(" ")
|
||||||
|
if (player.world.isPlayerOnline(name)) {
|
||||||
|
target = player.world.getPlayer(name)
|
||||||
|
} else {
|
||||||
|
player.sendMessage("$name is offline.")
|
||||||
|
return@then
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
target = player
|
||||||
|
}
|
||||||
|
|
||||||
|
val (x, y, z) = target.position
|
||||||
|
val region = target.position.regionCoordinates
|
||||||
|
|
||||||
|
player.sendMessage("${target.username} is located at ($x, $y, $z) in region (${region.x}, ${region.y}).")
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import org.apollo.game.model.entity.Player
|
|||||||
import org.apollo.game.model.entity.setting.PrivilegeLevel
|
import org.apollo.game.model.entity.setting.PrivilegeLevel
|
||||||
import org.apollo.game.plugin.testing.assertions.contains
|
import org.apollo.game.plugin.testing.assertions.contains
|
||||||
import org.apollo.game.plugin.testing.junit.ApolloTestingExtension
|
import org.apollo.game.plugin.testing.junit.ApolloTestingExtension
|
||||||
|
import org.apollo.game.plugin.testing.junit.api.annotations.Name
|
||||||
import org.apollo.game.plugin.testing.junit.api.annotations.TestMock
|
import org.apollo.game.plugin.testing.junit.api.annotations.TestMock
|
||||||
import org.junit.jupiter.api.Assertions.assertEquals
|
import org.junit.jupiter.api.Assertions.assertEquals
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
@@ -22,6 +23,10 @@ class TeleportCommandTests {
|
|||||||
@TestMock
|
@TestMock
|
||||||
lateinit var player: Player
|
lateinit var player: Player
|
||||||
|
|
||||||
|
@TestMock
|
||||||
|
@Name("player_two")
|
||||||
|
lateinit var player_two: Player
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `Teleport to given coordinates`() {
|
fun `Teleport to given coordinates`() {
|
||||||
player.privilegeLevel = PrivilegeLevel.ADMINISTRATOR
|
player.privilegeLevel = PrivilegeLevel.ADMINISTRATOR
|
||||||
@@ -50,6 +55,27 @@ class TeleportCommandTests {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `Shows another players current position information`() {
|
||||||
|
player.privilegeLevel = PrivilegeLevel.ADMINISTRATOR
|
||||||
|
player_two.position = Position(1, 2, 3)
|
||||||
|
world.commandDispatcher.dispatch(player, Command("pos", arrayOf("player_two")))
|
||||||
|
|
||||||
|
verify {
|
||||||
|
player.sendMessage(contains("1, 2, 3"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `Shows no position information for a nonexistent player`() {
|
||||||
|
player.privilegeLevel = PrivilegeLevel.ADMINISTRATOR
|
||||||
|
world.commandDispatcher.dispatch(player, Command("pos", arrayOf("player999")))
|
||||||
|
|
||||||
|
verify {
|
||||||
|
player.sendMessage(contains("offline"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ParameterizedTest(name = "::tele {0}")
|
@ParameterizedTest(name = "::tele {0}")
|
||||||
@ValueSource(strings = [
|
@ValueSource(strings = [
|
||||||
"1 2 <garbage>",
|
"1 2 <garbage>",
|
||||||
|
|||||||
Reference in New Issue
Block a user