Skip to content

Commit bffce82

Browse files
committed
Add InitFinishedEvent
1 parent 1b2d22f commit bffce82

4 files changed

Lines changed: 55 additions & 0 deletions

File tree

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package net.modificationstation.stationapi.api.event.init;
2+
3+
import net.mine_diver.unsafeevents.Event;
4+
5+
/**
6+
* Called when minecraft has fully initialized, and is about to load into the main menu (or load the world, in the server's case.)
7+
*/
8+
public class InitFinishedEvent extends Event {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package net.modificationstation.stationapi.mixin.lifecycle.client;
2+
3+
import net.minecraft.client.Minecraft;
4+
import net.modificationstation.stationapi.api.StationAPI;
5+
import net.modificationstation.stationapi.api.event.init.InitFinishedEvent;
6+
import org.spongepowered.asm.mixin.Mixin;
7+
import org.spongepowered.asm.mixin.injection.At;
8+
import org.spongepowered.asm.mixin.injection.Inject;
9+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
10+
11+
@Mixin(value = Minecraft.class, priority = 800)
12+
public class MinecraftInitMixin {
13+
@Inject(
14+
method = "run",
15+
at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;init()V", shift = At.Shift.AFTER)
16+
)
17+
private void stationapi_endInit(CallbackInfo ci) {
18+
StationAPI.EVENT_BUS.post(new InitFinishedEvent());
19+
}
20+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package net.modificationstation.stationapi.mixin.lifecycle.server;
2+
3+
import net.minecraft.server.MinecraftServer;
4+
import net.modificationstation.stationapi.api.StationAPI;
5+
import net.modificationstation.stationapi.api.event.init.InitFinishedEvent;
6+
import org.spongepowered.asm.mixin.Mixin;
7+
import org.spongepowered.asm.mixin.injection.At;
8+
import org.spongepowered.asm.mixin.injection.Inject;
9+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
10+
11+
@Mixin(value = MinecraftServer.class, priority = 800)
12+
public class MinecraftServerInitMixin {
13+
@Inject(
14+
method = "method_2166",
15+
at = @At(
16+
value = "INVOKE",
17+
target = "Ljava/util/logging/Logger;info(Ljava/lang/String;)V",
18+
ordinal = 3,
19+
shift = At.Shift.AFTER
20+
)
21+
)
22+
private void stationapi_endInit(CallbackInfoReturnable<Boolean> cir) {
23+
StationAPI.EVENT_BUS.post(new InitFinishedEvent());
24+
}
25+
}

station-lifecycle-events-v0/src/main/resources/station-lifecycle-events-v0.mixins.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@
77
"server.ServerPlayNetworkHandlerMixin"
88
],
99
"server": [
10+
"server.MinecraftServerInitMixin",
1011
"server.MinecraftServerMixin",
1112
"server.ServerLoginNetworkHandlerMixin"
1213
],
1314
"client": [
1415
"client.ClientNetworkHandlerMixin",
1516
"client.ClientWorldMixin",
1617
"client.GameOptionsMixin",
18+
"client.MinecraftInitMixin",
1719
"client.MinecraftMixin",
1820
"client.TextureManagerMixin"
1921
],

0 commit comments

Comments
 (0)