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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
package com.dulkirfabric
import com.dulkirfabric.DulkirModFabric.EVENT_BUS
import com.dulkirfabric.commands.ConfigCommand
import com.dulkirfabric.commands.DynamicKeyCommand
import com.dulkirfabric.commands.JoinDungeonCommands
import com.dulkirfabric.commands.TestCommand
import com.dulkirfabric.events.*
import com.dulkirfabric.events.chat.ChatReceivedEvent
import com.dulkirfabric.events.chat.ModifyCommandEvent
import com.dulkirfabric.events.chat.OverlayReceivedEvent
import com.dulkirfabric.features.*
import com.dulkirfabric.features.chat.AbiPhoneDND
import com.dulkirfabric.util.TablistUtils
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientEntityEvents
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents
import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents
import net.fabricmc.fabric.api.client.message.v1.ClientSendMessageEvents
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents
import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents
import net.fabricmc.fabric.api.client.screen.v1.ScreenMouseEvents
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerWorldEvents
import net.fabricmc.loader.api.FabricLoader
/**
* Collection of different mod registration stuff ran on initializing the mod. It is separated for readability
* purposes, as the list of features is planned to be quite large.
*/
object Registrations {
private var tickCount: Int = 0
fun registerCommands() {
val cre = ClientCommandRegistrationCallback.EVENT
cre.register(ConfigCommand::register)
cre.register(JoinDungeonCommands.F1Command::register)
cre.register(JoinDungeonCommands.F2Command::register)
cre.register(JoinDungeonCommands.F3Command::register)
cre.register(JoinDungeonCommands.F4Command::register)
cre.register(JoinDungeonCommands.F5Command::register)
cre.register(JoinDungeonCommands.F6Command::register)
cre.register(JoinDungeonCommands.F7Command::register)
cre.register(JoinDungeonCommands.M1Command::register)
cre.register(JoinDungeonCommands.M2Command::register)
cre.register(JoinDungeonCommands.M3Command::register)
cre.register(JoinDungeonCommands.M4Command::register)
cre.register(JoinDungeonCommands.M5Command::register)
cre.register(JoinDungeonCommands.M6Command::register)
cre.register(JoinDungeonCommands.M7Command::register)
cre.register(DynamicKeyCommand::register)
if (FabricLoader.getInstance().isDevelopmentEnvironment)
cre.register(TestCommand::register)
}
fun registerEventListeners() {
EVENT_BUS.subscribe(DulkirModFabric)
EVENT_BUS.subscribe(KeyShortCutImpl)
EVENT_BUS.subscribe(RenderTest)
EVENT_BUS.subscribe(TooltipImpl)
EVENT_BUS.subscribe(CustomBlockOutline)
EVENT_BUS.subscribe(AbiPhoneDND)
EVENT_BUS.subscribe(InventoryScale)
EVENT_BUS.subscribe(IPhoneAlarm)
EVENT_BUS.subscribe(AliasImpl)
EVENT_BUS.subscribe(EffigyDisplay)
EVENT_BUS.subscribe(TablistUtils)
EVENT_BUS.subscribe(CullExplosionParticles)
EVENT_BUS.subscribe(CooldownDisplays)
}
fun registerEvents() {
// Register Custom Tick event, so we can use it like 1.8.9 forge
ClientTickEvents.START_CLIENT_TICK.register { _ ->
ClientTickEvent.post()
if (tickCount % 20 == 0) LongUpdateEvent.post()
tickCount++
}
ClientReceiveMessageEvents.ALLOW_GAME.register { message, overlay ->
if (overlay) !OverlayReceivedEvent(message.toString()).post()
else !ChatReceivedEvent(message).post()
}
ClientSendMessageEvents.MODIFY_COMMAND.register { command ->
ModifyCommandEvent(command).also { it.post() }.command
}
WorldRenderEvents.END.register { context -> WorldRenderLastEvent(context).post() }
ScreenEvents.BEFORE_INIT.register(
ScreenEvents.BeforeInit { client, screen, scaledWidth, scaledHeight ->
ScreenMouseEvents.beforeMouseScroll(screen)
.register(ScreenMouseEvents.BeforeMouseScroll { coolScreen, mouseX, mouseY, horizontalAmount, verticalAmount ->
MouseScrollEvent(coolScreen, mouseX, mouseY, horizontalAmount, verticalAmount).post()
})
}
)
WorldRenderEvents.BLOCK_OUTLINE.register { worldRenderContext, blockOutlineContext ->
!BlockOutlineEvent(worldRenderContext, blockOutlineContext).post()
}
ClientEntityEvents.ENTITY_LOAD.register { entity, world ->
EntityLoadEvent(entity, world).post()
}
ServerWorldEvents.LOAD.register { server, world ->
WorldLoadEvent(server, world).post()
}
}
}
|