blob: 0a66f692ea95792abcd2ee585fe6a05213706890 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
/**
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* If it is not possible or desirable to put the notice in a particular
* file, then You may include the notice in a location (such as a LICENSE
* file in a relevant directory) where a recipient would be likely to look
* for such a notice.
*
* You may add additional accurate notices of copyright ownership.
*/
package com.dulkirfabric
import com.dulkirfabric.events.WidgetInitEvent
import meteordevelopment.orbit.EventBus
import meteordevelopment.orbit.EventHandler
import net.fabricmc.api.ModInitializer
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents
import net.minecraft.client.MinecraftClient
import net.minecraft.client.gui.screen.Screen
import org.slf4j.LoggerFactory
import java.lang.invoke.MethodHandles
object DulkirModFabric : ModInitializer {
private val logger = LoggerFactory.getLogger("dulkirmod-fabric")
@JvmField
val EVENT_BUS = EventBus()
@JvmField
val mc: MinecraftClient = MinecraftClient.getInstance()
var widgetLoadTime = 0L
var delayedScreen: Screen? = null
override fun onInitialize() {
logger.info("Initializing DulkirMod...")
EVENT_BUS.registerLambdaFactory("com.dulkirfabric") { lookupInMethod, klass ->
lookupInMethod.invoke(null, klass, MethodHandles.lookup()) as MethodHandles.Lookup
}
// Register a tick event listener to delay the screen opening
ClientTickEvents.END_CLIENT_TICK.register(ClientTickEvents.EndTick { client: MinecraftClient? ->
if (delayedScreen != null) {
MinecraftClient.getInstance().setScreen(delayedScreen)
delayedScreen = null
}
})
Registrations.registerEventListeners()
Registrations.registerCommands()
}
@EventHandler
fun onPreInit(event: WidgetInitEvent) {
if (!event.initialized) println("have not initialized widgets yet!!!!")
widgetLoadTime = System.nanoTime()
}
@EventHandler
fun onPostInit(event: WidgetInitEvent) {
val time = System.nanoTime() - widgetLoadTime
if (event.initialized) println("widgets initialized!!!!!, took: $time ns")
}
// Call this method when you want to open the new screen
fun openScreenDelayed(screen: Screen) {
delayedScreen = screen
}
}
|