diff options
Diffstat (limited to 'src/main/java/net/justlearning/arslaan3102/arslaansmagichax')
11 files changed, 184 insertions, 54 deletions
diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/ArslaansMagicHaxClient.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/ArslaansMagicHaxClient.java index c6a0f91..274ca76 100644 --- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/ArslaansMagicHaxClient.java +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/ArslaansMagicHaxClient.java @@ -26,6 +26,7 @@ public class ArslaansMagicHaxClient implements ClientModInitializer { public static Jetpack jetpack = new Jetpack(); public static GravityModifier gravityModifier = new GravityModifier(); public static Xray xray = new Xray(); + public static HideModulesHUD hideModulesHUD = new HideModulesHUD(); @Override public void onInitializeClient() { @@ -53,6 +54,7 @@ public class ArslaansMagicHaxClient implements ClientModInitializer { ModuleManager.INSTANCE.register(jetpack); ModuleManager.INSTANCE.register(gravityModifier); ModuleManager.INSTANCE.register(xray); + ModuleManager.INSTANCE.register(hideModulesHUD); ModuleManager.INSTANCE.registerHUD(); diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/events/PacketEvent.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/events/PacketEvent.java index 654d2d8..7250fdc 100644 --- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/events/PacketEvent.java +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/events/PacketEvent.java @@ -15,4 +15,15 @@ public final class PacketEvent { public void setCancelled(boolean c) { cancelled = c; } public boolean isCancelled() { return cancelled; } } + + public static final class Receive { + private final Packet<?> packet; + private boolean cancelled; + + public Receive(Packet<?> packet) { this.packet = packet; } + + public Packet<?> packet() { return packet; } + public void setCancelled(boolean c) { cancelled = c; } + public boolean isCancelled() { return cancelled; } + } }
\ No newline at end of file diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/events/ReceivePacketEventBus.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/events/ReceivePacketEventBus.java new file mode 100644 index 0000000..5aa340b --- /dev/null +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/events/ReceivePacketEventBus.java @@ -0,0 +1,18 @@ +package net.justlearning.arslaan3102.arslaansmagichax.events; + +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.function.Consumer; + +public class ReceivePacketEventBus { + private static final List<Consumer<PacketEvent.Receive>> listeners = new CopyOnWriteArrayList<>(); + + public static void register(Consumer<PacketEvent.Receive> listener) { + listeners.add(listener); + } + + public static void post(PacketEvent.Receive ev) { + for (Consumer<PacketEvent.Receive> l : listeners) l.accept(ev); + } +} + diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/AbstractBlockMixin.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/AbstractBlockMixin.java new file mode 100644 index 0000000..c4da479 --- /dev/null +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/AbstractBlockMixin.java @@ -0,0 +1,33 @@ +package net.justlearning.arslaan3102.arslaansmagichax.mixin; + +import net.justlearning.arslaan3102.arslaansmagichax.ArslaansMagicHaxClient; +import net.minecraft.block.AbstractBlock; +import net.minecraft.block.BlockState; +import net.minecraft.client.MinecraftClient; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.BlockView; +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.CallbackInfoReturnable; + +import java.util.Objects; + +@Mixin(AbstractBlock.class) +public class AbstractBlockMixin { + private static MinecraftClient mc = MinecraftClient.getInstance(); + + @Inject(method = "getAmbientOcclusionLightLevel", at = @At("HEAD"), cancellable = true) + private void onGetAmbientOcclusionLightLevel(BlockState state, BlockView world, BlockPos pos, CallbackInfoReturnable<Float> cir) { + if (mc == null) mc = MinecraftClient.getInstance(); // just in case :) + if (mc != null) { + if (mc.world != null && (ArslaansMagicHaxClient.fullbright.isEnabled())) { + if (Objects.equals(ArslaansMagicHaxClient.fullbright.mode.getMode(), "Break AO Renderer")) { + cir.setReturnValue(15.0F); // over the limit of 1.0F, breaks the ambient occlusion renderer and messes everything up :) yay + } else { + cir.setReturnValue(1.0F); + } + } + } + } +} diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/AbstractBlockStateMixin.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/AbstractBlockStateMixin.java index dfb6c7d..9595227 100644 --- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/AbstractBlockStateMixin.java +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/AbstractBlockStateMixin.java @@ -1,8 +1,14 @@ +/* +THIS FILE EXISTS AS AN ARCHIVE!!!! +Injecting into getLuminance causes TONS of weird crashes and issues related to world rendering +New logic is implemented in AbstractBlockMixin.java + */ package net.justlearning.arslaan3102.arslaansmagichax.mixin; import net.justlearning.arslaan3102.arslaansmagichax.ArslaansMagicHaxClient; import net.minecraft.block.AbstractBlock.AbstractBlockState; import net.minecraft.block.BlockState; +import net.minecraft.client.MinecraftClient; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -10,12 +16,13 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(AbstractBlockState.class) public class AbstractBlockStateMixin { + private static MinecraftClient mc = MinecraftClient.getInstance(); @Inject(method = "getLuminance", at = @At("HEAD"), cancellable = true) private void onGetLuminance(CallbackInfoReturnable<Integer> cir) { AbstractBlockState state = (AbstractBlockState)(Object)this; - if ((ArslaansMagicHaxClient.xray.isEnabled() && ArslaansMagicHaxClient.xray.isInterestingBlock((BlockState) state)) || ArslaansMagicHaxClient.fullbright.isEnabled()) { + if (mc.world != null && (ArslaansMagicHaxClient.xray.isEnabled() && ArslaansMagicHaxClient.xray.isInterestingBlock((BlockState) state) || ArslaansMagicHaxClient.fullbright.isEnabled())) { cir.setReturnValue(15); } } diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/ClientConnectionMixin.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/ClientConnectionMixin.java new file mode 100644 index 0000000..549076c --- /dev/null +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/ClientConnectionMixin.java @@ -0,0 +1,36 @@ +package net.justlearning.arslaan3102.arslaansmagichax.mixin; + +import io.netty.channel.ChannelHandlerContext; +import net.justlearning.arslaan3102.arslaansmagichax.events.PacketEvent; +import net.justlearning.arslaan3102.arslaansmagichax.events.ReceivePacketEventBus; +import net.minecraft.network.ClientConnection; +import net.minecraft.network.listener.ClientPlayPacketListener; +import net.minecraft.network.packet.Packet; +import net.minecraft.network.packet.s2c.play.BundleS2CPacket; +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; + +import java.util.Iterator; + +@Mixin(ClientConnection.class) +public class ClientConnectionMixin { + @Inject(method = "channelRead0(Lio/netty/channel/ChannelHandlerContext;Lnet/minecraft/network/packet/Packet;)V", + at = @At(value = "INVOKE", target = "Lnet/minecraft/network/ClientConnection;handlePacket(Lnet/minecraft/network/packet/Packet;Lnet/minecraft/network/listener/PacketListener;)V", shift = At.Shift.BEFORE), cancellable = true) + private void onHandlePacket(ChannelHandlerContext channelHandlerContext, Packet<?> packet, CallbackInfo ci) { + if (packet instanceof BundleS2CPacket bundle) { + for (Iterator<Packet<? super ClientPlayPacketListener>> it = bundle.getPackets().iterator(); it.hasNext(); ) { + Packet<? super ClientPlayPacketListener> innerPacket = it.next(); + PacketEvent.Receive ev = new PacketEvent.Receive(innerPacket); + ReceivePacketEventBus.post(ev); + if (ev.isCancelled()) it.remove(); + } + } else { + PacketEvent.Receive ev = new PacketEvent.Receive(packet); + ReceivePacketEventBus.post(ev); + if (ev.isCancelled()) ci.cancel(); + } + } +} + diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/ModuleManager.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/ModuleManager.java index 80176e0..c555fa7 100644 --- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/ModuleManager.java +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/ModuleManager.java @@ -2,6 +2,7 @@ package net.justlearning.arslaan3102.arslaansmagichax.modules; import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; import net.justlearning.arslaan3102.arslaansmagichax.ArslaansMagicHax; +import net.justlearning.arslaan3102.arslaansmagichax.ArslaansMagicHaxClient; import net.justlearning.arslaan3102.arslaansmagichax.modules.settings.Setting; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; @@ -84,21 +85,23 @@ public class ModuleManager { } private void onRenderHud(DrawContext drawContext, RenderTickCounter renderTickCounter) { - TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; - float alpha = 1.0F; - int i = MathHelper.ceil(alpha * 255.0F) << 24; // I don't know what this dark magic is but it works - int x = 5; - int y = 5; - - int titleColor = 16568909 | i; // weird magic - - drawContext.drawTextWithBackground(textRenderer, Text.literal("Arslaan's Magic Hax"), x, y, 50, titleColor); - y += textRenderer.fontHeight + 4; - - for (Module module : ModuleManager.getEnabledModules()) { - int color = 16777215 | i; // more magic I don't understand - drawContext.drawTextWithShadow(textRenderer, Text.literal(module.getName()), x, y, color); - y += textRenderer.fontHeight + 2; + if (!ArslaansMagicHaxClient.hideModulesHUD.isEnabled()) { + TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; + float alpha = 1.0F; + int i = MathHelper.ceil(alpha * 255.0F) << 24; // I don't know what this dark magic is but it works + int x = 5; + int y = 5; + + int titleColor = 16568909 | i; // weird magic + + drawContext.drawTextWithBackground(textRenderer, Text.literal("Arslaan's Magic Hax"), x, y, 50, titleColor); + y += textRenderer.fontHeight + 4; + + for (Module module : ModuleManager.getEnabledModules()) { + int color = 16777215 | i; // more magic I don't understand + drawContext.drawTextWithShadow(textRenderer, Text.literal(module.getName()), x, y, color); + y += textRenderer.fontHeight + 2; + } } } diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Criticals.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Criticals.java index e539ee7..5c90cf0 100644 --- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Criticals.java +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Criticals.java @@ -65,9 +65,8 @@ public class Criticals extends Module { } } else if (Objects.equals(mode.getMode(), "Bypass")) { // don't do the sprint bypass and make it more random-looking to throw off anticheat - sendYPacket(0.11); - sendYPacket(0.1100013579); - sendYPacket(0.0000013579); + sendYPacket(0.0625 + (Math.random() * 0.01)); + sendYPacket(0.0); } } } diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Fullbright.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Fullbright.java index bf72c6a..eefd5fb 100644 --- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Fullbright.java +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Fullbright.java @@ -3,7 +3,6 @@ package net.justlearning.arslaan3102.arslaansmagichax.modules.impl; import net.justlearning.arslaan3102.arslaansmagichax.modules.Category; import net.justlearning.arslaan3102.arslaansmagichax.modules.Module; import net.justlearning.arslaan3102.arslaansmagichax.modules.settings.ModeSetting; -import net.minecraft.client.option.SimpleOption; import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.entity.effect.StatusEffects; import net.minecraft.registry.Registries; @@ -11,23 +10,24 @@ import net.minecraft.registry.Registries; import java.util.Objects; public class Fullbright extends Module { - private ModeSetting mode = new ModeSetting("Mode", "Gamma", "Effect", "Gamma", "Effect + Gamma"); - private SimpleOption<Double> option; + public ModeSetting mode = new ModeSetting("Mode", "Gamma", "Effect", "Gamma", "Effect + Gamma", "Break AO Renderer"); private double previousGamma = 1.0; private boolean setPreviousGamma = false; + private String lastMode = ""; // track previous mode public Fullbright() { super("Fullbright", "Brightens up your world!", -1, Category.RENDER); addSetting(mode); + lastMode = mode.getMode(); // initialize } @Override protected void onEnable() { if (mc.options == null) return; - if (Objects.equals(mode.getMode(), "Gamma")) { - if (!setPreviousGamma) previousGamma = mc.options.getGamma().getValue(); - setPreviousGamma = true; - mc.options.getGamma().setValue(1000.0); + applyMode(mode.getMode()); + + if (mc.worldRenderer != null) { + mc.worldRenderer.reload(); } } @@ -35,31 +35,52 @@ public class Fullbright extends Module { public void tick() { if (!this.isEnabled() || mc.player == null) return; - if (Objects.equals(mode.getMode(), "Effect")) { - mc.options.getGamma().setValue(previousGamma); - setPreviousGamma = false; + String currentMode = mode.getMode(); + if (!Objects.equals(currentMode, lastMode)) { + applyMode(currentMode); + + if (mc.worldRenderer != null) { + mc.worldRenderer.reload(); + } + + lastMode = currentMode; + } + + if (Objects.equals(currentMode, "Effect")) { + mc.player.addStatusEffect(new StatusEffectInstance(Registries.STATUS_EFFECT.getEntry(StatusEffects.NIGHT_VISION.value()), 1, 255)); + } else if (Objects.equals(currentMode, "Effect + Gamma")) { mc.player.addStatusEffect(new StatusEffectInstance(Registries.STATUS_EFFECT.getEntry(StatusEffects.NIGHT_VISION.value()), 1, 255)); } - if (Objects.equals(mode.getMode(), "Gamma")) { + } + + private void applyMode(String modeName) { + if (Objects.equals(modeName, "Gamma")) { if (!setPreviousGamma) previousGamma = mc.options.getGamma().getValue(); setPreviousGamma = true; mc.options.getGamma().setValue(1000.0); - } - if (Objects.equals(mode.getMode(), "Effect + Gamma")) { + } else if (Objects.equals(modeName, "Effect + Gamma")) { if (!setPreviousGamma) previousGamma = mc.options.getGamma().getValue(); setPreviousGamma = true; mc.options.getGamma().setValue(1000.0); - mc.player.addStatusEffect(new StatusEffectInstance(Registries.STATUS_EFFECT.getEntry(StatusEffects.NIGHT_VISION.value()), 1, 255)); + } else if (Objects.equals(modeName, "Effect")) { + mc.options.getGamma().setValue(previousGamma); + setPreviousGamma = false; } } @Override protected void onDisable() { if (mc.player == null) return; + if (mc.player.hasStatusEffect(Registries.STATUS_EFFECT.getEntry(StatusEffects.NIGHT_VISION.value()))) { mc.player.removeStatusEffect(Registries.STATUS_EFFECT.getEntry(StatusEffects.NIGHT_VISION.value())); } mc.options.getGamma().setValue(previousGamma); + + if (mc.worldRenderer != null) { + mc.worldRenderer.reload(); + } } } + diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/HideModulesHUD.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/HideModulesHUD.java new file mode 100644 index 0000000..09268e6 --- /dev/null +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/HideModulesHUD.java @@ -0,0 +1,12 @@ +package net.justlearning.arslaan3102.arslaansmagichax.modules.impl; + +import net.justlearning.arslaan3102.arslaansmagichax.modules.Category; +import net.justlearning.arslaan3102.arslaansmagichax.modules.Module; + +public class HideModulesHUD extends Module { + public HideModulesHUD() { + super("Hide Modules HUD", "Hides the list of modules in the top-left of the HUD.", -1, Category.RENDER); + } + + // actual shit is in ModuleManager::onRenderHud (if condition to check if this is not enabled) +} diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Xray.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Xray.java index a57c855..71163b5 100644 --- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Xray.java +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Xray.java @@ -2,24 +2,26 @@ package net.justlearning.arslaan3102.arslaansmagichax.modules.impl; import net.justlearning.arslaan3102.arslaansmagichax.modules.Category; import net.justlearning.arslaan3102.arslaansmagichax.modules.Module; +import net.justlearning.arslaan3102.arslaansmagichax.modules.settings.ModeSetting; import net.minecraft.block.AbstractBlock; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.entity.effect.StatusEffects; import net.minecraft.registry.Registries; +import net.minecraft.text.Text; import java.util.ArrayList; import java.util.List; +import java.util.Objects; public class Xray extends Module { private List<BlockState> interestingBlocks = new ArrayList<>(); - private double previousGamma = 1.0; - private boolean setPreviousGamma = false; public Xray() { super("Xray", "Allows you to see through blocks.", -1, Category.RENDER); + // Add ores, spawners, liquids, etc. interestingBlocks.add(Blocks.DIAMOND_ORE.getDefaultState()); interestingBlocks.add(Blocks.DEEPSLATE_DIAMOND_ORE.getDefaultState()); interestingBlocks.add(Blocks.GOLD_ORE.getDefaultState()); @@ -38,45 +40,31 @@ public class Xray extends Module { interestingBlocks.add(Blocks.DEEPSLATE_COPPER_ORE.getDefaultState()); interestingBlocks.add(Blocks.NETHER_QUARTZ_ORE.getDefaultState()); interestingBlocks.add(Blocks.NETHER_GOLD_ORE.getDefaultState()); - interestingBlocks.add(Blocks.SPAWNER.getDefaultState()); interestingBlocks.add(Blocks.CHEST.getDefaultState()); interestingBlocks.add(Blocks.ANCIENT_DEBRIS.getDefaultState()); interestingBlocks.add(Blocks.GLOWSTONE.getDefaultState()); - interestingBlocks.add(Blocks.WATER.getDefaultState()); interestingBlocks.add(Blocks.LAVA.getDefaultState()); } @Override protected void onEnable() { - if (mc.worldRenderer == null) return; + if (mc.worldRenderer != null) mc.worldRenderer.reload(); - mc.worldRenderer.reload(); + if (mc.player != null) mc.player.sendMessage(Text.literal("[Xray] It is recommended to use this hack with Fullbright for a better experience."), false); } - @Override - public void tick() { - if (!this.isEnabled() || mc.player == null || mc.world == null || mc.options == null) return; - - if (!setPreviousGamma) previousGamma = mc.options.getGamma().getValue(); - setPreviousGamma = true; - mc.options.getGamma().setValue(1000.0); - mc.player.addStatusEffect(new StatusEffectInstance(Registries.STATUS_EFFECT.getEntry(StatusEffects.NIGHT_VISION.value()), 1, 255)); - } @Override protected void onDisable() { - if (mc.worldRenderer == null || mc.options == null) return; - - mc.worldRenderer.reload(); - mc.options.getGamma().setValue(previousGamma); - setPreviousGamma = false; + if (mc.worldRenderer != null) mc.worldRenderer.reload(); } public boolean isInterestingBlock(BlockState state) { return interestingBlocks.contains(state); } - // xraying is handled in BlockMixin + // xraying is handled in BlockMixin.java } + |
