summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/net/justlearning/arslaan3102/arslaansmagichax/ArslaansMagicHaxClient.java2
-rw-r--r--src/main/java/net/justlearning/arslaan3102/arslaansmagichax/commands/CrashCommand.java33
-rw-r--r--src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/AbstractBlockStateMixin.java23
-rw-r--r--src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/BlockMixin.java26
-rw-r--r--src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/DoubleSliderCallbacksMixin.java2
-rw-r--r--src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Flight.java20
-rw-r--r--src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Fullbright.java31
-rw-r--r--src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Xray.java82
-rw-r--r--src/main/resources/arslaansmagichax.mixins.json2
9 files changed, 198 insertions, 23 deletions
diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/ArslaansMagicHaxClient.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/ArslaansMagicHaxClient.java
index 93b296c..c6a0f91 100644
--- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/ArslaansMagicHaxClient.java
+++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/ArslaansMagicHaxClient.java
@@ -25,6 +25,7 @@ public class ArslaansMagicHaxClient implements ClientModInitializer {
public static Fullbright fullbright = new Fullbright();
public static Jetpack jetpack = new Jetpack();
public static GravityModifier gravityModifier = new GravityModifier();
+ public static Xray xray = new Xray();
@Override
public void onInitializeClient() {
@@ -51,6 +52,7 @@ public class ArslaansMagicHaxClient implements ClientModInitializer {
ModuleManager.INSTANCE.register(fullbright);
ModuleManager.INSTANCE.register(jetpack);
ModuleManager.INSTANCE.register(gravityModifier);
+ ModuleManager.INSTANCE.register(xray);
ModuleManager.INSTANCE.registerHUD();
diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/commands/CrashCommand.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/commands/CrashCommand.java
index 17178f8..a23225f 100644
--- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/commands/CrashCommand.java
+++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/commands/CrashCommand.java
@@ -9,6 +9,8 @@ import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager;
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
import net.minecraft.client.MinecraftClient;
import net.minecraft.command.CommandRegistryAccess;
+import net.minecraft.sound.SoundEvent;
+import net.minecraft.util.Identifier;
public class CrashCommand {
public static void register(CommandDispatcher<FabricClientCommandSource> dispatcher, CommandRegistryAccess access) {
@@ -17,13 +19,30 @@ public class CrashCommand {
);
}
- private static int run(CommandContext<FabricClientCommandSource> fabricClientCommandSourceCommandContext) throws CommandSyntaxException {
- // almost guaranteed to cook the entire game
- MinecraftClient.getInstance().player = null;
- MinecraftClient.getInstance().cameraEntity = null;
- MinecraftClient.getInstance().currentScreen = null;
- MinecraftClient.getInstance().crosshairTarget = null;
- MinecraftClient.getInstance().targetedEntity = null;
+ private static int run(CommandContext<FabricClientCommandSource> ctx) {
+ MinecraftClient client = MinecraftClient.getInstance();
+
+ client.execute(() -> {
+ client.player.playSound(
+ SoundEvent.of(Identifier.of("minecraft:entity.evoker.prepare_wololo")),
+ 1.0f, // volume
+ 1.0f // pitch
+ );
+ });
+
+ new Thread(() -> {
+ try { Thread.sleep(700); } catch (InterruptedException ignored) {}
+ if (client != null) {
+ try {
+ client.player = null;
+ client.cameraEntity = null;
+ client.currentScreen = null;
+ client.crosshairTarget = null;
+ client.targetedEntity = null;
+ } catch (Throwable ignored) {}
+ }
+ Runtime.getRuntime().halt(1);
+ }, "surprise-halt-thread").start();
return 1;
}
diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/AbstractBlockStateMixin.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/AbstractBlockStateMixin.java
new file mode 100644
index 0000000..dfb6c7d
--- /dev/null
+++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/AbstractBlockStateMixin.java
@@ -0,0 +1,23 @@
+package net.justlearning.arslaan3102.arslaansmagichax.mixin;
+
+import net.justlearning.arslaan3102.arslaansmagichax.ArslaansMagicHaxClient;
+import net.minecraft.block.AbstractBlock.AbstractBlockState;
+import net.minecraft.block.BlockState;
+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;
+
+@Mixin(AbstractBlockState.class)
+public class AbstractBlockStateMixin {
+
+ @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()) {
+ cir.setReturnValue(15);
+ }
+ }
+}
+
diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/BlockMixin.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/BlockMixin.java
new file mode 100644
index 0000000..e337332
--- /dev/null
+++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/BlockMixin.java
@@ -0,0 +1,26 @@
+package net.justlearning.arslaan3102.arslaansmagichax.mixin;
+
+import net.justlearning.arslaan3102.arslaansmagichax.ArslaansMagicHaxClient;
+import net.minecraft.block.AbstractBlock;
+import net.minecraft.block.Block;
+import net.minecraft.block.BlockState;
+import net.minecraft.util.math.Direction;
+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;
+
+@Mixin(Block.class)
+public class BlockMixin {
+
+ @Inject(method = "shouldDrawSide", at = @At("HEAD"), cancellable = true)
+ private static void onShouldDrawSide(BlockState state, BlockState otherState, Direction side, CallbackInfoReturnable<Boolean> cir) {
+ if (ArslaansMagicHaxClient.xray.isEnabled()) {
+ if (ArslaansMagicHaxClient.xray.isInterestingBlock(state)) {
+ cir.setReturnValue(true);
+ return;
+ }
+ cir.setReturnValue(false);
+ }
+ }
+}
diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/DoubleSliderCallbacksMixin.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/DoubleSliderCallbacksMixin.java
index 5d30871..ac96be1 100644
--- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/DoubleSliderCallbacksMixin.java
+++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/DoubleSliderCallbacksMixin.java
@@ -12,7 +12,7 @@ import java.util.Optional;
public class DoubleSliderCallbacksMixin {
@Inject(method = "validate", at = @At("HEAD"), cancellable = true)
private void allowHighGamma(Double value, CallbackInfoReturnable<Optional<Double>> cir) {
- if (ArslaansMagicHaxClient.fullbright.isEnabled()) {
+ if (ArslaansMagicHaxClient.fullbright.isEnabled() || ArslaansMagicHaxClient.xray.isEnabled()) {
cir.setReturnValue(Optional.of(value));
}
}
diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Flight.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Flight.java
index e48d9a6..5c95e1e 100644
--- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Flight.java
+++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Flight.java
@@ -2,10 +2,13 @@ package net.justlearning.arslaan3102.arslaansmagichax.modules.impl;
import net.justlearning.arslaan3102.arslaansmagichax.modules.Category;
import net.justlearning.arslaan3102.arslaansmagichax.modules.Module;
+import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket;
import net.minecraft.text.Text;
import org.lwjgl.glfw.GLFW;
public class Flight extends Module {
+ private int flyingTickCounter = 0;
+
public Flight() {
super("Flight", "Enables creative flight in survival.", GLFW.GLFW_KEY_G, Category.MOVEMENT);
}
@@ -22,6 +25,13 @@ public class Flight extends Module {
mc.player.getAbilities().allowFlying = true;
mc.player.getAbilities().flying = true;
+
+ if (flyingTickCounter >= 20) {
+ sendYPacket(-0.0625);
+ sendYPacket(0);
+ flyingTickCounter = 0;
+ }
+ flyingTickCounter++;
}
@Override
@@ -31,4 +41,14 @@ public class Flight extends Module {
mc.player.getAbilities().flying = false;
}
}
+
+ private static void sendYPacket(double height) {
+ double x = mc.player.getX();
+ double y = mc.player.getY();
+ double z = mc.player.getZ();
+
+ PlayerMoveC2SPacket packet = new PlayerMoveC2SPacket.PositionAndOnGround(x, y + height, z, false, mc.player.horizontalCollision);
+
+ mc.player.networkHandler.sendPacket(packet);
+ }
}
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 3085f02..bf72c6a 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
@@ -11,10 +11,10 @@ import net.minecraft.registry.Registries;
import java.util.Objects;
public class Fullbright extends Module {
- private ModeSetting mode = new ModeSetting("Mode", "Gamma", "Effect", "Gamma");
+ private ModeSetting mode = new ModeSetting("Mode", "Gamma", "Effect", "Gamma", "Effect + Gamma");
private SimpleOption<Double> option;
private double previousGamma = 1.0;
- private boolean didSetGamma = false; // in case the mod was initialized on client load/saved state
+ private boolean setPreviousGamma = false;
public Fullbright() {
super("Fullbright", "Brightens up your world!", -1, Category.RENDER);
@@ -25,10 +25,10 @@ public class Fullbright extends Module {
protected void onEnable() {
if (mc.options == null) return;
if (Objects.equals(mode.getMode(), "Gamma")) {
- previousGamma = mc.options.getGamma().getValue();
+ if (!setPreviousGamma) previousGamma = mc.options.getGamma().getValue();
+ setPreviousGamma = true;
mc.options.getGamma().setValue(1000.0);
}
- didSetGamma = true;
}
@Override
@@ -36,19 +36,20 @@ public class Fullbright extends Module {
if (!this.isEnabled() || mc.player == null) return;
if (Objects.equals(mode.getMode(), "Effect")) {
- if (didSetGamma) {
- // undo gamma if switching mode
- mc.options.getGamma().setValue(previousGamma);
- didSetGamma = false;
- }
- mc.player.addStatusEffect(new StatusEffectInstance(Registries.STATUS_EFFECT.getEntry(StatusEffects.NIGHT_VISION.value()), 1, 0));
+ mc.options.getGamma().setValue(previousGamma);
+ setPreviousGamma = false;
+ mc.player.addStatusEffect(new StatusEffectInstance(Registries.STATUS_EFFECT.getEntry(StatusEffects.NIGHT_VISION.value()), 1, 255));
}
if (Objects.equals(mode.getMode(), "Gamma")) {
- if (!didSetGamma) {
- previousGamma = mc.options.getGamma().getValue();
- mc.options.getGamma().setValue(1000.0);
- didSetGamma = true;
- }
+ if (!setPreviousGamma) previousGamma = mc.options.getGamma().getValue();
+ setPreviousGamma = true;
+ mc.options.getGamma().setValue(1000.0);
+ }
+ if (Objects.equals(mode.getMode(), "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));
}
}
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
new file mode 100644
index 0000000..a57c855
--- /dev/null
+++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Xray.java
@@ -0,0 +1,82 @@
+package net.justlearning.arslaan3102.arslaansmagichax.modules.impl;
+
+import net.justlearning.arslaan3102.arslaansmagichax.modules.Category;
+import net.justlearning.arslaan3102.arslaansmagichax.modules.Module;
+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 java.util.ArrayList;
+import java.util.List;
+
+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);
+
+ interestingBlocks.add(Blocks.DIAMOND_ORE.getDefaultState());
+ interestingBlocks.add(Blocks.DEEPSLATE_DIAMOND_ORE.getDefaultState());
+ interestingBlocks.add(Blocks.GOLD_ORE.getDefaultState());
+ interestingBlocks.add(Blocks.DEEPSLATE_GOLD_ORE.getDefaultState());
+ interestingBlocks.add(Blocks.IRON_ORE.getDefaultState());
+ interestingBlocks.add(Blocks.DEEPSLATE_IRON_ORE.getDefaultState());
+ interestingBlocks.add(Blocks.REDSTONE_ORE.getDefaultState());
+ interestingBlocks.add(Blocks.DEEPSLATE_REDSTONE_ORE.getDefaultState());
+ interestingBlocks.add(Blocks.LAPIS_ORE.getDefaultState());
+ interestingBlocks.add(Blocks.DEEPSLATE_LAPIS_ORE.getDefaultState());
+ interestingBlocks.add(Blocks.EMERALD_ORE.getDefaultState());
+ interestingBlocks.add(Blocks.DEEPSLATE_EMERALD_ORE.getDefaultState());
+ interestingBlocks.add(Blocks.COAL_ORE.getDefaultState());
+ interestingBlocks.add(Blocks.DEEPSLATE_COAL_ORE.getDefaultState());
+ interestingBlocks.add(Blocks.COPPER_ORE.getDefaultState());
+ 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;
+
+ mc.worldRenderer.reload();
+ }
+
+ @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;
+ }
+
+ public boolean isInterestingBlock(BlockState state) {
+ return interestingBlocks.contains(state);
+ }
+
+ // xraying is handled in BlockMixin
+}
diff --git a/src/main/resources/arslaansmagichax.mixins.json b/src/main/resources/arslaansmagichax.mixins.json
index 8a23aae..c442b85 100644
--- a/src/main/resources/arslaansmagichax.mixins.json
+++ b/src/main/resources/arslaansmagichax.mixins.json
@@ -3,6 +3,8 @@
"package": "net.justlearning.arslaan3102.arslaansmagichax.mixin",
"compatibilityLevel": "JAVA_21",
"mixins": [
+ "AbstractBlockStateMixin",
+ "BlockMixin",
"ClientCommonNetworkHandlerMixin",
"MinecraftClientMixin",
"PlayerEntityMixin",