11package com.mairwunnx.projectessentials.spawn
22
33import com.mairwunnx.projectessentials.core.EssBase
4+ import com.mairwunnx.projectessentials.core.backlocation.BackLocationProvider
5+ import com.mairwunnx.projectessentials.core.configuration.localization.LocalizationConfigurationUtils
6+ import com.mairwunnx.projectessentials.core.localization.processLocalizations
7+ import com.mairwunnx.projectessentials.home.HomeAPI
48import com.mairwunnx.projectessentials.permissions.permissions.PermissionsAPI
59import com.mairwunnx.projectessentials.spawn.commands.SetSpawnCommand
610import com.mairwunnx.projectessentials.spawn.commands.SpawnCommand
@@ -25,23 +29,37 @@ class EntryPoint : EssBase() {
2529
2630 init {
2731 modInstance = this
28- modVersion = " 1.15.2-1.0 .0"
32+ modVersion = " 1.15.2-1.1 .0"
2933 logBaseInfo()
3034 validateForgeVersion()
3135 MinecraftForge .EVENT_BUS .register(this )
3236 SpawnModelBase .loadData()
37+ loadLocalization()
38+ }
39+
40+ private fun loadLocalization () {
41+ if (LocalizationConfigurationUtils .getConfig().enabled) {
42+ processLocalizations(
43+ EntryPoint ::class .java, listOf (
44+ " /assets/projectessentialsspawn/lang/de_de.json" ,
45+ " /assets/projectessentialsspawn/lang/ru_ru.json" ,
46+ " /assets/projectessentialsspawn/lang/en_us.json"
47+ )
48+ )
49+ }
3350 }
3451
3552 @SubscribeEvent(priority = EventPriority .HIGH )
3653 fun onServerStarting (event : FMLServerStartingEvent ) {
37- registerCommands(event.server.commandManager.dispatcher )
54+ registerCommands(event.commandDispatcher )
3855 processFirstSession(event)
3956 SpawnModelBase .assignSpawn(event.server)
4057 }
4158
4259 private fun processFirstSession (event : FMLServerStartingEvent ) {
4360 logger.info(" Processing first session for loaded world" )
4461 var equals = true
62+ // todo: previous todo apply for this
4563 val world = event.server.getWorld(DimensionType .OVERWORLD )
4664
4765 if (SpawnModelBase .spawnModel.xPos.toInt() != world.spawnPoint.x) {
@@ -77,12 +95,53 @@ class EntryPoint : EssBase() {
7795
7896 @SubscribeEvent(priority = EventPriority .HIGHEST )
7997 fun onPlayerRespawn (event : PlayerEvent .PlayerRespawnEvent ) {
80- if (! event.player.bedPosition.isPresent) {
81- SpawnCommand .moveToSpawn(event.player as ServerPlayerEntity )
98+ val player = event.player as ServerPlayerEntity
99+ BackLocationProvider .commit(player)
100+
101+ fun teleportToSpawnOrBed () {
102+ if (player.bedPosition.isPresent) {
103+ val bedPos = player.bedPosition.get()
104+ val targetWorld = player.server.getWorld(DimensionType .OVERWORLD )
105+ player.teleport(
106+ targetWorld,
107+ bedPos.x.toDouble() + 0.5 ,
108+ bedPos.y.toDouble() + 0.5 ,
109+ bedPos.z.toDouble() + 0.5 ,
110+ player.rotationYaw, player.rotationPitch
111+ )
112+ } else {
113+ SpawnCommand .moveToSpawn(player)
114+ }
82115 }
116+
117+ if (homeInstalled) {
118+ val homes = HomeAPI .takeAll(player)
119+
120+ if (homes.isNotEmpty()) {
121+ val home =
122+ homes.first() // todo configure it with core module (new api with common project settings)
123+ val targetWorld = player.server.getWorld(
124+ DimensionType .getById(home.worldId) ? : DimensionType .OVERWORLD
125+ )
126+ player.teleport(
127+ targetWorld,
128+ home.xPos.toDouble() + 0.5 ,
129+ home.yPos.toDouble() + 0.5 ,
130+ home.zPos.toDouble() + 0.5 ,
131+ home.yaw, home.pitch
132+ )
133+ } else teleportToSpawnOrBed()
134+ } else teleportToSpawnOrBed()
83135 }
84136
85137 private fun loadAdditionalModules () {
138+ try {
139+ Class .forName(" com.mairwunnx.projectessentials.home.HomeAPI" )
140+ homeInstalled = true
141+ } catch (_: ClassNotFoundException ) {
142+ // ignored
143+ }
144+
86145 try {
87146 Class .forName(cooldownAPIClassPath)
88147 cooldownsInstalled = true
@@ -102,6 +161,7 @@ class EntryPoint : EssBase() {
102161 lateinit var modInstance: EntryPoint
103162 var cooldownsInstalled: Boolean = false
104163 var permissionsInstalled: Boolean = false
164+ var homeInstalled: Boolean = false
105165
106166 fun hasPermission (player : ServerPlayerEntity , node : String , opLevel : Int = 4): Boolean =
107167 if (permissionsInstalled) {
0 commit comments