From 96258140324fd65f6d7a107e11eaa416e793493e Mon Sep 17 00:00:00 2001 From: Cloudburst Date: Mon, 24 May 2021 08:34:13 +0200 Subject: [PATCH] Added Shaders --- .../rejects/MeteorRejectsAddon.java | 1 + .../rejects/mixin/GameRendererMixin.java | 30 +++++++ .../cloudburst/rejects/modules/Shaders.java | 79 +++++++++++++++++++ src/main/resources/meteor-rejects.mixins.json | 3 +- 4 files changed, 112 insertions(+), 1 deletion(-) create mode 100644 src/main/java/cloudburst/rejects/mixin/GameRendererMixin.java create mode 100644 src/main/java/cloudburst/rejects/modules/Shaders.java diff --git a/src/main/java/cloudburst/rejects/MeteorRejectsAddon.java b/src/main/java/cloudburst/rejects/MeteorRejectsAddon.java index 2123f2b..0eaab35 100644 --- a/src/main/java/cloudburst/rejects/MeteorRejectsAddon.java +++ b/src/main/java/cloudburst/rejects/MeteorRejectsAddon.java @@ -36,6 +36,7 @@ public class MeteorRejectsAddon extends MeteorAddon { modules.add(new NewChunks()); modules.add(new ObsidianFarm()); modules.add(new RenderInvisible()); + modules.add(new Shaders()); modules.add(new SkeletonESP()); modules.add(new Sneak()); modules.add(new SoundLocator()); diff --git a/src/main/java/cloudburst/rejects/mixin/GameRendererMixin.java b/src/main/java/cloudburst/rejects/mixin/GameRendererMixin.java new file mode 100644 index 0000000..deb69c4 --- /dev/null +++ b/src/main/java/cloudburst/rejects/mixin/GameRendererMixin.java @@ -0,0 +1,30 @@ +package cloudburst.rejects.mixin; + +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.*; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gl.ShaderEffect; +import net.minecraft.client.render.GameRenderer; + +import cloudburst.rejects.modules.Shaders; +import minegame159.meteorclient.systems.modules.Modules; + +@Mixin(GameRenderer.class) +public class GameRendererMixin { + @Shadow @Final private MinecraftClient client; + + @Redirect(method = "render", at = @At(value = "FIELD", target = "Lnet/minecraft/client/render/GameRenderer;shader:Lnet/minecraft/client/gl/ShaderEffect;", ordinal = 0)) + private ShaderEffect renderShader(GameRenderer renderer, float tickDelta) { + ShaderEffect shader = Modules.get().get(Shaders.class).getShaderEffect(); + + if (shader != null) { + shader.setupDimensions(client.getWindow().getFramebufferWidth(), client.getWindow().getFramebufferHeight()); + shader.render(tickDelta); + } + + return null; + } +} diff --git a/src/main/java/cloudburst/rejects/modules/Shaders.java b/src/main/java/cloudburst/rejects/modules/Shaders.java new file mode 100644 index 0000000..158711e --- /dev/null +++ b/src/main/java/cloudburst/rejects/modules/Shaders.java @@ -0,0 +1,79 @@ +package cloudburst.rejects.modules; + +import java.io.IOException; + +import net.minecraft.client.gl.ShaderEffect; +import net.minecraft.util.Identifier; + +import cloudburst.rejects.MeteorRejectsAddon; +import minegame159.meteorclient.settings.EnumSetting; +import minegame159.meteorclient.settings.Setting; +import minegame159.meteorclient.settings.SettingGroup; +import minegame159.meteorclient.systems.modules.Module; + +public class Shaders extends Module { + + public enum Shader { + None, + Notch, + FXAA, + Art, + Bumpy, + Blobs, + Blobs2, + Pencil, + Vibrant, + Deconverge, + Flip, + Invert, + NTSC, + Outline, + Phosphor, + Scanline, + Sobel, + Bits, + Desaturate, + Green, + Blur, + Wobble, + Antialias, + Creeper, + Spider + } + + private final SettingGroup sgGeneral = settings.getDefaultGroup(); + + private ShaderEffect shader = null; + + public Shaders() { + super(MeteorRejectsAddon.CATEGORY, "shaders", "1.7 Super secret settings"); + } + + private final Setting shaderEnum = sgGeneral.add(new EnumSetting.Builder() + .name("shader") + .description("Select which shader to use") + .defaultValue(Shader.None) + .onChanged(this::onChanged) + .build() + ); + + + public void onChanged(Shader s) { + String name; + if (s == Shader.Vibrant) name = "color_convolve"; + else if (s == Shader.Scanline) name = "scan_pincushion"; + else name = s.toString().toLowerCase(); + Identifier shaderID = new Identifier(String.format("shaders/post/%s.json", name)); + try { + ShaderEffect shader = new ShaderEffect(mc.getTextureManager(), mc.getResourceManager(), mc.getFramebuffer(), shaderID); + this.shader = shader; + } catch (IOException e) { + this.shader = null; + } + } + + public ShaderEffect getShaderEffect() { + if (!this.isActive()) return null; + return shader; + } +} diff --git a/src/main/resources/meteor-rejects.mixins.json b/src/main/resources/meteor-rejects.mixins.json index 99f9840..4acb594 100644 --- a/src/main/resources/meteor-rejects.mixins.json +++ b/src/main/resources/meteor-rejects.mixins.json @@ -7,7 +7,8 @@ "client": [ "EntityMixin", "ClientWorldMixin", - "StructureVoidBlockMixin" + "StructureVoidBlockMixin", + "GameRendererMixin" ], "injectors": { "defaultRequire": 1