From 5b5008e4d09495285704cd050afabd833da8fafb Mon Sep 17 00:00:00 2001 From: Cloudburst Date: Mon, 24 May 2021 09:01:46 +0200 Subject: [PATCH] Merge Shaders & RenderInvisible into Rendering --- .../rejects/MeteorRejectsAddon.java | 3 +- .../rejects/mixin/ClientWorldMixin.java | 4 +- .../mixin/Deadmau5FeatureRendererMixin.java | 19 +++ .../cloudburst/rejects/mixin/EntityMixin.java | 4 +- .../rejects/mixin/GameRendererMixin.java | 4 +- .../mixin/LivingEntityRendererMixin.java | 29 ++++ .../mixin/StructureVoidBlockMixin.java | 4 +- .../rejects/modules/RenderInvisible.java | 70 -------- .../cloudburst/rejects/modules/Rendering.java | 157 ++++++++++++++++++ .../cloudburst/rejects/modules/Shaders.java | 79 --------- src/main/resources/meteor-rejects.mixins.json | 2 + 11 files changed, 216 insertions(+), 159 deletions(-) create mode 100644 src/main/java/cloudburst/rejects/mixin/Deadmau5FeatureRendererMixin.java create mode 100644 src/main/java/cloudburst/rejects/mixin/LivingEntityRendererMixin.java delete mode 100644 src/main/java/cloudburst/rejects/modules/RenderInvisible.java create mode 100644 src/main/java/cloudburst/rejects/modules/Rendering.java delete 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 0eaab35..63d43d1 100644 --- a/src/main/java/cloudburst/rejects/MeteorRejectsAddon.java +++ b/src/main/java/cloudburst/rejects/MeteorRejectsAddon.java @@ -35,8 +35,7 @@ public class MeteorRejectsAddon extends MeteorAddon { modules.add(new Lavacast()); modules.add(new NewChunks()); modules.add(new ObsidianFarm()); - modules.add(new RenderInvisible()); - modules.add(new Shaders()); + modules.add(new Rendering()); modules.add(new SkeletonESP()); modules.add(new Sneak()); modules.add(new SoundLocator()); diff --git a/src/main/java/cloudburst/rejects/mixin/ClientWorldMixin.java b/src/main/java/cloudburst/rejects/mixin/ClientWorldMixin.java index 0c366ed..2fbda80 100644 --- a/src/main/java/cloudburst/rejects/mixin/ClientWorldMixin.java +++ b/src/main/java/cloudburst/rejects/mixin/ClientWorldMixin.java @@ -14,7 +14,7 @@ import net.minecraft.item.Items; import net.minecraft.util.math.BlockPos; import net.minecraft.world.GameMode; -import cloudburst.rejects.modules.RenderInvisible; +import cloudburst.rejects.modules.Rendering; import minegame159.meteorclient.systems.modules.Modules; @Mixin(ClientWorld.class) @@ -27,7 +27,7 @@ public abstract class ClientWorldMixin { public void doRandomBlockDisplayTicks(int xCenter, int yCenter, int i, CallbackInfo info) { Random random = new Random(); boolean showBarrierParticles = this.client.interactionManager.getCurrentGameMode() == GameMode.CREATIVE && (this.client.player.inventory.getMainHandStack().getItem() == Items.BARRIER || this.client.player.inventory.offHand.get(0).getItem() == Items.BARRIER); - if (Modules.get().get(RenderInvisible.class).renderBarriers()) showBarrierParticles = true; + if (Modules.get().get(Rendering.class).renderBarriers()) showBarrierParticles = true; BlockPos.Mutable mutable = new BlockPos.Mutable(); diff --git a/src/main/java/cloudburst/rejects/mixin/Deadmau5FeatureRendererMixin.java b/src/main/java/cloudburst/rejects/mixin/Deadmau5FeatureRendererMixin.java new file mode 100644 index 0000000..9464115 --- /dev/null +++ b/src/main/java/cloudburst/rejects/mixin/Deadmau5FeatureRendererMixin.java @@ -0,0 +1,19 @@ +package cloudburst.rejects.mixin; + +import cloudburst.rejects.modules.Rendering; +import minegame159.meteorclient.systems.modules.Modules; +import net.minecraft.client.render.entity.feature.Deadmau5FeatureRenderer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(Deadmau5FeatureRenderer.class) +public class Deadmau5FeatureRendererMixin { + @Redirect(method = "render", at = @At(value = "INVOKE", target = "Ljava/lang/String;equals(Ljava/lang/Object;)Z")) + private boolean redirectAllow(String s, Object name){ + if (Modules.get().get(Rendering.class).deadmau5EarsEnabled()) { + return true; //Allow it always + } + return name.equals(s); + } +} diff --git a/src/main/java/cloudburst/rejects/mixin/EntityMixin.java b/src/main/java/cloudburst/rejects/mixin/EntityMixin.java index 921800a..96397a8 100644 --- a/src/main/java/cloudburst/rejects/mixin/EntityMixin.java +++ b/src/main/java/cloudburst/rejects/mixin/EntityMixin.java @@ -4,7 +4,7 @@ import minegame159.meteorclient.systems.modules.Modules; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; -import cloudburst.rejects.modules.RenderInvisible; +import cloudburst.rejects.modules.Rendering; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -17,6 +17,6 @@ public abstract class EntityMixin { private void isInvisibleToCanceller(PlayerEntity player, CallbackInfoReturnable info) { if (player == null) info.setReturnValue(false); - if (Modules.get().get(RenderInvisible.class).renderEntities()) info.setReturnValue(false); + if (Modules.get().get(Rendering.class).renderEntities()) info.setReturnValue(false); } } diff --git a/src/main/java/cloudburst/rejects/mixin/GameRendererMixin.java b/src/main/java/cloudburst/rejects/mixin/GameRendererMixin.java index deb69c4..98202a7 100644 --- a/src/main/java/cloudburst/rejects/mixin/GameRendererMixin.java +++ b/src/main/java/cloudburst/rejects/mixin/GameRendererMixin.java @@ -9,7 +9,7 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.gl.ShaderEffect; import net.minecraft.client.render.GameRenderer; -import cloudburst.rejects.modules.Shaders; +import cloudburst.rejects.modules.Rendering; import minegame159.meteorclient.systems.modules.Modules; @Mixin(GameRenderer.class) @@ -18,7 +18,7 @@ public class GameRendererMixin { @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(); + ShaderEffect shader = Modules.get().get(Rendering.class).getShaderEffect(); if (shader != null) { shader.setupDimensions(client.getWindow().getFramebufferWidth(), client.getWindow().getFramebufferHeight()); diff --git a/src/main/java/cloudburst/rejects/mixin/LivingEntityRendererMixin.java b/src/main/java/cloudburst/rejects/mixin/LivingEntityRendererMixin.java new file mode 100644 index 0000000..c852ff6 --- /dev/null +++ b/src/main/java/cloudburst/rejects/mixin/LivingEntityRendererMixin.java @@ -0,0 +1,29 @@ +package cloudburst.rejects.mixin; + +import cloudburst.rejects.modules.Rendering; +import minegame159.meteorclient.systems.modules.Modules; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.render.entity.LivingEntityRenderer; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.client.util.math.Vector3f; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +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; + +@Environment(EnvType.CLIENT) +@Mixin(LivingEntityRenderer.class) +public class LivingEntityRendererMixin { + + @Inject(method = "setupTransforms", at = @At(value = "TAIL")) + private void dinnerboneEntities(LivingEntity entity, MatrixStack matrices, float _animationProgress, float _bodyYaw, float _tickDelta, CallbackInfo _info) { + if ((!(entity instanceof PlayerEntity)) && Modules.get().get(Rendering.class).dinnerboneEnabled()) { + matrices.translate(0.0D, entity.getHeight() + 0.1F, 0.0D); + matrices.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(180.0F)); + } + } + +} diff --git a/src/main/java/cloudburst/rejects/mixin/StructureVoidBlockMixin.java b/src/main/java/cloudburst/rejects/mixin/StructureVoidBlockMixin.java index 32ff4d6..8586564 100644 --- a/src/main/java/cloudburst/rejects/mixin/StructureVoidBlockMixin.java +++ b/src/main/java/cloudburst/rejects/mixin/StructureVoidBlockMixin.java @@ -7,7 +7,7 @@ import net.minecraft.block.StructureVoidBlock; import net.minecraft.util.math.Direction; import minegame159.meteorclient.systems.modules.Modules; -import cloudburst.rejects.modules.RenderInvisible; +import cloudburst.rejects.modules.Rendering; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -28,7 +28,7 @@ public abstract class StructureVoidBlockMixin extends Block { @Override public boolean isSideInvisible(BlockState state, BlockState neighbor, Direction facing) { - return !(Modules.get().get(RenderInvisible.class).renderStructureVoid()); + return !(Modules.get().get(Rendering.class).renderStructureVoid()); } } \ No newline at end of file diff --git a/src/main/java/cloudburst/rejects/modules/RenderInvisible.java b/src/main/java/cloudburst/rejects/modules/RenderInvisible.java deleted file mode 100644 index 3da50ce..0000000 --- a/src/main/java/cloudburst/rejects/modules/RenderInvisible.java +++ /dev/null @@ -1,70 +0,0 @@ -package cloudburst.rejects.modules; - -import cloudburst.rejects.MeteorRejectsAddon; -import minegame159.meteorclient.settings.BoolSetting; -import minegame159.meteorclient.settings.Setting; -import minegame159.meteorclient.settings.SettingGroup; -import minegame159.meteorclient.systems.modules.Categories; -import minegame159.meteorclient.systems.modules.Module; - -public class RenderInvisible extends Module { - - private final SettingGroup sgGeneral = settings.getDefaultGroup(); - - private final Setting entities = sgGeneral.add(new BoolSetting.Builder() - .name("entities") - .description("Render invisible entities.") - .defaultValue(true) - .build() - ); - - private final Setting barrier = sgGeneral.add(new BoolSetting.Builder() - .name("barrier") - .description("Render barrier blocks.") - .defaultValue(true) - .onChanged(onChanged -> { - if(this.isActive()) { - mc.worldRenderer.reload(); - } - }) - .build() - ); - - private final Setting structureVoid = sgGeneral.add(new BoolSetting.Builder() - .name("structure-void") - .description("Render structure void blocks.") - .defaultValue(true) - .onChanged(onChanged -> { - if(this.isActive()) { - mc.worldRenderer.reload(); - } - }) - .build() - ); - - @Override - public void onActivate() { - mc.worldRenderer.reload(); - } - - @Override - public void onDeactivate() { - mc.worldRenderer.reload(); - } - - public RenderInvisible() { - super(MeteorRejectsAddon.CATEGORY, "render-invisible", "Renders invisible entities and blocks."); - } - - public boolean renderEntities() { - return this.isActive() && entities.get(); - } - - public boolean renderBarriers() { - return this.isActive() && barrier.get(); - } - - public boolean renderStructureVoid() { - return this.isActive() && structureVoid.get(); - } -} \ No newline at end of file diff --git a/src/main/java/cloudburst/rejects/modules/Rendering.java b/src/main/java/cloudburst/rejects/modules/Rendering.java new file mode 100644 index 0000000..6e64b3e --- /dev/null +++ b/src/main/java/cloudburst/rejects/modules/Rendering.java @@ -0,0 +1,157 @@ +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.BoolSetting; +import minegame159.meteorclient.settings.Setting; +import minegame159.meteorclient.settings.SettingGroup; +import minegame159.meteorclient.systems.modules.Module; + +public class Rendering 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 sgInvisible = settings.createGroup("Invisible"); + private final SettingGroup sgFun = settings.createGroup("Fun"); + + private ShaderEffect shader = null; + + public Rendering() { + super(MeteorRejectsAddon.CATEGORY, "Rendering", "Various Render Tweaks"); + } + + private final Setting entities = sgInvisible.add(new BoolSetting.Builder() + .name("entities") + .description("Render invisible entities.") + .defaultValue(true) + .build() + ); + + private final Setting barrier = sgInvisible.add(new BoolSetting.Builder() + .name("barrier") + .description("Render barrier blocks.") + .defaultValue(true) + .onChanged(onChanged -> { + if(this.isActive()) { + mc.worldRenderer.reload(); + } + }) + .build() + ); + + private final Setting structureVoid = sgInvisible.add(new BoolSetting.Builder() + .name("structure-void") + .description("Render structure void blocks.") + .defaultValue(true) + .onChanged(onChanged -> { + if(this.isActive()) { + mc.worldRenderer.reload(); + } + }) + .build() + ); + + private final Setting shaderEnum = sgFun.add(new EnumSetting.Builder() + .name("shader") + .description("Select which shader to use") + .defaultValue(Shader.None) + .onChanged(this::onChanged) + .build() + ); + + private final Setting dinnerbone = sgFun.add(new BoolSetting.Builder() + .name("dinnerbone") + .description("Apply dinnerbone effects to all entities") + .defaultValue(false) + .build() + ); + + private final Setting deadmau5Ears = sgFun.add(new BoolSetting.Builder() + .name("deadmau5-ears") + .description("Add deadmau5 ears to all players") + .defaultValue(false) + .build() + ); + + @Override + public void onActivate() { + mc.worldRenderer.reload(); + } + + @Override + public void onDeactivate() { + mc.worldRenderer.reload(); + } + + 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 boolean renderEntities() { + return this.isActive() && entities.get(); + } + + public boolean renderBarriers() { + return this.isActive() && barrier.get(); + } + + public boolean renderStructureVoid() { + return this.isActive() && structureVoid.get(); + } + + public ShaderEffect getShaderEffect() { + if (!this.isActive()) return null; + return shader; + } + + public boolean dinnerboneEnabled() { + if (!this.isActive()) return false; + return dinnerbone.get(); + } + + public boolean deadmau5EarsEnabled() { + if (!this.isActive()) return false; + return deadmau5Ears.get(); + } +} diff --git a/src/main/java/cloudburst/rejects/modules/Shaders.java b/src/main/java/cloudburst/rejects/modules/Shaders.java deleted file mode 100644 index 158711e..0000000 --- a/src/main/java/cloudburst/rejects/modules/Shaders.java +++ /dev/null @@ -1,79 +0,0 @@ -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 4acb594..a1e7041 100644 --- a/src/main/resources/meteor-rejects.mixins.json +++ b/src/main/resources/meteor-rejects.mixins.json @@ -7,7 +7,9 @@ "client": [ "EntityMixin", "ClientWorldMixin", + "Deadmau5FeatureRendererMixin", "StructureVoidBlockMixin", + "LivingEntityRendererMixin", "GameRendererMixin" ], "injectors": {