diff --git a/src/main/java/com/minelittlepony/client/FabMod.java b/src/main/java/com/minelittlepony/client/FabMod.java index 59c2f6a2..89b24ce7 100644 --- a/src/main/java/com/minelittlepony/client/FabMod.java +++ b/src/main/java/com/minelittlepony/client/FabMod.java @@ -3,6 +3,7 @@ package com.minelittlepony.client; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.keybinding.FabricKeyBinding; import net.fabricmc.fabric.api.client.keybinding.KeyBindingRegistry; +import net.fabricmc.fabric.api.event.client.ClientTickCallback; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.block.entity.BlockEntity; import net.minecraft.client.MinecraftClient; @@ -21,14 +22,21 @@ import com.minelittlepony.client.settings.ClientPonyConfig; import com.minelittlepony.hdskins.mixin.MixinEntityRenderDispatcher; import com.minelittlepony.settings.JsonConfig; +import javax.annotation.Nullable; + import java.nio.file.Path; import java.util.function.Function; -public class FabMod implements ClientModInitializer, IModUtilities { +public class FabMod implements ClientModInitializer, ClientTickCallback, IModUtilities { + + @Nullable + private MineLPClient mlp; + + private boolean firstTick = true; @Override public void onInitializeClient() { - MineLPClient mlp; + ClientTickCallback.EVENT.register(this); if (FabricLoader.getInstance().isModLoaded("hdskins")) { mlp = new MineLPHDSkins(this); @@ -39,6 +47,21 @@ public class FabMod implements ClientModInitializer, IModUtilities { mlp.init(JsonConfig.of(getConfigDirectory().resolve("minelp.json"), ClientPonyConfig::new)); } + @Override + public void tick(MinecraftClient client) { + if (mlp == null) { + return; + } + + if (firstTick) { + firstTick = false; + + mlp.postInit(client); + } else { + mlp.onTick(client, client.world != null && client.player != null); + } + } + @Override public KeyBinding registerKeybind(String category, int key, String bindName) { // normalize Fabric's behavior diff --git a/src/main/java/com/minelittlepony/client/mixin/MixinMinecraftClient.java b/src/main/java/com/minelittlepony/client/mixin/MixinMinecraftClient.java deleted file mode 100644 index e311c6dc..00000000 --- a/src/main/java/com/minelittlepony/client/mixin/MixinMinecraftClient.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.minelittlepony.client.mixin; - -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 com.minelittlepony.client.MineLPClient; - -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.WindowEventHandler; -import net.minecraft.util.NonBlockingThreadExecutor; -import net.minecraft.util.snooper.SnooperListener; - -@Mixin(MinecraftClient.class) -public abstract class MixinMinecraftClient extends NonBlockingThreadExecutor implements SnooperListener, WindowEventHandler, AutoCloseable { - - public MixinMinecraftClient() { super(null); } - - @Inject(method = "init()V", at = @At("RETURN")) - private void onInit(CallbackInfo info) { - MineLPClient.getInstance().postInit((MinecraftClient)(Object)this); - } - - @Inject(method = "tick()V", at = @At("RETURN")) - private void onTick(CallbackInfo info) { - MinecraftClient self = (MinecraftClient)(Object)this; - MineLPClient.getInstance().onTick(self, self.world != null && self.player != null); - } -} diff --git a/src/main/resources/minelp.mixin.json b/src/main/resources/minelp.mixin.json index e3b88d23..d44220f4 100644 --- a/src/main/resources/minelp.mixin.json +++ b/src/main/resources/minelp.mixin.json @@ -11,7 +11,6 @@ "MixinFirstPersonRenderer", "MixinGlStateManager", "MixinItemRenderer", - "MixinMinecraftClient", "MixinRenderManager", "MixinThreadDownloadImageData" ]