From f96e188a54a8fa0e37c6304f32481b9db2f5014e Mon Sep 17 00:00:00 2001 From: ferriarnus <61201275+ferriarnus@users.noreply.github.com> Date: Wed, 25 Dec 2024 18:51:57 +0100 Subject: [PATCH] config + mek covers --- mod/build.gradle | 9 +- .../monocle/moddedshaders/CamoShaders.java | 5 + .../monocle/moddedshaders/config/Config.java | 12 ++ .../moddedshaders/config/ConfigPlugin.java | 123 ++++++++++++++++++ .../MixinBlackboardBlockTileRenderer.java | 2 + .../mods/MixinCaxtonTextRenderLayers.java | 2 + .../mixin/mods/MixinClientEvents.java | 2 + .../mixin/mods/MixinEParticleRenderTypes.java | 2 + .../mods/MixinEssenceBlockEntityRenderer.java | 2 + .../mixin/mods/MixinFAShaders.java | 2 + .../mods/MixinGlobeBlockTileRenderer.java | 2 + .../mixin/mods/MixinGooBlockRender_Base.java | 25 +--- .../mixin/mods/MixinIEGLShaders.java | 2 + .../mixin/mods/MixinIcoSphere.java | 2 + .../mods/MixinMonitorBlockEntityRenderer.java | 2 + .../mixin/mods/MixinPortalEntityRender.java | 2 + .../mixin/mods/MixinRedThreadRenderer.java | 2 + .../mixin/mods/MixinRenderTypes.java | 2 + .../mixin/mods/MixinShaderRegistry.java | 2 + .../mixin/mods/MixinSlimedLayer.java | 2 + .../mixin/mods/MixinXYShaders.java | 2 + .../mixin/mods/MixinXynergyGraphRenderer.java | 2 + .../mixin/mods/ShaderAccessMixin.java | 2 + .../moddedshaders/mods/DireShaders.java | 34 +---- .../mods/MekanismCoversCamo.java | 17 +++ .../mixins.monocle.moddedshaders.json | 2 +- 26 files changed, 209 insertions(+), 54 deletions(-) create mode 100644 mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/config/Config.java create mode 100644 mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/config/ConfigPlugin.java create mode 100644 mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mods/MekanismCoversCamo.java diff --git a/mod/build.gradle b/mod/build.gradle index 6ab9ad0..43a7ebf 100644 --- a/mod/build.gradle +++ b/mod/build.gradle @@ -151,7 +151,8 @@ dependencies { } implementation("org.embeddedt:embeddium-1.21:${embeddium_version}") - + + compileOnly("mekanism:Mekanism:1.21.1-10.7.0.55") runtimeOnly("mekanism:Mekanism:1.21.1-10.7.0.55") runtimeOnly("curse.maven:xycraft-653786:5601037") @@ -199,6 +200,12 @@ dependencies { runtimeOnly("maven.modrinth:caxton:0.6.0-alpha.5+1.21.1-NEOFORGE") + runtimeOnly("curse.maven:industrial-foregoing-266515:5951082") + runtimeOnly("curse.maven:titanium-287342:5897690") + + compileOnly("curse.maven:mekanism-covers-1119874:5831284") + runtimeOnly("curse.maven:mekanism-covers-1119874:5831284") + upstreamTransformerImplementation("io.github.douira:glsl-transformer:2.0.1") diff --git a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/CamoShaders.java b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/CamoShaders.java index 284aa01..ba96b17 100644 --- a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/CamoShaders.java +++ b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/CamoShaders.java @@ -1,6 +1,7 @@ package dev.ferriarnus.monocle.moddedshaders; import dev.ferriarnus.monocle.moddedshaders.mods.FramedBlocksCamo; +import dev.ferriarnus.monocle.moddedshaders.mods.MekanismCoversCamo; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.BlockAndTintGetter; @@ -10,12 +11,16 @@ public class CamoShaders { private static final boolean FRAMEDBLOCKS = LoadingModList.get().getModFileById("framedblocks") != null; + private static final boolean MEK_COVERS = LoadingModList.get().getModFileById("mekanismcovers") != null; public static BlockState getBlockstate(BlockAndTintGetter slice, BlockPos pos, BlockState state) { BlockState camo = state; if (FRAMEDBLOCKS) { camo = FramedBlocksCamo.getBlockstate(slice, pos, camo); } + if (MEK_COVERS) { + camo = MekanismCoversCamo.getBlockstate(slice, pos, camo); + } return camo.getAppearance(slice, pos, Direction.UP, null, null); } diff --git a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/config/Config.java b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/config/Config.java new file mode 100644 index 0000000..b957c9e --- /dev/null +++ b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/config/Config.java @@ -0,0 +1,12 @@ +package dev.ferriarnus.monocle.moddedshaders.config; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.CLASS) +@Target(ElementType.TYPE) +public @interface Config { + String value(); +} diff --git a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/config/ConfigPlugin.java b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/config/ConfigPlugin.java new file mode 100644 index 0000000..b8fff9d --- /dev/null +++ b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/config/ConfigPlugin.java @@ -0,0 +1,123 @@ +package dev.ferriarnus.monocle.moddedshaders.config; + +import net.minecraft.client.Minecraft; +import net.neoforged.fml.loading.FMLPaths; +import org.objectweb.asm.ClassReader; +import org.objectweb.asm.Type; +import org.objectweb.asm.tree.AnnotationNode; +import org.objectweb.asm.tree.ClassNode; +import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; +import org.spongepowered.asm.mixin.extensibility.IMixinInfo; + +import java.io.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; +import java.util.Properties; +import java.util.Set; + +public class ConfigPlugin implements IMixinConfigPlugin { + + private static final String MIXINCONFIG = Type.getDescriptor(Config.class); + private static final Path CONFIG_PATH = FMLPaths.CONFIGDIR.get().resolve("monocle.properties"); + public static final String FALSE = "false"; + private static final String[] MODS = new String[]{ + "justdirethings", + "supplementaries", + "caxton", + "twilightforest", + "enchanted", + "the_bumblezone", + "forbidden_arcanus", + "xycraft", + "immersiveengineering", + "computercraft", + "creeperoverhaul", + "arsnouveau", + "mekanism" + }; + + @Override + public void onLoad(String mixinPackage) { + + } + + @Override + public String getRefMapperConfig() { + return null; + } + + @Override + public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { + try(InputStream stream = this.getClass().getClassLoader().getResourceAsStream(mixinClassName.replace('.', '/') + ".class")) { + ClassReader reader = new ClassReader(stream); + ClassNode node = new ClassNode(); + reader.accept(node, ClassReader.SKIP_CODE | ClassReader.SKIP_FRAMES | ClassReader.SKIP_DEBUG); + if (node.invisibleAnnotations == null) { + return true; + } + + Properties config = new Properties(); + if (!Files.exists(CONFIG_PATH)) { + makeConfig(); + } + config.load(Files.newBufferedReader(CONFIG_PATH)); + + for(AnnotationNode annotation : node.invisibleAnnotations) { + if (annotation.desc.equals(MIXINCONFIG)) { + for(int i = 0; i < annotation.values.size(); i += 2) { + if(annotation.values.get(i).equals("value")) { + String modId = (String) annotation.values.get(i + 1); + if(modId != null) { + if (FALSE.equals(config.getProperty("All")) && FALSE.equals(config.getProperty(modId))) { + return false; + } + } + break; + } + } + } + } + + } catch(IOException e) { + e.printStackTrace(); + } + return true; + } + + private static void makeConfig() { + try (var writer = Files.newBufferedWriter(CONFIG_PATH);){ + writer.write("# Modded Shader Config\n"); + writer.write("# ====================\n"); + writer.write("# Enable/disable all modded shader compat (true/false)\n"); + writer.write("All = true\n"); + writer.write("# ====================\n"); + writer.write("# Enable/disable for individual mods (true/false)\n"); + for (String mod : MODS) { + writer.write(mod + " = false\n"); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void acceptTargets(Set myTargets, Set otherTargets) { + + } + + @Override + public List getMixins() { + return null; + } + + @Override + public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { + + } + + @Override + public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { + + } +} diff --git a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinBlackboardBlockTileRenderer.java b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinBlackboardBlockTileRenderer.java index bdaef54..d8d3a6e 100644 --- a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinBlackboardBlockTileRenderer.java +++ b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinBlackboardBlockTileRenderer.java @@ -4,6 +4,7 @@ import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.mojang.blaze3d.shaders.Uniform; import dev.ferriarnus.monocle.moddedshaders.ModdedShaderPipeline; +import dev.ferriarnus.monocle.moddedshaders.config.Config; import dev.ferriarnus.monocle.moddedshaders.mods.SuppShaders; import net.irisshaders.iris.Iris; import net.irisshaders.iris.shadows.ShadowRenderingState; @@ -16,6 +17,7 @@ import java.util.function.Function; +@Config("supplementaries") @Mixin(targets = "net/mehvahdjukaar/supplementaries/client/renderers/tiles/BlackboardBlockTileRenderer", remap = false) public class MixinBlackboardBlockTileRenderer { diff --git a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinCaxtonTextRenderLayers.java b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinCaxtonTextRenderLayers.java index 906da3f..9be5b66 100644 --- a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinCaxtonTextRenderLayers.java +++ b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinCaxtonTextRenderLayers.java @@ -3,6 +3,7 @@ import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import dev.ferriarnus.monocle.moddedshaders.ModdedShaderPipeline; +import dev.ferriarnus.monocle.moddedshaders.config.Config; import dev.ferriarnus.monocle.moddedshaders.mods.CaxtonShaders; import net.irisshaders.iris.Iris; import net.irisshaders.iris.pipeline.WorldRenderingPhase; @@ -15,6 +16,7 @@ import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; +@Config("caxton") @Mixin(targets = "xyz/flirora/caxton/render/CaxtonTextRenderLayers$RenderLayerFunctions") public class MixinCaxtonTextRenderLayers { diff --git a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinClientEvents.java b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinClientEvents.java index f4ff8b9..06ea19b 100644 --- a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinClientEvents.java +++ b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinClientEvents.java @@ -7,6 +7,7 @@ import com.mojang.blaze3d.vertex.BufferBuilder; import com.mojang.blaze3d.vertex.BufferUploader; import dev.ferriarnus.monocle.moddedshaders.ModdedShaderPipeline; +import dev.ferriarnus.monocle.moddedshaders.config.Config; import dev.ferriarnus.monocle.moddedshaders.mods.TWFShaders; import net.irisshaders.iris.Iris; import net.irisshaders.iris.shadows.ShadowRenderingState; @@ -15,6 +16,7 @@ import org.spongepowered.asm.mixin.injection.At; import twilightforest.client.TFShaders; +@Config("twilightforest") @Mixin(targets = "twilightforest/client/event/ClientEvents", remap = false) public class MixinClientEvents { diff --git a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinEParticleRenderTypes.java b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinEParticleRenderTypes.java index fc4988b..ee4c7bb 100644 --- a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinEParticleRenderTypes.java +++ b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinEParticleRenderTypes.java @@ -2,6 +2,7 @@ import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import dev.ferriarnus.monocle.moddedshaders.config.Config; import dev.ferriarnus.monocle.moddedshaders.mods.EWShaders; import net.irisshaders.iris.Iris; import net.irisshaders.iris.shadows.ShadowRenderingState; @@ -10,6 +11,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; +@Config("enchanted") @Mixin(targets = "net/favouriteless/enchanted/client/EParticleRenderTypes", remap = false) public class MixinEParticleRenderTypes { diff --git a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinEssenceBlockEntityRenderer.java b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinEssenceBlockEntityRenderer.java index 3b436b4..2a7fdba 100644 --- a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinEssenceBlockEntityRenderer.java +++ b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinEssenceBlockEntityRenderer.java @@ -1,5 +1,6 @@ package dev.ferriarnus.monocle.moddedshaders.mixin.mods; +import dev.ferriarnus.monocle.moddedshaders.config.Config; import dev.ferriarnus.monocle.moddedshaders.mods.BumbleShaders; import net.irisshaders.iris.Iris; import net.irisshaders.iris.shadows.ShadowRenderingState; @@ -10,6 +11,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +@Config("the_bumblezone") @Mixin(targets = "com/telepathicgrunt/the_bumblezone/client/blockentityrenderer/EssenceBlockEntityRenderer", remap = false) public class MixinEssenceBlockEntityRenderer { diff --git a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinFAShaders.java b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinFAShaders.java index 1fa4585..c3058c4 100644 --- a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinFAShaders.java +++ b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinFAShaders.java @@ -1,6 +1,7 @@ package dev.ferriarnus.monocle.moddedshaders.mixin.mods; import dev.ferriarnus.monocle.moddedshaders.ModdedShaderPipeline; +import dev.ferriarnus.monocle.moddedshaders.config.Config; import dev.ferriarnus.monocle.moddedshaders.mods.FAShaders; import net.irisshaders.iris.Iris; import net.irisshaders.iris.shadows.ShadowRenderingState; @@ -11,6 +12,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +@Config("forbidden_arcanus") @Mixin(targets = "com/stal111/forbidden_arcanus/client/FAShaders") public class MixinFAShaders { diff --git a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinGlobeBlockTileRenderer.java b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinGlobeBlockTileRenderer.java index b8157b8..a4b4591 100644 --- a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinGlobeBlockTileRenderer.java +++ b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinGlobeBlockTileRenderer.java @@ -4,6 +4,7 @@ import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.mojang.blaze3d.shaders.Uniform; import dev.ferriarnus.monocle.moddedshaders.ModdedShaderPipeline; +import dev.ferriarnus.monocle.moddedshaders.config.Config; import dev.ferriarnus.monocle.moddedshaders.mods.SuppShaders; import net.irisshaders.iris.Iris; import net.irisshaders.iris.shadows.ShadowRenderingState; @@ -16,6 +17,7 @@ import java.util.function.Function; +@Config("supplementaries") @Mixin(targets = "net/mehvahdjukaar/supplementaries/client/renderers/tiles/GlobeBlockTileRenderer") public class MixinGlobeBlockTileRenderer { diff --git a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinGooBlockRender_Base.java b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinGooBlockRender_Base.java index b7fc170..3959194 100644 --- a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinGooBlockRender_Base.java +++ b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinGooBlockRender_Base.java @@ -6,6 +6,7 @@ import com.mojang.blaze3d.vertex.ByteBufferBuilder; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; +import dev.ferriarnus.monocle.moddedshaders.config.Config; import dev.ferriarnus.monocle.moddedshaders.mods.DireShaders; import net.irisshaders.iris.Iris; import net.irisshaders.iris.shadows.ShadowRenderingState; @@ -22,28 +23,12 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +@Config("justdirethings") @Mixin(targets = "com/direwolf20/justdirethings/client/blockentityrenders/baseber/GooBlockRender_Base") public class MixinGooBlockRender_Base { -// @WrapOperation(method = "renderTexturePattern", at = @At(value = "FIELD", target = "Lcom/direwolf20/justdirethings/client/renderers/OurRenderTypes;GooPattern:Lnet/minecraft/client/renderer/RenderType;")) -// public RenderType WrapBuffer(Operation original) { -// if (Iris.isPackInUseQuick() && !ShadowRenderingState.areShadowsCurrentlyBeingRendered()) { -// return DireShaders.GooPattern; -// } -// return original.call(); -// } -// -// @WrapOperation(method = "renderTexturePattern", at = @At(value = "FIELD", target = "Lcom/direwolf20/justdirethings/client/renderers/OurRenderTypes;RenderBlockBackface:Lnet/minecraft/client/renderer/RenderType;")) -// public RenderType WrapBuffer2(Operation original) { -// if (Iris.isPackInUseQuick() && !ShadowRenderingState.areShadowsCurrentlyBeingRendered()) { -// return DireShaders.RenderBlockBackface; -// } -// return original.call(); -// } - @Unique private final MultiBufferSource.BufferSource bufferSource = MultiBufferSource.immediate(new ByteBufferBuilder(786432)); - private final MultiBufferSource.BufferSource bufferSource2 = MultiBufferSource.immediate(new ByteBufferBuilder(786432)); @Inject(method = "renderTexturePattern", at = @At("HEAD")) public void head(Direction direction, Level level, BlockPos pos, PoseStack matrixStackIn, MultiBufferSource bufferIn, int combinedOverlayIn, float transparency, BlockState pattern, BlockState renderState, GooBlockBE_Base gooBlockBE_base, CallbackInfo ci) { @@ -72,7 +57,7 @@ public VertexConsumer WrapBuffer(MultiBufferSource instance, RenderType renderTy at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/MultiBufferSource;getBuffer(Lnet/minecraft/client/renderer/RenderType;)Lcom/mojang/blaze3d/vertex/VertexConsumer;", ordinal = 1)) public VertexConsumer WrapBuffer2(MultiBufferSource instance, RenderType renderType, Operation original) { if (Iris.isPackInUseQuick() && !ShadowRenderingState.areShadowsCurrentlyBeingRendered()) { - return bufferSource2.getBuffer(DireShaders.RenderBlockBackface); + return bufferSource.getBuffer(DireShaders.RenderBlockBackface); } return original.call(instance, renderType); } @@ -81,7 +66,7 @@ public VertexConsumer WrapBuffer2(MultiBufferSource instance, RenderType renderT at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/MultiBufferSource;getBuffer(Lnet/minecraft/client/renderer/RenderType;)Lcom/mojang/blaze3d/vertex/VertexConsumer;", shift = At.Shift.BEFORE, ordinal = 1)) public void injectEnd1(Direction direction, Level level, BlockPos pos, PoseStack matrixStackIn, MultiBufferSource bufferIn, int combinedOverlayIn, float transparency, BlockState pattern, BlockState renderState, GooBlockBE_Base gooBlockBE_base, CallbackInfo ci) { if (Iris.isPackInUseQuick() && !ShadowRenderingState.areShadowsCurrentlyBeingRendered()) { - bufferSource.endBatch(); + bufferSource.endBatch(DireShaders.GooPattern); } } @@ -89,7 +74,7 @@ public void injectEnd1(Direction direction, Level level, BlockPos pos, PoseStack at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/PoseStack;popPose()V", shift = At.Shift.AFTER)) public void injectEnd2(Direction direction, Level level, BlockPos pos, PoseStack matrixStackIn, MultiBufferSource bufferIn, int combinedOverlayIn, float transparency, BlockState pattern, BlockState renderState, GooBlockBE_Base gooBlockBE_base, CallbackInfo ci) { if (Iris.isPackInUseQuick() && !ShadowRenderingState.areShadowsCurrentlyBeingRendered()) { - bufferSource2.endBatch(); + bufferSource.endBatch(DireShaders.RenderBlockBackface); } } } diff --git a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinIEGLShaders.java b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinIEGLShaders.java index c637efb..a139e2a 100644 --- a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinIEGLShaders.java +++ b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinIEGLShaders.java @@ -1,6 +1,7 @@ package dev.ferriarnus.monocle.moddedshaders.mixin.mods; import dev.ferriarnus.monocle.moddedshaders.ModdedShaderPipeline; +import dev.ferriarnus.monocle.moddedshaders.config.Config; import dev.ferriarnus.monocle.moddedshaders.mods.IEShaders; import net.irisshaders.iris.Iris; import net.irisshaders.iris.shadows.ShadowRenderingState; @@ -11,6 +12,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +@Config("immersiveengineering") @Mixin(targets = "blusunrize/immersiveengineering/client/utils/IEGLShaders", remap = false) public class MixinIEGLShaders { diff --git a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinIcoSphere.java b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinIcoSphere.java index 9c94f59..26b13a2 100644 --- a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinIcoSphere.java +++ b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinIcoSphere.java @@ -3,6 +3,7 @@ import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import dev.ferriarnus.monocle.moddedshaders.ModdedShaderPipeline; +import dev.ferriarnus.monocle.moddedshaders.config.Config; import dev.ferriarnus.monocle.moddedshaders.mods.XYShaders; import net.irisshaders.iris.Iris; import net.irisshaders.iris.shadows.ShadowRenderingState; @@ -11,6 +12,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; +@Config("xycraft") @Mixin(targets = "tv/soaryn/xycraft/machines/client/render/instanced/InstancedIcosphere", remap = false) public class MixinIcoSphere { diff --git a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinMonitorBlockEntityRenderer.java b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinMonitorBlockEntityRenderer.java index 12a0485..eeea14b 100644 --- a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinMonitorBlockEntityRenderer.java +++ b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinMonitorBlockEntityRenderer.java @@ -2,6 +2,7 @@ import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import dev.ferriarnus.monocle.moddedshaders.config.Config; import dev.ferriarnus.monocle.moddedshaders.mods.CCShaders; import net.irisshaders.iris.Iris; import net.irisshaders.iris.shadows.ShadowRenderingState; @@ -10,6 +11,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; +@Config("computercraft") @Mixin(targets = "dan200/computercraft/client/render/monitor/MonitorBlockEntityRenderer") public class MixinMonitorBlockEntityRenderer { diff --git a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinPortalEntityRender.java b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinPortalEntityRender.java index 9aca12a..b472827 100644 --- a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinPortalEntityRender.java +++ b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinPortalEntityRender.java @@ -2,6 +2,7 @@ import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import dev.ferriarnus.monocle.moddedshaders.config.Config; import dev.ferriarnus.monocle.moddedshaders.mods.DireShaders; import net.irisshaders.iris.Iris; import net.irisshaders.iris.shadows.ShadowRenderingState; @@ -10,6 +11,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; +@Config("justdirethings") @Mixin(targets = "com/direwolf20/justdirethings/client/entityrenders/PortalEntityRender", remap = false) public class MixinPortalEntityRender { diff --git a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinRedThreadRenderer.java b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinRedThreadRenderer.java index 8ee1949..d0b02dd 100644 --- a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinRedThreadRenderer.java +++ b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinRedThreadRenderer.java @@ -2,6 +2,7 @@ import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import dev.ferriarnus.monocle.moddedshaders.config.Config; import dev.ferriarnus.monocle.moddedshaders.mods.TWFShaders; import net.irisshaders.iris.Iris; import net.irisshaders.iris.shadows.ShadowRenderingState; @@ -10,6 +11,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; +@Config("twilightforest") @Mixin(targets = "twilightforest/client/renderer/block/RedThreadRenderer", remap = false) public class MixinRedThreadRenderer { diff --git a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinRenderTypes.java b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinRenderTypes.java index fd85205..77dda73 100644 --- a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinRenderTypes.java +++ b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinRenderTypes.java @@ -3,6 +3,7 @@ import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import dev.ferriarnus.monocle.moddedshaders.ModdedShaderPipeline; +import dev.ferriarnus.monocle.moddedshaders.config.Config; import dev.ferriarnus.monocle.moddedshaders.mods.COShaders; import net.irisshaders.iris.Iris; import net.irisshaders.iris.shadows.ShadowRenderingState; @@ -11,6 +12,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; +@Config("creeperoverhaul") @Mixin(targets = "tech/thatgravyboat/creeperoverhaul/client/RenderTypes") public class MixinRenderTypes { diff --git a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinShaderRegistry.java b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinShaderRegistry.java index 59d8515..a8ed991 100644 --- a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinShaderRegistry.java +++ b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinShaderRegistry.java @@ -3,6 +3,7 @@ import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import dev.ferriarnus.monocle.moddedshaders.ModdedShaderPipeline; +import dev.ferriarnus.monocle.moddedshaders.config.Config; import dev.ferriarnus.monocle.moddedshaders.mods.ArsShaders; import net.irisshaders.iris.Iris; import net.irisshaders.iris.shadows.ShadowRenderingState; @@ -11,6 +12,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; +@Config("arsnouveau") @Mixin(targets = "com/hollingsworth/arsnouveau/client/registry/ShaderRegistry") public class MixinShaderRegistry { diff --git a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinSlimedLayer.java b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinSlimedLayer.java index 38708af..3df1fa1 100644 --- a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinSlimedLayer.java +++ b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinSlimedLayer.java @@ -2,6 +2,7 @@ import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import dev.ferriarnus.monocle.moddedshaders.config.Config; import dev.ferriarnus.monocle.moddedshaders.mods.SuppShaders; import net.irisshaders.iris.Iris; import net.irisshaders.iris.shadows.ShadowRenderingState; @@ -10,6 +11,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; +@Config("supplementaries") @Mixin(targets = "net/mehvahdjukaar/supplementaries/client/renderers/entities/layers/SlimedLayer", remap = false) public class MixinSlimedLayer { diff --git a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinXYShaders.java b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinXYShaders.java index 3a37bbd..565807e 100644 --- a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinXYShaders.java +++ b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinXYShaders.java @@ -1,5 +1,6 @@ package dev.ferriarnus.monocle.moddedshaders.mixin.mods; +import dev.ferriarnus.monocle.moddedshaders.config.Config; import dev.ferriarnus.monocle.moddedshaders.mods.XYShaders; import net.irisshaders.iris.Iris; import net.irisshaders.iris.shadows.ShadowRenderingState; @@ -11,6 +12,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +@Config("xycraft") @Mixin(targets = "tv/soaryn/xycraft/core/client/shader/CoreRenderTypes", remap = false) public interface MixinXYShaders { diff --git a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinXynergyGraphRenderer.java b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinXynergyGraphRenderer.java index 0c9dbf1..03c2043 100644 --- a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinXynergyGraphRenderer.java +++ b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/MixinXynergyGraphRenderer.java @@ -4,6 +4,7 @@ import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.mojang.blaze3d.shaders.Uniform; import dev.ferriarnus.monocle.moddedshaders.ModdedShaderPipeline; +import dev.ferriarnus.monocle.moddedshaders.config.Config; import dev.ferriarnus.monocle.moddedshaders.mods.XYShaders; import net.irisshaders.iris.Iris; import net.irisshaders.iris.shadows.ShadowRenderingState; @@ -12,6 +13,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; +@Config("xycraft") @Mixin(targets = "tv/soaryn/xycraft/machines/client/render/XynergyGraphRenderer", remap = false) public class MixinXynergyGraphRenderer { diff --git a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/ShaderAccessMixin.java b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/ShaderAccessMixin.java index fc0cdc0..e79f17e 100644 --- a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/ShaderAccessMixin.java +++ b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mixin/mods/ShaderAccessMixin.java @@ -1,5 +1,6 @@ package dev.ferriarnus.monocle.moddedshaders.mixin.mods; +import dev.ferriarnus.monocle.moddedshaders.config.Config; import dev.ferriarnus.monocle.moddedshaders.mods.IEShaders; import dev.ferriarnus.monocle.moddedshaders.mods.MekShaders; import dev.ferriarnus.monocle.moddedshaders.ModdedShaderPipeline; @@ -12,6 +13,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; +@Config("mekanism") @Mixin(ShaderAccess.class) public class ShaderAccessMixin { diff --git a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mods/DireShaders.java b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mods/DireShaders.java index 877967e..1ef08b6 100644 --- a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mods/DireShaders.java +++ b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mods/DireShaders.java @@ -36,40 +36,10 @@ public class DireShaders { public static final RenderType PORTAL_TYPE = getPortalType(); - public static final RenderStateShard.ShaderStateShard RENDERTYPE_TRANSLUCENT_SHADER = new RenderStateShard.ShaderStateShard( - () -> GameRenderer.rendertypeTranslucentShader) { - @Override - public void setupRenderState() { - super.setupRenderState(); - GOO_TARGET.bindWrite(true); - } - - @Override - public void clearRenderState() { - super.clearRenderState(); - Minecraft.getInstance().getMainRenderTarget().bindWrite(true); - } - }; - - public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_ALPHA_SHADER = new RenderStateShard.ShaderStateShard( - () -> GameRenderer.rendertypeEntityAlphaShader) { - @Override - public void setupRenderState() { - super.setupRenderState(); - GOO_TARGET.bindWrite(true); - } - - @Override - public void clearRenderState() { - super.clearRenderState(); - Minecraft.getInstance().getMainRenderTarget().bindWrite(true); - } - }; - public static RenderType RenderBlockBackface = RenderType.create("GadgetRenderBlockBackface", DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS, 256, false, false, RenderType.CompositeState.builder() - .setShaderState(RENDERTYPE_TRANSLUCENT_SHADER) + .setShaderState(new RenderStateShard.ShaderStateShard(() -> GameRenderer.rendertypeTranslucentShader)) .setLightmapState(RenderType.LIGHTMAP) .setTextureState(RenderType.BLOCK_SHEET) .setTransparencyState(RenderType.TRANSLUCENT_TRANSPARENCY) @@ -81,7 +51,7 @@ public void clearRenderState() { public static RenderType GooPattern = RenderType.create("GooPattern", DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS, 256, false, false, RenderType.CompositeState.builder() - .setShaderState(RENDERTYPE_ENTITY_ALPHA_SHADER) + .setShaderState(new RenderStateShard.ShaderStateShard(() -> GameRenderer.rendertypeEntityAlphaShader)) .setLightmapState(RenderType.LIGHTMAP) .setTextureState(RenderType.BLOCK_SHEET) .setCullState(RenderType.NO_CULL) diff --git a/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mods/MekanismCoversCamo.java b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mods/MekanismCoversCamo.java new file mode 100644 index 0000000..d3f581e --- /dev/null +++ b/mod/src/main/java/dev/ferriarnus/monocle/moddedshaders/mods/MekanismCoversCamo.java @@ -0,0 +1,17 @@ +package dev.ferriarnus.monocle.moddedshaders.mods; + +import dev.lucaargolo.mekanismcovers.mixed.TileEntityTransmitterMixed; +import mekanism.common.block.transmitter.BlockTransmitter; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.block.state.BlockState; + +public class MekanismCoversCamo { + + public static BlockState getBlockstate(BlockAndTintGetter slice, BlockPos pos, BlockState state) { + if (state.getBlock() instanceof BlockTransmitter && slice.getBlockEntity(pos) instanceof TileEntityTransmitterMixed transmitter) { + return transmitter.mekanism_covers$getCoverState() == null ? state : transmitter.mekanism_covers$getCoverState(); + } + return state; + } +} diff --git a/mod/src/main/resources/mixins.monocle.moddedshaders.json b/mod/src/main/resources/mixins.monocle.moddedshaders.json index 579ae72..7d61ec3 100644 --- a/mod/src/main/resources/mixins.monocle.moddedshaders.json +++ b/mod/src/main/resources/mixins.monocle.moddedshaders.json @@ -1,6 +1,6 @@ { "package": "dev.ferriarnus.monocle.moddedshaders.mixin", - "plugin": "dev.ferriarnus.monocle.core.MonocleMixinPlugin", + "plugin": "dev.ferriarnus.monocle.moddedshaders.config.ConfigPlugin", "required": true, "compatibilityLevel": "JAVA_8", "refmap": "monocle.refmap.json",