1
1
package com.mairwunnx.projectessentials.spawn
2
2
3
3
import 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
4
8
import com.mairwunnx.projectessentials.permissions.permissions.PermissionsAPI
5
9
import com.mairwunnx.projectessentials.spawn.commands.SetSpawnCommand
6
10
import com.mairwunnx.projectessentials.spawn.commands.SpawnCommand
@@ -25,23 +29,37 @@ class EntryPoint : EssBase() {
25
29
26
30
init {
27
31
modInstance = this
28
- modVersion = " 1.15.2-1.0 .0"
32
+ modVersion = " 1.15.2-1.1 .0"
29
33
logBaseInfo()
30
34
validateForgeVersion()
31
35
MinecraftForge .EVENT_BUS .register(this )
32
36
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
+ }
33
50
}
34
51
35
52
@SubscribeEvent(priority = EventPriority .HIGH )
36
53
fun onServerStarting (event : FMLServerStartingEvent ) {
37
- registerCommands(event.server.commandManager.dispatcher )
54
+ registerCommands(event.commandDispatcher )
38
55
processFirstSession(event)
39
56
SpawnModelBase .assignSpawn(event.server)
40
57
}
41
58
42
59
private fun processFirstSession (event : FMLServerStartingEvent ) {
43
60
logger.info(" Processing first session for loaded world" )
44
61
var equals = true
62
+ // todo: previous todo apply for this
45
63
val world = event.server.getWorld(DimensionType .OVERWORLD )
46
64
47
65
if (SpawnModelBase .spawnModel.xPos.toInt() != world.spawnPoint.x) {
@@ -77,12 +95,53 @@ class EntryPoint : EssBase() {
77
95
78
96
@SubscribeEvent(priority = EventPriority .HIGHEST )
79
97
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
+ }
82
115
}
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()
83
135
}
84
136
85
137
private fun loadAdditionalModules () {
138
+ try {
139
+ Class .forName(" com.mairwunnx.projectessentials.home.HomeAPI" )
140
+ homeInstalled = true
141
+ } catch (_: ClassNotFoundException ) {
142
+ // ignored
143
+ }
144
+
86
145
try {
87
146
Class .forName(cooldownAPIClassPath)
88
147
cooldownsInstalled = true
@@ -102,6 +161,7 @@ class EntryPoint : EssBase() {
102
161
lateinit var modInstance: EntryPoint
103
162
var cooldownsInstalled: Boolean = false
104
163
var permissionsInstalled: Boolean = false
164
+ var homeInstalled: Boolean = false
105
165
106
166
fun hasPermission (player : ServerPlayerEntity , node : String , opLevel : Int = 4): Boolean =
107
167
if (permissionsInstalled) {
0 commit comments