Skip to content

Commit 391b85c

Browse files
committed
Added "/spawn reload" and "/spawn save" commands.
1 parent 53f5c57 commit 391b85c

6 files changed

Lines changed: 58 additions & 13 deletions

File tree

src/main/kotlin/com/mairwunnx/projectessentials/projectessentialsspawn/EntryPoint.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,11 @@ class EntryPoint {
6060
logger.info("$MOD_NAME starting mod loading ...")
6161
registerCommands(event.server.commandManager.dispatcher)
6262
processFirstSession(event)
63-
SpawnModelBase.assignSpawn(event)
63+
SpawnModelBase.assignSpawn(event.server)
6464
}
6565

6666
private fun processFirstSession(event: FMLServerStartingEvent) {
67+
logger.info("Processing first session for loaded world")
6768
var equals = true
6869
val world = event.server.getWorld(DimensionType.OVERWORLD)
6970

@@ -82,7 +83,6 @@ class EntryPoint {
8283
SpawnModelBase.spawnModel.yPos = world.spawnPoint.y.toDouble()
8384
SpawnModelBase.spawnModel.zPos = world.spawnPoint.z.toDouble()
8485
}
85-
// if (world.firstSession()) { get world spawn and set it in config ; return }
8686
}
8787

8888
private fun registerCommands(

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ import net.minecraft.util.math.BlockPos
1212
import org.apache.logging.log4j.LogManager
1313

1414
object SetSpawnCommand {
15-
private val aliases = arrayOf("setspawn", "esetspawn", "spawnpoint", "setworldspawn")
15+
private val aliases = arrayOf(
16+
"setspawn", "esetspawn", "spawnpoint", "setworldspawn"
17+
)
1618
private val logger = LogManager.getLogger()
1719

1820
fun register(dispatcher: CommandDispatcher<CommandSource>) {
@@ -36,7 +38,7 @@ object SetSpawnCommand {
3638
SpawnModelBase.spawnModel.yaw = player.rotationYaw
3739
SpawnModelBase.spawnModel.pitch = player.rotationPitch
3840
SpawnModelBase.spawnModel.worldId = player.serverWorld.worldType.id
39-
player.world.spawnPoint = BlockPos(player.posX, player.posY, player.posZ)
41+
player.world.spawnPoint = BlockPos(player.posX, player.posY, player.posZ)
4042
sendMsg(c.source, "spawn.set.success")
4143
logger.info("New spawn point installed by ${player.name.string} with data: ")
4244
logger.info(" - xpos: ${player.posX}")

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

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import com.mojang.brigadier.CommandDispatcher
88
import com.mojang.brigadier.builder.LiteralArgumentBuilder.literal
99
import com.mojang.brigadier.context.CommandContext
1010
import net.minecraft.command.CommandSource
11+
import net.minecraft.command.Commands
1112
import net.minecraft.entity.player.ServerPlayerEntity
1213
import net.minecraft.world.dimension.DimensionType
1314
import org.apache.logging.log4j.LogManager
@@ -22,7 +23,15 @@ object SpawnCommand {
2223
dispatcher.register(
2324
literal<CommandSource>(command).executes {
2425
return@executes execute(it)
25-
}
26+
}.then(
27+
Commands.literal("reload").executes {
28+
return@executes reload(it)
29+
}
30+
).then(
31+
Commands.literal("save").executes {
32+
return@executes save(it)
33+
}
34+
)
2635
)
2736
}
2837
}
@@ -56,4 +65,43 @@ object SpawnCommand {
5665
)
5766
player.teleport(targetWorld, xPos, yPos, zPos, yaw, pitch)
5867
}
68+
69+
private fun reload(c: CommandContext<CommandSource>): Int {
70+
if (c.isPlayerSender()) {
71+
val playerName = c.source.asPlayer().name.string
72+
if (!PermissionsAPI.hasPermission(playerName, "ess.spawn.reload")) {
73+
sendMsg(c.source, "spawn.reload.restricted")
74+
return 0
75+
}
76+
}
77+
SpawnModelBase.loadData()
78+
SpawnModelBase.assignSpawn(c.source.server)
79+
if (c.isPlayerSender()) {
80+
val playerName = c.source.asPlayer().name.string
81+
logger.info("Executed command \"/${c.input}\" from $playerName")
82+
sendMsg(c.source, "spawn.reload.success")
83+
} else {
84+
logger.info("World spawn configuration reloaded.")
85+
}
86+
return 0
87+
}
88+
89+
private fun save(c: CommandContext<CommandSource>): Int {
90+
if (c.isPlayerSender()) {
91+
val playerName = c.source.asPlayer().name.string
92+
if (!PermissionsAPI.hasPermission(playerName, "ess.spawn.reload")) {
93+
sendMsg(c.source, "spawn.reload.restricted")
94+
return 0
95+
}
96+
}
97+
SpawnModelBase.saveData()
98+
if (c.isPlayerSender()) {
99+
val playerName = c.source.asPlayer().name.string
100+
logger.info("Executed command \"/${c.input}\" from $playerName")
101+
sendMsg(c.source, "spawn.reload.success")
102+
} else {
103+
logger.info("World spawn configuration saved.")
104+
}
105+
return 0
106+
}
59107
}

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

Lines changed: 0 additions & 4 deletions
This file was deleted.

src/main/kotlin/com/mairwunnx/projectessentials/projectessentialsspawn/models/SpawnModel.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import kotlinx.serialization.Serializable
44

55
@Serializable
66
data class SpawnModel(
7-
var firstSession: Boolean = false,
87
var worldId: Int = 0,
98
var xPos: Double = 0.5,
109
var yPos: Double = 100.0,

src/main/kotlin/com/mairwunnx/projectessentials/projectessentialsspawn/models/SpawnModelBase.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ import com.mairwunnx.projectessentials.projectessentialsspawn.helpers.SPAWN_CONF
55
import kotlinx.serialization.UnstableDefault
66
import kotlinx.serialization.json.Json
77
import kotlinx.serialization.json.JsonConfiguration
8+
import net.minecraft.server.MinecraftServer
89
import net.minecraft.util.math.BlockPos
910
import net.minecraft.world.dimension.DimensionType
10-
import net.minecraftforge.fml.event.server.FMLServerStartingEvent
1111
import org.apache.logging.log4j.LogManager
1212
import java.io.File
1313

@@ -42,11 +42,11 @@ object SpawnModelBase {
4242
spawnModel = Json.parse(SpawnModel.serializer(), spawnConfigRaw)
4343
}
4444

45-
fun assignSpawn(event: FMLServerStartingEvent) {
45+
fun assignSpawn(server: MinecraftServer) {
4646
val xPos = spawnModel.xPos
4747
val yPos = spawnModel.yPos
4848
val zPos = spawnModel.zPos
49-
event.server.getWorld(DimensionType.OVERWORLD).spawnPoint = BlockPos(
49+
server.getWorld(DimensionType.OVERWORLD).spawnPoint = BlockPos(
5050
xPos, yPos, zPos
5151
)
5252
}

0 commit comments

Comments
 (0)