v3.9
This commit is contained in:
1 parent
bab752c589
commit
a879458b4a
10 files changed
+183
-9
No files matched your search
+4
-7
@@ -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
@@ -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);
|
||||
|
||||
@@ -100,6 +100,7 @@
|
||||
"mixins.world.DamageParticleMixin",
|
||||
"mixins.world.EmitterParticleMixin",
|
||||
"mixins.world.ParticleManagerMixin",
|
||||
"mixins.world.RenderTickCounterDynamicMixin"
|
||||
"mixins.world.RenderTickCounterDynamicMixin",
|
||||
"mixins.world.TotemParticleMixin"
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user