From ca8af3f754347238ae2a9ddc5e3a198bca5a8dfe Mon Sep 17 00:00:00 2001 From: Max Date: Mon, 25 Jan 2021 03:48:06 +0100 Subject: [PATCH] Fix shader effects location being hardcoded to minecraft namespace --- .../fabric/client/MixinEffectInstance.java | 38 +++++++++++++++++++ .../main/resources/architectury.mixins.json | 37 +++++++++++++++--- 2 files changed, 69 insertions(+), 6 deletions(-) create mode 100644 fabric/src/main/java/me/shedaniel/architectury/mixin/fabric/client/MixinEffectInstance.java diff --git a/fabric/src/main/java/me/shedaniel/architectury/mixin/fabric/client/MixinEffectInstance.java b/fabric/src/main/java/me/shedaniel/architectury/mixin/fabric/client/MixinEffectInstance.java new file mode 100644 index 00000000..838e8d31 --- /dev/null +++ b/fabric/src/main/java/me/shedaniel/architectury/mixin/fabric/client/MixinEffectInstance.java @@ -0,0 +1,38 @@ +package me.shedaniel.architectury.mixin.fabric.client; + +import com.mojang.blaze3d.shaders.Program; +import net.minecraft.client.renderer.EffectInstance; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.resources.ResourceManager; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Unique +@Mixin(EffectInstance.class) +public class MixinEffectInstance { + @Redirect( + method = "", + at = @At(value = "NEW", + target = "(Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation;", + ordinal = 0) + ) + private ResourceLocation mojangPls(String _0, ResourceManager rm, String str) { + return mojangPls(new ResourceLocation(str), ".json"); + } + + @Redirect( + method = "getOrCreate", + at = @At(value = "NEW", + target = "(Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation;", + ordinal = 0) + ) + private static ResourceLocation mojangPls(String _0, ResourceManager rm, Program.Type type, String str) { + return mojangPls(new ResourceLocation(str), type.getExtension()); + } + + private static ResourceLocation mojangPls(ResourceLocation rl, String ext) { + return new ResourceLocation(rl.getNamespace(), "shaders/program/" + rl.getPath() + ext); + } +} diff --git a/fabric/src/main/resources/architectury.mixins.json b/fabric/src/main/resources/architectury.mixins.json index 33df1a24..9d2fa087 100644 --- a/fabric/src/main/resources/architectury.mixins.json +++ b/fabric/src/main/resources/architectury.mixins.json @@ -4,14 +4,39 @@ "compatibilityLevel": "JAVA_8", "minVersion": "0.7.11", "client": [ - "client.MixinClientLevel", "client.MixinClientPacketListener", "client.MixinDebugScreenOverlay", "client.MixinGameRenderer", "client.MixinIntegratedServer", - "client.MixinKeyboardHandler", "client.MixinMinecraft", "client.MixinMouseHandler", "client.MixinMultiPlayerGameMode", "client.MixinScreen", - "client.MixinTextureAtlas" + "client.MixinClientLevel", + "client.MixinClientPacketListener", + "client.MixinDebugScreenOverlay", + "client.MixinGameRenderer", + "client.MixinIntegratedServer", + "client.MixinKeyboardHandler", + "client.MixinMinecraft", + "client.MixinMouseHandler", + "client.MixinMultiPlayerGameMode", + "client.MixinScreen", + "client.MixinTextureAtlas", + "client.MixinEffectInstance" ], "mixins": [ - "ExplosionPreInvoker", "LivingDeathInvoker", "MixinBlockEntityExtension", "MixinBlockItem", "MixinCommands", "MixinDedicatedServer", "MixinExplosion", - "MixinFurnaceResultSlot", "MixinItemEntity", "MixinLivingEntity", "MixinPlayer", "MixinPlayerAdvancements", "MixinPlayerList", "MixinResultSlot", - "MixinServerGamePacketListenerImpl", "MixinServerLevel", "MixinServerPlayer", "MixinServerPlayerGameMode", "PlayerAttackInvoker" + "ExplosionPreInvoker", + "LivingDeathInvoker", + "MixinBlockEntityExtension", + "MixinBlockItem", + "MixinCommands", + "MixinDedicatedServer", + "MixinExplosion", + "MixinFurnaceResultSlot", + "MixinItemEntity", + "MixinLivingEntity", + "MixinPlayer", + "MixinPlayerAdvancements", + "MixinPlayerList", + "MixinResultSlot", + "MixinServerGamePacketListenerImpl", + "MixinServerLevel", + "MixinServerPlayer", + "MixinServerPlayerGameMode", + "PlayerAttackInvoker" ], "injectors": { "defaultRequire": 1