Skip to content

Commit fe818eb

Browse files
committed
Replace ServerLifecycleEvents usage with mixin
1 parent 82218ce commit fe818eb

File tree

2 files changed

+29
-11
lines changed

2 files changed

+29
-11
lines changed

fabric/src/main/java/org/embeddedt/modernfix/ModernFixFabric.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package org.embeddedt.modernfix;
22

33
import net.fabricmc.api.ModInitializer;
4-
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
54
import net.minecraft.server.MinecraftServer;
65

76
import java.lang.ref.WeakReference;
@@ -13,16 +12,6 @@ public class ModernFixFabric implements ModInitializer {
1312
public void onInitialize() {
1413
commonMod = new ModernFix();
1514

16-
ServerLifecycleEvents.SERVER_STARTING.register(server -> {
17-
theServer = new WeakReference<>(server);
18-
});
19-
ServerLifecycleEvents.SERVER_STARTED.register(server -> {
20-
commonMod.onServerStarted();
21-
});
22-
ServerLifecycleEvents.SERVER_STOPPED.register(server -> {
23-
commonMod.onServerDead(server);
24-
});
25-
2615
// TODO: implement entity ID desync
2716
}
2817

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package org.embeddedt.modernfix.fabric.mixin.core;
2+
3+
import net.minecraft.server.MinecraftServer;
4+
import org.embeddedt.modernfix.ModernFix;
5+
import org.embeddedt.modernfix.ModernFixFabric;
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+
import java.lang.ref.WeakReference;
12+
13+
@Mixin(MinecraftServer.class)
14+
public class MinecraftServerMixin {
15+
@Inject(method = "runServer", at = @At("HEAD"))
16+
private void changeServerReference(CallbackInfo ci) {
17+
ModernFixFabric.theServer = new WeakReference<>((MinecraftServer)(Object)this);
18+
}
19+
20+
@Inject(method = "runServer", at = @At(value = "INVOKE", target = "Lnet/minecraft/Util;getMillis()J", ordinal = 0))
21+
private void hookServerStarted(CallbackInfo ci) {
22+
ModernFix.INSTANCE.onServerStarted();
23+
}
24+
25+
@Inject(method = "stopServer", at = @At("RETURN"))
26+
private void hookServerShutdown(CallbackInfo ci) {
27+
ModernFix.INSTANCE.onServerDead((MinecraftServer)(Object)this);
28+
}
29+
}

0 commit comments

Comments
 (0)