Replace ServerLifecycleEvents usage with mixin
This commit is contained in:
parent
82218ce18f
commit
fe818eb7e6
|
|
@ -1,7 +1,6 @@
|
||||||
package org.embeddedt.modernfix;
|
package org.embeddedt.modernfix;
|
||||||
|
|
||||||
import net.fabricmc.api.ModInitializer;
|
import net.fabricmc.api.ModInitializer;
|
||||||
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
|
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
|
||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
|
|
@ -13,16 +12,6 @@ public class ModernFixFabric implements ModInitializer {
|
||||||
public void onInitialize() {
|
public void onInitialize() {
|
||||||
commonMod = new ModernFix();
|
commonMod = new ModernFix();
|
||||||
|
|
||||||
ServerLifecycleEvents.SERVER_STARTING.register(server -> {
|
|
||||||
theServer = new WeakReference<>(server);
|
|
||||||
});
|
|
||||||
ServerLifecycleEvents.SERVER_STARTED.register(server -> {
|
|
||||||
commonMod.onServerStarted();
|
|
||||||
});
|
|
||||||
ServerLifecycleEvents.SERVER_STOPPED.register(server -> {
|
|
||||||
commonMod.onServerDead(server);
|
|
||||||
});
|
|
||||||
|
|
||||||
// TODO: implement entity ID desync
|
// TODO: implement entity ID desync
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
package org.embeddedt.modernfix.fabric.mixin.core;
|
||||||
|
|
||||||
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
import org.embeddedt.modernfix.ModernFix;
|
||||||
|
import org.embeddedt.modernfix.ModernFixFabric;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
import java.lang.ref.WeakReference;
|
||||||
|
|
||||||
|
@Mixin(MinecraftServer.class)
|
||||||
|
public class MinecraftServerMixin {
|
||||||
|
@Inject(method = "runServer", at = @At("HEAD"))
|
||||||
|
private void changeServerReference(CallbackInfo ci) {
|
||||||
|
ModernFixFabric.theServer = new WeakReference<>((MinecraftServer)(Object)this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Inject(method = "runServer", at = @At(value = "INVOKE", target = "Lnet/minecraft/Util;getMillis()J", ordinal = 0))
|
||||||
|
private void hookServerStarted(CallbackInfo ci) {
|
||||||
|
ModernFix.INSTANCE.onServerStarted();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Inject(method = "stopServer", at = @At("RETURN"))
|
||||||
|
private void hookServerShutdown(CallbackInfo ci) {
|
||||||
|
ModernFix.INSTANCE.onServerDead((MinecraftServer)(Object)this);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user