11package com.mairwunnx.projectessentials.spawn
22
33import com.mairwunnx.projectessentials.core.EssBase
4+ import com.mairwunnx.projectessentials.home.HomeAPI
45import com.mairwunnx.projectessentials.permissions.permissions.PermissionsAPI
56import com.mairwunnx.projectessentials.spawn.commands.SetSpawnCommand
67import com.mairwunnx.projectessentials.spawn.commands.SpawnCommand
@@ -25,7 +26,7 @@ class EntryPoint : EssBase() {
2526
2627 init {
2728 modInstance = this
28- modVersion = " 1.14.4-1.1.2 "
29+ modVersion = " 1.14.4-1.2.0 "
2930 logBaseInfo()
3031 validateForgeVersion()
3132 MinecraftForge .EVENT_BUS .register(this )
@@ -34,14 +35,15 @@ class EntryPoint : EssBase() {
3435
3536 @SubscribeEvent(priority = EventPriority .HIGH )
3637 fun onServerStarting (event : FMLServerStartingEvent ) {
37- registerCommands(event.server.commandManager.dispatcher )
38+ registerCommands(event.commandDispatcher )
3839 processFirstSession(event)
3940 SpawnModelBase .assignSpawn(event.server)
4041 }
4142
4243 private fun processFirstSession (event : FMLServerStartingEvent ) {
4344 logger.info(" Processing first session for loaded world" )
4445 var equals = true
46+ // todo: previous todo apply for this
4547 val world = event.server.getWorld(DimensionType .OVERWORLD )
4648
4749 if (SpawnModelBase .spawnModel.xPos.toInt() != world.spawnPoint.x) {
@@ -77,12 +79,52 @@ class EntryPoint : EssBase() {
7779
7880 @SubscribeEvent(priority = EventPriority .HIGHEST )
7981 fun onPlayerRespawn (event : PlayerEvent .PlayerRespawnEvent ) {
80- if (! event.player.bedPosition.isPresent) {
81- SpawnCommand .moveToSpawn(event.player as ServerPlayerEntity )
82+ val player = event.player as ServerPlayerEntity
83+
84+ fun teleportToSpawnOrBed () {
85+ if (player.bedPosition.isPresent) {
86+ val bedPos = player.bedPosition.get()
87+ val targetWorld = player.server.getWorld(DimensionType .OVERWORLD )
88+ player.teleport(
89+ targetWorld,
90+ bedPos.x.toDouble() + 0.5 ,
91+ bedPos.y.toDouble() + 0.5 ,
92+ bedPos.z.toDouble() + 0.5 ,
93+ player.rotationYaw, player.rotationPitch
94+ )
95+ } else {
96+ SpawnCommand .moveToSpawn(player)
97+ }
8298 }
99+
100+ if (homeInstalled) {
101+ val homes = HomeAPI .takeAll(player)
102+
103+ if (homes.isNotEmpty()) {
104+ val home =
105+ homes.first() // todo configure it with core module (new api with common project settings)
106+ val targetWorld = player.server.getWorld(
107+ DimensionType .getById(home.worldId) ? : DimensionType .OVERWORLD
108+ )
109+ player.teleport(
110+ targetWorld,
111+ home.xPos.toDouble() + 0.5 ,
112+ home.yPos.toDouble() + 0.5 ,
113+ home.zPos.toDouble() + 0.5 ,
114+ home.yaw, home.pitch
115+ )
116+ } else teleportToSpawnOrBed()
117+ } else teleportToSpawnOrBed()
83118 }
84119
85120 private fun loadAdditionalModules () {
121+ try {
122+ Class .forName(" com.mairwunnx.projectessentials.home.HomeAPI" )
123+ homeInstalled = true
124+ } catch (_: ClassNotFoundException ) {
125+ // ignored
126+ }
127+
86128 try {
87129 Class .forName(cooldownAPIClassPath)
88130 cooldownsInstalled = true
@@ -102,6 +144,7 @@ class EntryPoint : EssBase() {
102144 lateinit var modInstance: EntryPoint
103145 var cooldownsInstalled: Boolean = false
104146 var permissionsInstalled: Boolean = false
147+ var homeInstalled: Boolean = false
105148
106149 fun hasPermission (player : ServerPlayerEntity , node : String , opLevel : Int = 4): Boolean =
107150 if (permissionsInstalled) {
0 commit comments