This commit is contained in:
retuci0 committed 2026-03-21 09:48:30 +01:00
1 parent bab752c589
commit a879458b4a
10 files changed
+183 -9

No files matched your search

+4 -7
View File
@@ -1,4 +1,4 @@
# v3.8
# v3.9
## novedades
@@ -6,15 +6,12 @@
#### módulos nuevos:
- desync de hitbox: exploit chino para meterse en bloques
- recorrido: muestra tu recorrido
- retroceso: modifica el retroceso a tomar
- escaleras veloces: sube escaleras más rápido
- parkour: salta automáticamente
- confetti: cambia el color de las partículas del pop del tótem
### arreglos / mejoras
- rotar, de andamios, ahora solo rota server-side
- mostrar últimos bloques colocados en andamios
## problemas reconocidos
- lo de siempre
+1 -1
View File
@@ -10,6 +10,6 @@ fabric_api_version=0.140.2+1.21.11
neutrino_version=1.1.0
mod_version=3.8
mod_version=3.9
maven_group=me.retucio
archives_base_name=sputnik
@@ -6,6 +6,7 @@ import com.llamalad7.mixinextras.sugar.Local;
import me.retucio.sputnik.module.ModuleManager;
import me.retucio.sputnik.module.modules.world.NoMiningInterruptions;
import me.retucio.sputnik.module.modules.inventory.PortalGUI;
import me.retucio.sputnik.util.ChatUtil;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.util.hit.EntityHitResult;
@@ -15,6 +16,8 @@ import org.objectweb.asm.Opcodes;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import static me.retucio.sputnik.Sputnik.mc;
@@ -0,0 +1,33 @@
package me.retucio.sputnik.mixin.mixins.world;
import me.retucio.sputnik.module.ModuleManager;
import me.retucio.sputnik.module.modules.render.Confetti;
import net.minecraft.client.particle.TotemParticle;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyArgs;
import org.spongepowered.asm.mixin.injection.invoke.arg.Args;
@Mixin(TotemParticle.class)
public abstract class TotemParticleMixin {
@ModifyArgs(method = "<init>", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/TotemParticle;setColor(FFF)V", ordinal = 0))
private void setConfettiColor1(Args args) {
Confetti confetti = ModuleManager.INSTANCE.getModuleByClass(Confetti.class);
if (confetti.isEnabled()) {
args.set(0, confetti.color1.getR() / 255f);
args.set(1, confetti.color1.getG() / 255f);
args.set(2, confetti.color1.getB() / 255f);
}
}
@ModifyArgs(method = "<init>", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/TotemParticle;setColor(FFF)V", ordinal = 1))
private void setConfettiColor2(Args args) {
Confetti confetti = ModuleManager.INSTANCE.getModuleByClass(Confetti.class);
if (confetti.isEnabled()) {
args.set(0, confetti.color2.getR() / 255f);
args.set(1, confetti.color2.getG() / 255f);
args.set(2, confetti.color2.getB() / 255f);
}
}
}
@@ -111,10 +111,12 @@ public class ModuleManager {
add(new Dolphin());
add(new ElytraBounce());
add(new ElytraFly());
add(new FastStairs());
add(new Headhitters());
add(new HitboxDesync());
add(new InfiniteElytra());
add(new Jesus());
add(new Parkour());
add(new ReverseStep());
add(new SafeWalk());
add(new Scaffold());
@@ -153,6 +155,7 @@ public class ModuleManager {
add(new BlockOutline());
add(new Breadcrumbs());
add(new BreakingProgress());
add(new Confetti());
add(new CritsPlus());
add(new DamageOverlay());
add(new EntityESP());
@@ -0,0 +1,40 @@
package me.retucio.sputnik.module.modules.movement;
import me.retucio.sputnik.module.Category;
import me.retucio.sputnik.module.Module;
import me.retucio.sputnik.module.setting.settings.BooleanSetting;
import net.minecraft.block.Block;
import net.minecraft.block.StairsBlock;
public class FastStairs extends Module {
private final BooleanSetting onlyWhenSprinting = sgGeneral.add(new BooleanSetting(
"solo al correr",
"solo saltar al estar esprintando",
true
));
private final BooleanSetting onlyWhenStairsNext = sgGeneral.add(new BooleanSetting(
"solo al haber más escaleras",
"solo saltar cuando el siguiente bloque también son escaleras",
true
));
public FastStairs() {
super("escaleras veloces", "sube escaleras más rápidamente", Category.MOVEMENT);
}
@Override
public void onTick() {
if (mc.player == null || mc.world == null) return;
if (!mc.player.isSprinting() && onlyWhenSprinting.getValue()) return;
Block nextBlock = mc.world.getBlockState(mc.player.getBlockPos().add(mc.player.getHorizontalFacing().getVector())).getBlock();
if (!(nextBlock instanceof StairsBlock && onlyWhenStairsNext.getValue())) return;
if (mc.world.getBlockState(mc.player.getBlockPos().down()).getBlock() instanceof StairsBlock
&& mc.player.forwardSpeed > 0 && mc.player.isOnGround()) {
mc.player.jump();
}
}
}
@@ -0,0 +1,63 @@
package me.retucio.sputnik.module.modules.movement;
import com.google.common.collect.Streams;
import me.retucio.sputnik.module.Category;
import me.retucio.sputnik.module.Module;
import me.retucio.sputnik.module.setting.settings.BooleanSetting;
import me.retucio.sputnik.module.setting.settings.NumberSetting;
import net.minecraft.util.math.Box;
import net.minecraft.util.shape.VoxelShape;
import java.util.stream.Stream;
/**
* @link <a href="https://github.com/MeteorDevelopment/meteor-client/blob/master/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Parkour.java">yes i'm a skid</a>
* @"author" retucio
*/
public class Parkour extends Module {
private final BooleanSetting onlyWhenSprinting = sgGeneral.add(new BooleanSetting(
"solo al correr",
"solo aplicar salto al estar esprintando",
false
));
private final BooleanSetting dontWhenSneaking = sgGeneral.add(new BooleanSetting(
"no al agacharse",
"no saltar al estar agachado",
false
));
private final NumberSetting offset = sgGeneral.add(new NumberSetting(
"offset",
"cuán antes saltar",
0.001,
0.001,
0.6,
0.001
));
public Parkour() {
super("parkour",
"salta automáticamente en el último tick posible, en la esquina del bloque",
Category.MOVEMENT);
}
@Override
public void onTick() {
if (mc.player == null || mc.world == null) return;
if (!(mc.player.isSprinting() || mc.options.sprintKey.isPressed()) && onlyWhenSprinting.getValue()) return;
if ((mc.player.isSneaking() || mc.options.sneakKey.isPressed()) && dontWhenSneaking.getValue()) return;
if(!mc.player.isOnGround() || mc.options.jumpKey.isPressed()) return;
Box box = mc.player.getBoundingBox();
Box adjustedBox = box.offset(0, -0.5, 0).expand(-offset.getValue(), 0, -offset.getValue());
Stream<VoxelShape> blockCollisions = Streams.stream(mc.world.getBlockCollisions(mc.player, adjustedBox));
if (blockCollisions.findAny().isPresent()) return;
mc.player.jump();
}
}
@@ -0,0 +1,32 @@
package me.retucio.sputnik.module.modules.render;
import me.retucio.sputnik.module.Category;
import me.retucio.sputnik.module.Module;
import me.retucio.sputnik.module.setting.settings.ColorSetting;
import me.retucio.sputnik.util.Colors;
/**
* continúa en:
* @see me.retucio.sputnik.mixin.mixins.world.TotemParticleMixin
*/
public class Confetti extends Module {
public ColorSetting color1 = sgGeneral.add(new ColorSetting(
"color 1",
"en vez de amarillo",
Colors.BLACK,
false
));
public ColorSetting color2 = sgGeneral.add(new ColorSetting(
"color 2",
"en vez de verde",
Colors.mainColor,
true
));
public Confetti() {
super("confetti", "cambia el color de las partículas del pop del tótem", Category.RENDER);
}
}
@@ -1,5 +1,6 @@
package me.retucio.sputnik.util;
import com.github.retucio.neutrino.EventListener;
import me.retucio.sputnik.event.TickEvent;
import me.retucio.sputnik.module.ModuleManager;
import me.retucio.sputnik.module.modules.client.HUD;
@@ -21,6 +22,7 @@ public class MiscUtil {
public static Screen screen;
@EventListener
public static void onTick(TickEvent.Post event) {
if (screen != null && mc.currentScreen == null) {
mc.setScreen(screen);
+2 -1
View File
@@ -100,6 +100,7 @@
"mixins.world.DamageParticleMixin",
"mixins.world.EmitterParticleMixin",
"mixins.world.ParticleManagerMixin",
"mixins.world.RenderTickCounterDynamicMixin"
"mixins.world.RenderTickCounterDynamicMixin",
"mixins.world.TotemParticleMixin"
]
}