This commit is contained in:
retuci0 committed 2026-02-19 17:20:31 +01:00
1 parent ad0349aa29
commit acecda3c0d
6 files changed
+69 -17

No files matched your search

+1 -1
View File
@@ -31,7 +31,7 @@ dependencies {
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}" modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}"
// sistema de eventos // sistema de eventos
modImplementation "com.github.retuci0:neutrino:${project.neutrino_version}" include(modImplementation "com.github.retuci0:neutrino:${project.neutrino_version}")
// rpc de discord // rpc de discord
include(modImplementation "dev.firstdark.discordrpc:discord-rpc:1.0.3") include(modImplementation "dev.firstdark.discordrpc:discord-rpc:1.0.3")
+5 -7
View File
@@ -1,20 +1,18 @@
# v3.3 # v3.5
## novedades ## novedades
### adiciones ### adiciones
- ahora se puede asignar un botón del ratón a un módulo
#### módulos nuevos: #### módulos nuevos:
- mochila: te permite llevar items en los slots de crafteo del inventario
- tecla de perla: te permite lanzar una perla con tan solo un pulsamiento de tecla, siempre y cuando tengas en el inventario
### arreglos / mejoras ### arreglos / mejoras
- arreglada la cagada de Mojang de las teclas debug - arreglado el crash por no incluir el sistema de eventos en el mod (soy gilipollas)
- mejoras varias al módulo tobillos fuertes
- ahora el módulo de interfaces en portales funciona correctamente
- reponer ya no está repe
## problemas reconocidos ## problemas reconocidos
- muchos, pero repórtalos en la página de problemas si quieres para que queden bien registrados
+1 -1
View File
@@ -10,6 +10,6 @@ fabric_api_version=0.140.2+1.21.11
neutrino_version=1.1.0 neutrino_version=1.1.0
mod_version=3.3 mod_version=3.5
maven_group=me.retucio maven_group=me.retucio
archives_base_name=sputnik archives_base_name=sputnik
@@ -90,7 +90,6 @@ public class ModuleManager {
add(new BossbarStack()); add(new BossbarStack());
add(new ChatPlus()); add(new ChatPlus());
add(new FakePlayer()); add(new FakePlayer());
add(new Replenish());
add(new ScreenshotPlus()); add(new ScreenshotPlus());
add(new UnfocusedCpu()); add(new UnfocusedCpu());
} }
@@ -11,7 +11,10 @@ import me.retucio.sputnik.module.setting.settings.NumberSetting;
import me.retucio.sputnik.util.ChatUtil; import me.retucio.sputnik.util.ChatUtil;
import me.retucio.sputnik.util.InventoryUtil; import me.retucio.sputnik.util.InventoryUtil;
import me.retucio.sputnik.util.Lists; import me.retucio.sputnik.util.Lists;
import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.item.Items; import net.minecraft.item.Items;
@@ -20,21 +23,32 @@ import net.minecraft.util.ActionResult;
import net.minecraft.util.Hand; import net.minecraft.util.Hand;
import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.hit.BlockHitResult;
import net.minecraft.util.hit.HitResult; import net.minecraft.util.hit.HitResult;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
import java.util.List; import java.util.List;
// todo: arreglar MLGs con bloques // todo: arreglar MLGs con bloques
public class NoFall extends Module { public class NoFall extends Module {
private boolean placed; private boolean placed, shouldUse;
private final List<Item> mlgItems = List.of(Items.WATER_BUCKET, Items.ENDER_PEARL, Items.POWDER_SNOW_BUCKET, private final List<Item> mlgItems = List.of(Items.WATER_BUCKET, Items.ENDER_PEARL,
Items.SLIME_BLOCK, Items.HAY_BLOCK, Items.HONEY_BLOCK, Items.BLACK_BED, Items.POWDER_SNOW_BUCKET, Items.TWISTING_VINES, Items.SLIME_BLOCK,
Items.HAY_BLOCK, Items.HONEY_BLOCK, Items.BLACK_BED,
Items.BLUE_BED, Items.BROWN_BED, Items.CYAN_BED, Items.GRAY_BED, Items.BLUE_BED, Items.BROWN_BED, Items.CYAN_BED, Items.GRAY_BED,
Items.GREEN_BED, Items.LIGHT_BLUE_BED, Items.LIGHT_GRAY_BED, Items.LIME_BED, Items.GREEN_BED, Items.LIGHT_BLUE_BED, Items.LIGHT_GRAY_BED, Items.LIME_BED,
Items.MAGENTA_BED, Items.ORANGE_BED, Items.PINK_BED, Items.PURPLE_BED, Items.MAGENTA_BED, Items.ORANGE_BED, Items.PINK_BED, Items.PURPLE_BED,
Items.RED_BED, Items.WHITE_BED, Items.YELLOW_BED); Items.RED_BED, Items.WHITE_BED, Items.YELLOW_BED);
private final List<Block> safeBlocks = List.of(
Blocks.WATER, Blocks.SLIME_BLOCK, Blocks.HAY_BLOCK, Blocks.HONEY_BLOCK,
Blocks.TWISTING_VINES, Blocks.BLACK_BED, Blocks.BLUE_BED, Blocks.BROWN_BED,
Blocks.CYAN_BED, Blocks.GRAY_BED, Blocks.GREEN_BED, Blocks.LIGHT_BLUE_BED,
Blocks.LIGHT_GRAY_BED, Blocks.LIME_BED, Blocks.MAGENTA_BED, Blocks.ORANGE_BED,
Blocks.PINK_BED, Blocks.PURPLE_BED, Blocks.RED_BED, Blocks. WHITE_BED,
Blocks.YELLOW_BED);
private final EnumSetting<NoFallMode> mode = sgGeneral.add(new EnumSetting<>( private final EnumSetting<NoFallMode> mode = sgGeneral.add(new EnumSetting<>(
"modo", "modo",
"de qué manera evitar el daño de caída", "de qué manera evitar el daño de caída",
@@ -57,12 +71,18 @@ public class NoFall extends Module {
1 1
)); ));
private final BooleanSetting clutch = sgGeneral.add( new BooleanSetting( private final BooleanSetting clutch = sgGeneral.add(new BooleanSetting(
"salvada", "salvada",
"cambiar a modo paquete si no se encuentra un cubo disponible", "cambiar a modo paquete si no se encuentra un cubo disponible",
true true
)); ));
private final BooleanSetting center = sgGeneral.add(new BooleanSetting(
"centrar jugador",
"centrar jugador respecto al bloque que tenga debajo",
false
));
public NoFall() { public NoFall() {
super("tobillos fuertes", "evita el daño de caída", Category.PLAYER); super("tobillos fuertes", "evita el daño de caída", Category.PLAYER);
} }
@@ -77,11 +97,34 @@ public class NoFall extends Module {
if (mc.player.isOnGround()) { if (mc.player.isOnGround()) {
placed = false; placed = false;
shouldUse = false;
} }
if (mode.is(NoFallMode.CLUTCH) && mc.player.fallDistance >= distance.getValue() && !mc.player.isOnGround() && !placed) { if (shouldUse) {
HitResult result = mc.getCameraEntity().raycast(3, 0, false); mc.doItemUse();
if (result instanceof BlockHitResult) { }
if (mode.is(NoFallMode.CLUTCH)
&& mc.player.fallDistance >= distance.getValue()
&& !mc.player.isOnGround()
&& !placed) {
if (center.getValue()) {
Vec3d diff = mc.player.getEntityPos().subtract(mc.player.getBlockPos().toCenterPos());
if (diff.lengthSquared() > 10e-3) {
Vec3d impulse = new Vec3d(-diff.x * 0.05, 0, -diff.z * 0.05);
mc.player.addVelocity(impulse.x, impulse.y, impulse.z);
}
}
HitResult result = mc.getCameraEntity().raycast(3, 0, true);
if (result instanceof BlockHitResult bhr) {
BlockPos pos = bhr.getBlockPos();
while (mc.world.getBlockState(pos).isOf(Blocks.AIR)) {
pos = pos.down();
}
if (isSafeBlock(pos)) return;
// encontrar ítem // encontrar ítem
ItemStack mlgItem = getMlgItem(); ItemStack mlgItem = getMlgItem();
if (mlgItem == null) { if (mlgItem == null) {
@@ -102,6 +145,13 @@ public class NoFall extends Module {
int slot = mc.player.getInventory().getSlotWithStack(mlgItem); int slot = mc.player.getInventory().getSlotWithStack(mlgItem);
mc.player.getInventory().setSelectedSlot(slot); mc.player.getInventory().setSelectedSlot(slot);
// usar bloque
if (mlgItem.getItem() instanceof BlockItem) {
shouldUse = true;
placed = true;
return;
}
// usar ítem // usar ítem
ActionResult didPlace = mc.interactionManager.interactItem(mc.player, Hand.MAIN_HAND); ActionResult didPlace = mc.interactionManager.interactItem(mc.player, Hand.MAIN_HAND);
if (didPlace.isAccepted()) if (didPlace.isAccepted())
@@ -151,6 +201,10 @@ public class NoFall extends Module {
return null; return null;
} }
private boolean isSafeBlock(BlockPos pos) {
return safeBlocks.contains(mc.world.getBlockState(pos).getBlock());
}
private enum NoFallMode { private enum NoFallMode {
CLUTCH("waterdrop"), CLUTCH("waterdrop"),
PACKET("paquetes"); PACKET("paquetes");
+1
View File
@@ -60,6 +60,7 @@
"mixins.network.ResourcePackPolicyMixin", "mixins.network.ResourcePackPolicyMixin",
"mixins.network.ServerInfoMixin", "mixins.network.ServerInfoMixin",
"mixins.network.TelemetryManagerMixin", "mixins.network.TelemetryManagerMixin",
"mixins.player.ClientPlayerEntityMixin",
"mixins.player.ClientPlayerInteractionManagerMixin", "mixins.player.ClientPlayerInteractionManagerMixin",
"mixins.render.BufferStorageMixin", "mixins.render.BufferStorageMixin",
"mixins.render.CameraMixin", "mixins.render.CameraMixin",