Skip to content

Commit a91806d

Browse files
committed
forceTeleportToSpawn added in ModuleObject.kt.
Signed-off-by: Pavel Erokhin (MairwunNx) <MairwunNx@gmail.com>
1 parent 00c7d60 commit a91806d

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

src/main/kotlin/com/mairwunnx/projectessentials/spawn/ModuleObject.kt

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,35 @@ package com.mairwunnx.projectessentials.spawn
44

55
import com.mairwunnx.projectessentials.core.api.v1.IMCLocalizationMessage
66
import com.mairwunnx.projectessentials.core.api.v1.IMCProvidersMessage
7+
import com.mairwunnx.projectessentials.core.api.v1.configuration.ConfigurationAPI.getConfigurationByName
78
import com.mairwunnx.projectessentials.core.api.v1.events.ModuleEventAPI.subscribeOn
89
import com.mairwunnx.projectessentials.core.api.v1.events.forge.ForgeEventType
910
import com.mairwunnx.projectessentials.core.api.v1.events.forge.InterModEnqueueEventData
1011
import com.mairwunnx.projectessentials.core.api.v1.module.IModule
1112
import com.mairwunnx.projectessentials.spawn.commands.SetSpawnCommand
1213
import com.mairwunnx.projectessentials.spawn.commands.SpawnCommand
1314
import com.mairwunnx.projectessentials.spawn.configurations.SpawnConfiguration
15+
import net.minecraft.entity.player.ServerPlayerEntity
16+
import net.minecraft.world.dimension.DimensionType
1417
import net.minecraftforge.common.MinecraftForge.EVENT_BUS
18+
import net.minecraftforge.eventbus.api.SubscribeEvent
1519
import net.minecraftforge.fml.InterModComms
1620
import net.minecraftforge.fml.common.Mod
21+
import net.minecraftforge.fml.event.server.FMLServerStartingEvent
22+
23+
var firstLaunch = false
24+
val spawnConfiguration by lazy {
25+
getConfigurationByName<SpawnConfiguration>("spawn")
26+
}
27+
28+
fun forceTeleportToSpawn(player: ServerPlayerEntity) {
29+
val targetWorld = player.server.getWorld(
30+
DimensionType.getById(spawnConfiguration.take().dimensionId) ?: DimensionType.OVERWORLD
31+
)
32+
with(spawnConfiguration.take()) {
33+
player.teleport(targetWorld, xPos + 0.5, yPos + 0.5, zPos + 0.5, yaw, pitch)
34+
}
35+
}
1736

1837
@Mod("project_essentials_spawn")
1938
class ModuleObject : IModule {
@@ -32,6 +51,20 @@ class ModuleObject : IModule {
3251
}
3352
}
3453

54+
@SubscribeEvent
55+
fun onServerStarting(event: FMLServerStartingEvent) {
56+
firstSessionSpawnPoint(event)
57+
}
58+
59+
private fun firstSessionSpawnPoint(event: FMLServerStartingEvent) {
60+
val world = event.server.getWorld(DimensionType.OVERWORLD)
61+
if (firstLaunch) {
62+
spawnConfiguration.take().xPos = world.spawnPoint.x
63+
spawnConfiguration.take().yPos = world.spawnPoint.y
64+
spawnConfiguration.take().zPos = world.spawnPoint.z
65+
}
66+
}
67+
3568
private fun sendLocalizationRequest() {
3669
InterModComms.sendTo(
3770
"project_essentials_core",

0 commit comments

Comments
 (0)