Skip to content

Commit 551ad5b

Browse files
committed
Added checking on command sender.
Added logging spawn and setspawn commands.
1 parent 20fda72 commit 551ad5b

4 files changed

Lines changed: 77 additions & 22 deletions

File tree

src/main/kotlin/com/mairwunnx/projectessentials/projectessentialsspawn/commands/SetSpawnCommand.kt

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.mairwunnx.projectessentials.projectessentialsspawn.commands
22

3+
import com.mairwunnx.projectessentials.projectessentialsspawn.extensions.isPlayerSender
4+
import com.mairwunnx.projectessentials.projectessentialsspawn.extensions.sendMsg
35
import com.mairwunnx.projectessentials.projectessentialsspawn.models.SpawnModelBase
46
import com.mairwunnx.projectessentialspermissions.permissions.PermissionsAPI
57
import com.mojang.brigadier.CommandDispatcher
@@ -13,6 +15,7 @@ object SetSpawnCommand {
1315
private val logger = LogManager.getLogger()
1416

1517
fun register(dispatcher: CommandDispatcher<CommandSource>) {
18+
logger.info(" - register \"/setspawn\" command ...")
1619
aliases.forEach { command ->
1720
dispatcher.register(
1821
LiteralArgumentBuilder.literal<CommandSource>(command).executes {
@@ -23,15 +26,29 @@ object SetSpawnCommand {
2326
}
2427

2528
private fun execute(c: CommandContext<CommandSource>): Int {
26-
// if source is server return
27-
val player = c.source.asPlayer()
28-
if (PermissionsAPI.hasPermission(player.name.string, "ess.spawn.set")) {
29-
SpawnModelBase.spawnModel.xPos = player.posX
30-
SpawnModelBase.spawnModel.yPos = player.posY
31-
SpawnModelBase.spawnModel.zPos = player.posZ
32-
SpawnModelBase.spawnModel.yaw = player.rotationYaw
33-
SpawnModelBase.spawnModel.pitch = player.rotationPitch
34-
SpawnModelBase.spawnModel.worldId = player.serverWorld.worldType.id
29+
if (c.isPlayerSender()) {
30+
val player = c.source.asPlayer()
31+
if (PermissionsAPI.hasPermission(player.name.string, "ess.spawn.set")) {
32+
SpawnModelBase.spawnModel.xPos = player.posX
33+
SpawnModelBase.spawnModel.yPos = player.posY
34+
SpawnModelBase.spawnModel.zPos = player.posZ
35+
SpawnModelBase.spawnModel.yaw = player.rotationYaw
36+
SpawnModelBase.spawnModel.pitch = player.rotationPitch
37+
SpawnModelBase.spawnModel.worldId = player.serverWorld.worldType.id
38+
sendMsg(c.source, "spawn.set.success")
39+
logger.info("New spawn point installed by ${player.name.string} with data: ")
40+
logger.info(" - xpos: ${player.posX}")
41+
logger.info(" - ypos: ${player.posY}")
42+
logger.info(" - zpos: ${player.posZ}")
43+
logger.info(" - yaw: ${player.rotationYaw}")
44+
logger.info(" - pitch: ${player.rotationPitch}")
45+
logger.info("Executed command \"/${c.input}\" from ${player.name.string}")
46+
} else {
47+
sendMsg(c.source, "spawn.set.restricted")
48+
}
49+
} else {
50+
// todo: use ModErrorHelper
51+
logger.info("Server failed to executing \"${c.input}\" command")
3552
}
3653
return 0
3754
}

src/main/kotlin/com/mairwunnx/projectessentials/projectessentialsspawn/commands/SpawnCommand.kt

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.mairwunnx.projectessentials.projectessentialsspawn.commands
22

3+
import com.mairwunnx.projectessentials.projectessentialsspawn.extensions.isPlayerSender
4+
import com.mairwunnx.projectessentials.projectessentialsspawn.extensions.sendMsg
35
import com.mairwunnx.projectessentials.projectessentialsspawn.models.SpawnModelBase
46
import com.mairwunnx.projectessentialspermissions.permissions.PermissionsAPI
57
import com.mojang.brigadier.CommandDispatcher
@@ -14,6 +16,7 @@ object SpawnCommand {
1416
private val logger = LogManager.getLogger()
1517

1618
fun register(dispatcher: CommandDispatcher<CommandSource>) {
19+
logger.info(" - register \"/spawn\" command ...")
1720
aliases.forEach { command ->
1821
dispatcher.register(
1922
literal<CommandSource>(command).executes {
@@ -24,19 +27,27 @@ object SpawnCommand {
2427
}
2528

2629
private fun execute(c: CommandContext<CommandSource>): Int {
27-
// if not player sender return
28-
val playerName = c.source.asPlayer().name.string
29-
if (PermissionsAPI.hasPermission(playerName, "ess.spawn")) {
30-
val xPos = SpawnModelBase.spawnModel.xPos
31-
val yPos = SpawnModelBase.spawnModel.yPos
32-
val zPos = SpawnModelBase.spawnModel.zPos
33-
val yaw = SpawnModelBase.spawnModel.yaw
34-
val pitch = SpawnModelBase.spawnModel.pitch
35-
val dimId = SpawnModelBase.spawnModel.worldId
36-
val targetWorld = c.source.server.getWorld(
37-
DimensionType.getById(dimId) ?: DimensionType.OVERWORLD
38-
)
39-
c.source.asPlayer().teleport(targetWorld, xPos, yPos, zPos, yaw, pitch)
30+
if (c.isPlayerSender()) {
31+
val playerName = c.source.asPlayer().name.string
32+
if (PermissionsAPI.hasPermission(playerName, "ess.spawn")) {
33+
val xPos = SpawnModelBase.spawnModel.xPos
34+
val yPos = SpawnModelBase.spawnModel.yPos
35+
val zPos = SpawnModelBase.spawnModel.zPos
36+
val yaw = SpawnModelBase.spawnModel.yaw
37+
val pitch = SpawnModelBase.spawnModel.pitch
38+
val dimId = SpawnModelBase.spawnModel.worldId
39+
val targetWorld = c.source.server.getWorld(
40+
DimensionType.getById(dimId) ?: DimensionType.OVERWORLD
41+
)
42+
c.source.asPlayer().teleport(targetWorld, xPos, yPos, zPos, yaw, pitch)
43+
logger.info("Executed command \"/${c.input}\" from $playerName")
44+
sendMsg(c.source, "spawn.success")
45+
} else {
46+
sendMsg(c.source, "spawn.restricted")
47+
}
48+
} else {
49+
// todo: use ModErrorHelper
50+
logger.info("Server failed to executing \"${c.input}\" command")
4051
}
4152
return 0
4253
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.mairwunnx.projectessentials.projectessentialsspawn.extensions
2+
3+
import com.mojang.brigadier.context.CommandContext
4+
import net.minecraft.command.CommandSource
5+
import net.minecraft.entity.player.ServerPlayerEntity
6+
7+
/**
8+
* Return true if command sender is player.
9+
*/
10+
fun CommandContext<CommandSource>.isPlayerSender(): Boolean =
11+
this.source.entity is ServerPlayerEntity
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.mairwunnx.projectessentials.projectessentialsspawn.extensions
2+
3+
import net.minecraft.command.CommandSource
4+
import net.minecraft.util.text.TranslationTextComponent
5+
6+
fun sendMsg(
7+
commandSource: CommandSource,
8+
l10nString: String,
9+
vararg args: String
10+
) {
11+
commandSource.sendFeedback(
12+
TranslationTextComponent(
13+
"project_essentials_spawn.$l10nString", *args
14+
), false
15+
)
16+
}

0 commit comments

Comments
 (0)