From 397e5c7a6af79e3a8617fb4fabab1fb390f04147 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sat, 19 Feb 2022 00:43:22 +0800 Subject: [PATCH] [ci skip] Requires Fabric Loader 0.13.0 (#194) --- .../fabric/client/MixinGameRenderer.java | 10 ++- .../fabric/client/MixinGameRenderer013.java | 73 ------------------- .../fabric/ArchitecturyMixinPlugin.java | 21 +----- .../main/resources/architectury.mixins.json | 1 - fabric/src/main/resources/fabric.mod.json | 2 +- 5 files changed, 8 insertions(+), 99 deletions(-) delete mode 100644 fabric/src/main/java/dev/architectury/mixin/fabric/client/MixinGameRenderer013.java diff --git a/fabric/src/main/java/dev/architectury/mixin/fabric/client/MixinGameRenderer.java b/fabric/src/main/java/dev/architectury/mixin/fabric/client/MixinGameRenderer.java index 4926b7b0..8dab3598 100644 --- a/fabric/src/main/java/dev/architectury/mixin/fabric/client/MixinGameRenderer.java +++ b/fabric/src/main/java/dev/architectury/mixin/fabric/client/MixinGameRenderer.java @@ -19,9 +19,11 @@ package dev.architectury.mixin.fabric.client; +import com.mojang.blaze3d.platform.Window; import com.mojang.blaze3d.shaders.Program; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.datafixers.util.Pair; +import com.mojang.math.Matrix4f; import dev.architectury.event.events.client.ClientGuiEvent; import dev.architectury.event.events.client.ClientReloadShadersEvent; import net.minecraft.client.Minecraft; @@ -48,8 +50,8 @@ public abstract class MixinGameRenderer { @Inject(method = "render(FJZ)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/Screen;render(Lcom/mojang/blaze3d/vertex/PoseStack;IIF)V", ordinal = 0), locals = LocalCapture.CAPTURE_FAILEXCEPTION, cancellable = true) - public void renderScreenPre(float tickDelta, long startTime, boolean tick, CallbackInfo ci, int mouseX, int mouseY, PoseStack matrices) { - if (ClientGuiEvent.RENDER_PRE.invoker().render(minecraft.screen, matrices, mouseX, mouseY, minecraft.getDeltaFrameTime()).isFalse()) { + public void renderScreenPre(float tickDelta, long startTime, boolean tick, CallbackInfo ci, int mouseX, int mouseY, Window window, Matrix4f matrix, PoseStack matrices, PoseStack matrices2) { + if (ClientGuiEvent.RENDER_PRE.invoker().render(minecraft.screen, matrices2, mouseX, mouseY, minecraft.getDeltaFrameTime()).isFalse()) { ci.cancel(); } } @@ -57,8 +59,8 @@ public abstract class MixinGameRenderer { @Inject(method = "render(FJZ)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/Screen;render(Lcom/mojang/blaze3d/vertex/PoseStack;IIF)V", shift = At.Shift.AFTER, ordinal = 0), locals = LocalCapture.CAPTURE_FAILEXCEPTION) - public void renderScreenPost(float tickDelta, long startTime, boolean tick, CallbackInfo ci, int mouseX, int mouseY, PoseStack matrices) { - ClientGuiEvent.RENDER_POST.invoker().render(minecraft.screen, matrices, mouseX, mouseY, minecraft.getDeltaFrameTime()); + public void renderScreenPost(float tickDelta, long startTime, boolean tick, CallbackInfo ci, int mouseX, int mouseY, Window window, Matrix4f matrix, PoseStack matrices, PoseStack matrices2) { + ClientGuiEvent.RENDER_POST.invoker().render(minecraft.screen, matrices2, mouseX, mouseY, minecraft.getDeltaFrameTime()); } @Inject(method = "reloadShaders", diff --git a/fabric/src/main/java/dev/architectury/mixin/fabric/client/MixinGameRenderer013.java b/fabric/src/main/java/dev/architectury/mixin/fabric/client/MixinGameRenderer013.java deleted file mode 100644 index dde7d326..00000000 --- a/fabric/src/main/java/dev/architectury/mixin/fabric/client/MixinGameRenderer013.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of architectury. - * Copyright (C) 2020, 2021, 2022 architectury - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -package dev.architectury.mixin.fabric.client; - -import com.mojang.blaze3d.platform.Window; -import com.mojang.blaze3d.shaders.Program; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.datafixers.util.Pair; -import com.mojang.math.Matrix4f; -import dev.architectury.event.events.client.ClientGuiEvent; -import dev.architectury.event.events.client.ClientReloadShadersEvent; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.GameRenderer; -import net.minecraft.client.renderer.ShaderInstance; -import net.minecraft.server.packs.resources.ResourceManager; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.LocalCapture; - -import java.util.List; -import java.util.function.Consumer; - -@Mixin(value = GameRenderer.class, priority = 1100) -public abstract class MixinGameRenderer013 { - @Shadow - @Final - private Minecraft minecraft; - - @Inject(method = "render(FJZ)V", - at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/Screen;render(Lcom/mojang/blaze3d/vertex/PoseStack;IIF)V", - ordinal = 0), locals = LocalCapture.CAPTURE_FAILEXCEPTION, cancellable = true) - public void renderScreenPre(float tickDelta, long startTime, boolean tick, CallbackInfo ci, int mouseX, int mouseY, Window window, Matrix4f matrix, PoseStack matrices, PoseStack matrices2) { - if (ClientGuiEvent.RENDER_PRE.invoker().render(minecraft.screen, matrices2, mouseX, mouseY, minecraft.getDeltaFrameTime()).isFalse()) { - ci.cancel(); - } - } - - @Inject(method = "render(FJZ)V", - at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/Screen;render(Lcom/mojang/blaze3d/vertex/PoseStack;IIF)V", - shift = At.Shift.AFTER, ordinal = 0), locals = LocalCapture.CAPTURE_FAILEXCEPTION) - public void renderScreenPost(float tickDelta, long startTime, boolean tick, CallbackInfo ci, int mouseX, int mouseY, Window window, Matrix4f matrix, PoseStack matrices, PoseStack matrices2) { - ClientGuiEvent.RENDER_POST.invoker().render(minecraft.screen, matrices2, mouseX, mouseY, minecraft.getDeltaFrameTime()); - } - - @Inject(method = "reloadShaders", - at = @At(value = "INVOKE", target = "Ljava/util/List;add(Ljava/lang/Object;)Z", ordinal = 0), locals = LocalCapture.CAPTURE_FAILEXCEPTION) - public void reloadShaders(ResourceManager resourceManager, CallbackInfo ci, List programs, List>> shaders) { - ClientReloadShadersEvent.EVENT.invoker().reload(resourceManager, (shader, callback) -> { - shaders.add(Pair.of(shader, callback)); - }); - } -} \ No newline at end of file diff --git a/fabric/src/main/java/dev/architectury/plugin/fabric/ArchitecturyMixinPlugin.java b/fabric/src/main/java/dev/architectury/plugin/fabric/ArchitecturyMixinPlugin.java index a4bdf3d7..46e486d2 100644 --- a/fabric/src/main/java/dev/architectury/plugin/fabric/ArchitecturyMixinPlugin.java +++ b/fabric/src/main/java/dev/architectury/plugin/fabric/ArchitecturyMixinPlugin.java @@ -19,7 +19,7 @@ package dev.architectury.plugin.fabric; -import net.fabricmc.loader.api.*; +import net.fabricmc.loader.api.FabricLoader; import org.objectweb.asm.tree.ClassNode; import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; import org.spongepowered.asm.mixin.extensibility.IMixinInfo; @@ -38,29 +38,10 @@ public class ArchitecturyMixinPlugin implements IMixinConfigPlugin { return null; } - private boolean isLoader013() { - ModContainer fabricLoader = FabricLoader.getInstance().getModContainer("fabricloader") - .orElseThrow(() -> new IllegalStateException("Where is fabricloader?")); - Version version = fabricLoader.getMetadata().getVersion(); - if (version instanceof SemanticVersion) { - try { - return version.compareTo(SemanticVersion.parse("0.13-")) >= 0; - } catch (VersionParsingException e) { - throw new IllegalStateException("Failed to parse version", e); - } - } - System.err.println("FabricLoader is not a SemanticVersion, cannot determine if it is >= 0.13"); - return true; - } - @Override public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { if ("dev.architectury.mixin.fabric.client.MixinEffectInstance".equals(mixinClassName)) { return !FabricLoader.getInstance().isModLoaded("satin"); - } else if ("dev.architectury.mixin.fabric.client.MixinGameRenderer".equals(mixinClassName)) { - return !isLoader013(); - } else if ("dev.architectury.mixin.fabric.client.MixinGameRenderer013".equals(mixinClassName)) { - return isLoader013(); } return true; } diff --git a/fabric/src/main/resources/architectury.mixins.json b/fabric/src/main/resources/architectury.mixins.json index fcad6648..f036e515 100644 --- a/fabric/src/main/resources/architectury.mixins.json +++ b/fabric/src/main/resources/architectury.mixins.json @@ -10,7 +10,6 @@ "client.MixinDebugScreenOverlay", "client.MixinEffectInstance", "client.MixinGameRenderer", - "client.MixinGameRenderer013", "client.MixinIntegratedServer", "client.MixinKeyboardHandler", "client.MixinMinecraft", diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 04fb186c..875fe0ae 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -36,7 +36,7 @@ "icon": "icon.png", "depends": { "minecraft": "~1.18-", - "fabricloader": ">=0.12.0", + "fabricloader": ">=0.13.0", "fabric": ">=0.44.0" }, "custom": {