This commit is contained in:
retucio committed 2026-08-28 12:27:07 +02:00
1 parent ac7de7a07a
commit 73682cb85d
17 files changed
+294 -93

No files matched your search

+4 -9
View File
@@ -1,22 +1,17 @@
# v6.1
# v6.2
## novedades
### adiciones
#### módulos nuevos:
- físicas de items: aplica físicas "realistas" a los items del suelo
#### elementos del HUD nuevos:
- velocidad: velocidad del jugador
- arraylist: lista de los módulos activados
### arreglos / mejoras
- killaura ya no te echa por exceder el límite de paquetes
- el mj bridge de andamios ya funciona correctamente al no usarse en el aire
- ahora no hace falta volver a clicar cada vez que quieras cambiar de herramienta en `auto herramienta`, con el modo `cada tick`
- ahora puedes hacer puentes de varios bloques de ancho con `andamios`
- unidades distintas para el elemento del HUD `velocidad`
## problemas reconocidos
+1 -1
View File
@@ -10,6 +10,6 @@ discord_rpc_version=1.0.3
neutrino_version=1.1.0
jdk_version=25
mod_version=6.1
mod_version=6.2
maven_group=me.retucio
archives_base_name=sputnik
@@ -31,7 +31,7 @@ public abstract class EntityRendererMixin {
@ModifyExpressionValue(method = "extractRenderState", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;getTeamColor()I"))
private int setGlowESPColor(int original, @Local(argsOnly = true) Entity entity) {
if (esp.isEnabled() && esp.mode.is(EntityEsp.ESPMode.GLOW) && esp.entities.isEnabled(entity.getType())) return esp.glowColor.getRGB();
if (esp.isEnabled() && esp.mode.is(EntityEsp.ESPMode.GLOW) && esp.entities.isEnabled(entity.getType())) return esp.glowColor.getRgb();
return original;
}
}
@@ -84,7 +84,7 @@ public abstract class HudMixin {
// dangerous abbreviation
CrosshairPlus cp = ModuleManager.INSTANCE.getModuleByClass(CrosshairPlus.class);
int color = cp.isEnabled() ? cp.color.getRGB() : -1;
int color = cp.isEnabled() ? cp.color.getRgb() : -1;
int w = cp.isEnabled() ? cp.width.getIntValue() : width;
int h = cp.isEnabled() ? cp.height.getIntValue() : height;
@@ -15,7 +15,7 @@ public abstract class EntityHitboxDebugRendererMixin {
@ModifyVariable(method = "showHitboxes", at = @At("STORE"), name = "mainColor")
private int modifyHitboxColor(int original) {
Hitboxes hitboxes = ModuleManager.INSTANCE.getModuleByClass(Hitboxes.class);
if (hitboxes.isEnabled()) return hitboxes.color.getRGB();
if (hitboxes.isEnabled()) return hitboxes.color.getRgb();
return original;
}
@@ -33,7 +33,7 @@ public class ScreenMixin {
if (watermark == null || watermark.isEmpty()) return;
gui.text(mc.font, watermark,
mc.getWindow().getGuiScaledWidth() - mc.font.width(watermark) - 2, 2,
ClientSettingsPanel.clientSettings.color.getRGB(), false
ClientSettingsPanel.clientSettings.color.getRgb(), false
);
}
}
@@ -6,16 +6,19 @@ import me.retucio.sputnik.config.ConfigManager;
import me.retucio.sputnik.event.sputnik.ToggleModuleEvent;
import me.retucio.sputnik.module.setting.SettingGroup;
import me.retucio.sputnik.module.setting.settings.BooleanSetting;
import me.retucio.sputnik.module.setting.settings.ColorSetting;
import me.retucio.sputnik.module.setting.settings.EnumSetting;
import me.retucio.sputnik.module.setting.settings.KeySetting;
import me.retucio.sputnik.module.setting.Setting;
import me.retucio.sputnik.ui.hud.HudRenderer;
import me.retucio.sputnik.util.ChatUtil;
import me.retucio.sputnik.util.Colors;
import me.retucio.sputnik.util.I18nUtil;
import net.minecraft.client.Minecraft;
import net.minecraft.network.chat.Component;
import org.lwjgl.glfw.GLFW;
import java.awt.*;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
@@ -35,8 +38,6 @@ public class Module {
// ajustes que están en todos los módulos
// estos cuatro están en los 93 módulos, así que comparten clave en vez de derivar una por módulo
protected KeySetting bind = new KeySetting(
"tecla",
"tecla asignada al módulo, ESC para desactivar",
@@ -44,7 +45,7 @@ public class Module {
).translationKey("sputnik.setting.common.bind");
// dejar al usuario elegir si el módulo debería apagarse tras soltar su tecla asignada, o si la tecla debería alternar su estado
protected EnumSetting<KeyMode> keyMode = new EnumSetting<KeyMode>(
protected EnumSetting<KeyMode> keyMode = new EnumSetting<>(
"modo de tecla",
"cómo interpretar la tecla configurada",
KeyMode.class, KeyMode.TOGGLE
@@ -56,12 +57,26 @@ public class Module {
true
).translationKey("sputnik.setting.common.notify");
protected EnumSetting<NotifyMode> notifyMode = new EnumSetting<NotifyMode>(
protected EnumSetting<NotifyMode> notifyMode = new EnumSetting<>(
"modo de notificación",
"cómo notificar cuando se activa / desactiva",
NotifyMode.class, NotifyMode.WIDGET
).translationKey("sputnik.setting.common.notifymode");
protected BooleanSetting displayed = new BooleanSetting(
"visible",
"mostrar en el arraylist del HUD",
true
).translationKey("sputnik.setting.common.displayed");;
protected ColorSetting arraylistColor = new ColorSetting(
"color del arraylist",
"color a usar en el arraylist para el nombre del módulo",
new Color(Colors.red, Colors.green, Colors.blue, Colors.alpha),
true
).translationKey("sputnik.setting.common.arraylistcolor")
.visibility(displayed::getValue);
protected final List<SettingGroup> sgs = new ArrayList<>();
protected final SettingGroup sgModule = addSg(new SettingGroup("módulo", false, "sputnik.group.common.module"));
protected final SettingGroup sgGeneral = addSg(new SettingGroup("general", true, "sputnik.group.common.general"));
@@ -72,14 +87,11 @@ public class Module {
this.name = name;
this.description = description;
this.category = category;
sgModule.addAll(bind, keyMode, notify, notifyMode);
sgModule.addAll(bind, keyMode, notify, notifyMode, displayed, arraylistColor);
}
public Module(String name, String description, Category category, int key) {
this.name = name;
this.description = description;
this.category = category;
sgModule.addAll(bind, keyMode, notify, notifyMode);
this(name, description, category);
this.bind.setDefaultValue(key);
// puto marcos
@@ -155,7 +167,6 @@ public class Module {
}
}
// onDisable no miraba notify.getValue(), así que avisaba aunque estuviera desactivado
private void notifyToggle(boolean on) {
if (!notify.getValue()) return;
if (ConfigManager.INSTANCE != null && ConfigManager.INSTANCE.isApplying()) return;
@@ -250,6 +261,10 @@ public class Module {
return bind;
}
public boolean isVisible() { return displayed.getValue(); }
public Color getArraylistColor() { return arraylistColor.getValue(); }
public boolean isSearchMatch() {
return searchMatch;
}
@@ -133,6 +133,13 @@ public class Hud extends Module {
""
));
public EnumSetting<SpeedUnits> speedUnit = sgElements.add(new EnumSetting<>(
"velocidad",
"unidad a usar para la velocidad",
SpeedUnits.class,
SpeedUnits.BPS
));
public Hud() {
super("HUD",
"superposición de la pantalla con info. adicional",
@@ -183,4 +190,21 @@ public class Hud extends Module {
@Override public String toString() { return name; }
public String toRealString() { return super.toString(); }
}
public enum SpeedUnits {
BPT("bloques/tick", "b/t"),
BPS("bloques/segundo", "b/s"),
KBPH("kilobloques/hora", "kb/h");
private final String name;
private final String symbol;
SpeedUnits(String name, String symbol) {
this.name = name;
this.symbol = symbol;
}
@Override public String toString() { return name; }
public String getSymbol() { return symbol; }
}
}
@@ -82,6 +82,15 @@ public class Scaffold extends Module {
0.1
)).visibility(extend::getValue);
private final NumberSetting bridgeWidth = sgBridge.add(new NumberSetting(
"ancho del puente",
"número de bloques de ancho del puente",
1,
1,
5,
1
));
/* torre */
@@ -160,7 +169,7 @@ public class Scaffold extends Module {
private final ColorSetting fillingColor = sgRender.add(new ColorSetting(
"color del relleno",
"color a uisar al renderizar el relleno",
"color a usar al renderizar el relleno",
Colors.withAlpha(Colors.mainColor, 60),
false
)).visibility(fillings::getValue);
@@ -247,7 +256,24 @@ public class Scaffold extends Module {
// colocar bloque
bp.set(pos.x, y, pos.z);
place(bp);
BlockPos center = bp.immutable();
int width = bridgeWidth.getIntValue();
if (width > 1) {
Vec3 right = Vec3.directionFromRotation(0, mc.player.getYRot() + 90).normalize();
int leftOff = (width - 1) / 2;
int rightOff = width / 2;
for (int i = -leftOff; i <= rightOff; i++) {
BlockPos offsetPos = new BlockPos(
(int) Math.round(center.getX() + right.x * i),
center.getY(),
(int) Math.round(center.getZ() + right.z * i)
);
place(offsetPos);
}
} else {
place(center);
}
// colocar bloque encima de la cabeza
if (headhitter.getValue() && mc.options.keyJump.isDown() && !mc.options.keyShift.isDown()) {
@@ -39,7 +39,7 @@ public class BlockOutline extends Module {
@EventListener
private void onRenderBlockOutline(RenderBlockOutlineEvent event) {
event.setColor(color.getRGB());
event.setColor(color.getRgb());
event.setLineWidth(lineWidth.getFloatValue());
}
}
@@ -46,30 +46,30 @@ public class GlintPlus extends Module {
}
public RenderType getGlint() {
int color = getColor();
int color = getGlintColor();
if (!isEnabled() || !items.getValue()) return RenderTypes.glint();
return GlintRenderType.glintColor.get(color);
}
public RenderType getGlintTranslucent() {
int color = getColor();
int color = getGlintColor();
if (!isEnabled() || !items.getValue()) return RenderTypes.glintTranslucent();
return GlintRenderType.glintTranslucentColor.get(color);
}
public RenderType getEntityGlint() {
int color = getColor();
int color = getGlintColor();
if (!isEnabled() || !items.getValue()) return RenderTypes.entityGlint();
return GlintRenderType.entityGlintColor.get(color);
}
public RenderType getArmorEntityGlint() {
int color = getColor();
int color = getGlintColor();
if (!isEnabled() || !armor.getValue()) return RenderTypes.armorEntityGlint();
return GlintRenderType.armorEntityGlintColor.get(color);
}
public int getColor() {
public int getGlintColor() {
String colorName = glintColor.getValue().getRealName().toLowerCase();
switch (colorName) {
@@ -223,7 +223,7 @@ public class ColorSetting extends Setting<Color> {
return defaultRainbowSpeed;
}
public int getRGB() {
public int getRgb() {
return getValue().getRGB();
}
@@ -36,40 +36,46 @@ public class HudRenderer {
Map<String, int[]> positions = ConfigManager.INSTANCE.getConfig().hudPositions;
Map<String, Boolean> visibilities = ConfigManager.INSTANCE.getConfig().hudVisibilities;
addElement(new CoordsElement(), positions, visibilities);
addElement(new FpsElement(), positions, visibilities);
addElement(new TpsElement(), positions, visibilities);
addElement(new CustomTextElement(), positions, visibilities);
addElement(new PingElement(), positions, visibilities);
addElement(new RotationElement(), positions, visibilities);
addElement(new TimeElement(), positions, visibilities);
addElement(new UptimeElement(), positions, visibilities);
addElement(new SpeedElement(), positions, visibilities);
addElement(new CoordsElement(), positions, visibilities, true);
addElement(new FpsElement(), positions, visibilities, true);
addElement(new TpsElement(), positions, visibilities, false);
addElement(new CustomTextElement(), positions, visibilities, false);
addElement(new PingElement(), positions, visibilities, true);
addElement(new RotationElement(), positions, visibilities, false);
addElement(new TimeElement(), positions, visibilities, true);
addElement(new UptimeElement(), positions, visibilities, false);
addElement(new SpeedElement(), positions, visibilities, false);
addElement(new ArrayListElement(), positions, visibilities, true);
addElement(new DynoElement(), positions, visibilities);
addElement(new EchestElement(), positions, visibilities);
addElement(new TotemsElement(), positions, visibilities);
addElement(new ArmorElement(), positions, visibilities);
addElement(new CustomImageElement(), positions, visibilities);
addElement(new DynoElement(), positions, visibilities, false);
addElement(new EchestElement(), positions, visibilities, false);
addElement(new TotemsElement(), positions, visibilities, true);
addElement(new ArmorElement(), positions, visibilities, true);
addElement(new CustomImageElement(), positions, visibilities, false);
HudEditor.INSTANCE.setElements(elements);
}
private void addElement(HudElement element, Map<String, int[]> positions, Map<String, Boolean> visibilities) {
private void addElement(HudElement element, Map<String, int[]> positions, Map<String, Boolean> visibilities, boolean defVisible) {
int[] savedPos;
if (positions.get(element.getId()) == null)
if (positions.get(element.getId()) == null) {
savedPos = new int[] {element.defaultX, element.defaultY};
else
} else {
savedPos = positions.get(element.getId());
}
Boolean savedVisibility = visibilities.get(element.getId());
if (savedPos != null)
if (savedPos != null) {
element.setPosition(savedPos[0], savedPos[1]);
}
if (savedVisibility != null)
if (savedVisibility != null) {
element.setVisible(savedVisibility);
} else {
element.setVisible(defVisible);
}
elements.add(element);
}
@@ -0,0 +1,104 @@
package me.retucio.sputnik.ui.hud.elements;
import me.retucio.sputnik.module.Module;
import me.retucio.sputnik.module.ModuleManager;
import me.retucio.sputnik.module.modules.client.Hud;
import me.retucio.sputnik.ui.hud.HudElement;
import me.retucio.sputnik.ui.hud.HudEditor;
import me.retucio.sputnik.ui.hud.HudRenderer;
import me.retucio.sputnik.util.Colors;
import net.minecraft.client.gui.GuiGraphicsExtractor;
import net.minecraft.network.chat.Component;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class ArrayListElement extends HudElement {
public ArrayListElement() {
super("arraylist", 2, 2);
}
private List<Module> getSortedModules() {
List<Module> sorted = ModuleManager.INSTANCE.getModules().stream()
.filter(Module::isEnabled)
.sorted(Comparator.comparingInt((Module m) -> mc.font.width(m.getName())))
.collect(Collectors.toList());
return isLowerHalf()
? sorted
: sorted.reversed();
}
private boolean isRightHalf() {
return x > mc.getWindow().getGuiScaledWidth() / 2;
}
private boolean isLowerHalf() {
return y > mc.getWindow().getGuiScaledHeight() / 2;
}
@Override
public void renderInGame(GuiGraphicsExtractor gui, float delta, Hud hud) {
List<Module> modules = getSortedModules();
boolean shadow = hud != null && hud.shadow.getValue();
int lineHeight = mc.font.lineHeight + 1;
if (modules.isEmpty()) {
w = 0;
h = 0;
return;
}
boolean rightAlign = isRightHalf();
int maxWidth = mc.font.width(modules.getFirst().getDisplayName()); // widest = first
int currY = y;
for (Module module : modules) {
if (!module.isVisible()) continue;
String name = module.getDisplayName();
int textWidth = mc.font.width(name);
int drawX = rightAlign
? x + (maxWidth - textWidth)
: x;
int color = module.getArraylistColor().getRGB();
HudRenderer.INSTANCE.drawSnappedText(gui, name, drawX, currY, color, shadow);
currY += lineHeight;
}
w = maxWidth;
h = currY - y - 1;
}
@Override
public void renderInEditor(GuiGraphicsExtractor gui, Hud hud) {
drawEditorBackground(gui);
renderInGame(gui, 0, hud);
}
protected void drawEditorBackground(GuiGraphicsExtractor gui) {
int bgColor = visible ? Colors.visibleHudElementColor.getRGB() : Colors.disabledHudElementColor.getRGB();
int outlineColor = HudEditor.INSTANCE != null && HudEditor.INSTANCE.isSelected(this)
? Colors.selectedHudElementOutlineColor.getRGB()
: Colors.unselectedHudElementOutlineColor.getRGB();
gui.fill(x - 1, y - 1, x + w + 1, y + h + 1, bgColor);
gui.fill(x - 1, y - 1, x + w + 1, y, outlineColor);
gui.fill(x - 1, y + h, x + w + 1, y + h + 1, outlineColor);
gui.fill(x - 1, y, x, y + h, outlineColor);
gui.fill(x + w, y, x + w + 1, y + h, outlineColor);
}
@Override
public List<Component> getTooltip() {
return List.of(
Component.translatable("sputnik.hud.element.arraylist.name"),
Component.translatable("sputnik.hud.element.arraylist.desc")
);
}
}
@@ -18,10 +18,21 @@ public class SpeedElement extends TextHudElement {
@Override
public String getText(float delta, Hud hud) {
if (mc.player == null) return getPreviewText();
return String.format("%.2f b/s", Mth.sqrt(
String unit = hud.speedUnit.getValue().getSymbol();
// solo velocidad horizontal
float speed = Mth.sqrt(
(float) (mc.player.getDeltaMovement().x() * mc.player.getDeltaMovement().x())
+ (float) (mc.player.getDeltaMovement().z() * mc.player.getDeltaMovement().z())
));
);
if (hud.speedUnit.is(Hud.SpeedUnits.BPS)) {
speed = speed * 20;
} else if (hud.speedUnit.is(Hud.SpeedUnits.KBPH)) {
speed = speed * 20 * 3600 / 1000;
}
return String.format("%.2f %s", speed, unit);
}
@Override
@@ -32,8 +43,8 @@ public class SpeedElement extends TextHudElement {
@Override
public List<Component> getTooltip() {
return List.of(
Component.translatable("sputnik.hud.element.speed.name"),
Component.translatable("sputnik.hud.element.speed.desc")
Component.translatable("sputnik.hud.elementos.velocidad.name"),
Component.translatable("sputnik.hud.elementos.velocidad.desc")
);
}
}
@@ -123,6 +123,9 @@
"sputnik.enum.module.modules.client.hud.dynosaurs.trex": "t-rex",
"sputnik.enum.module.modules.client.hud.dynosaurs.triceratops": "triceratops",
"sputnik.enum.module.modules.client.hud.dynosaurs.velocirraptor": "velociraptor",
"sputnik.enum.module.modules.client.hud.speedunits.bpt": "blocks/tick",
"sputnik.enum.module.modules.client.hud.speedunits.bps": "blocks/second",
"sputnik.enum.module.modules.client.hud.speedunits.kbph": "kiloblocks/hour",
"sputnik.enum.module.modules.client.hud.timeformat.twelve_hour": "12h",
"sputnik.enum.module.modules.client.hud.timeformat.twenty_four_hour": "24h",
"sputnik.enum.module.modules.combat.holdattack.attackmode.spam": "spam",
@@ -314,8 +317,8 @@
"sputnik.hud.element.ping.name": "ping",
"sputnik.hud.element.rotation.desc": "shows your current rotation",
"sputnik.hud.element.rotation.name": "rotations",
"sputnik.hud.element.speed.desc": "the player's speed",
"sputnik.hud.element.speed.name": "speed",
"sputnik.hud.elementos.velocidad.desc": "the player's speed",
"sputnik.hud.elementos.velocidad.name": "speed",
"sputnik.hud.element.time.desc": "hours and minutes in the selected timezone",
"sputnik.hud.element.time.name": "time",
"sputnik.hud.element.totems.desc": "totems available",
@@ -611,6 +614,8 @@
"sputnik.setting.amigos.general.prevenirataques.name": "prevent attacks",
"sputnik.setting.amigos.general.rueditaparaanadiramigo.desc": "press the middle mouse button to (un)mark a player as a friend",
"sputnik.setting.amigos.general.rueditaparaanadiramigo.name": "middle click to add friend",
"sputnik.setting.andamios.puente.anchodelpuente.name": "width",
"sputnik.setting.andamios.puente.anchodelpuente.desc": "bridge width",
"sputnik.setting.andamios.bloques.autoselect.desc": "automatically select the closest slot with blocks",
"sputnik.setting.andamios.bloques.autoselect.name": "autoselect",
"sputnik.setting.andamios.bloques.bloques.desc": "blocks to apply the filter to",
@@ -838,8 +843,12 @@
"sputnik.setting.colocarenaire.scrolleo.tecladelscroll.desc": "key to hold for scrolling to work",
"sputnik.setting.colocarenaire.scrolleo.tecladelscroll.name": "scroll key",
"sputnik.setting.color.rainbow": "rainbow",
"sputnik.setting.common.arraylistcolor.name": "arraylist color",
"sputnik.setting.common.arraylistcolor.desc": "color to use when displaying module name in the arraylist hud element",
"sputnik.setting.common.bind.desc": "key bound to the module, ESC to unbind",
"sputnik.setting.common.bind.name": "key",
"sputnik.setting.common.displayed.name": "displayed",
"sputnik.setting.common.displayed.desc": "whether to display this module in the arraylist hud element",
"sputnik.setting.common.keymode.desc": "how to interpret the bound key",
"sputnik.setting.common.keymode.name": "key mode",
"sputnik.setting.common.notify.desc": "notify when toggling on / off",
@@ -41,9 +41,9 @@
"sputnik.commands.macro.removed": "macro %s borrada",
"sputnik.commands.panorama.desc": "crea un pack de textures con la panorámica basada en tu posición actual",
"sputnik.commands.panorama.errorassemble": "no se pudo crear el pack; existe uno ya con ese nombre?",
"sputnik.commands.panorama.finalizing": "finalizando pack...",
"sputnik.commands.panorama.packdesc": "generado por Sputnik",
"sputnik.commands.panorama.ready": "pack listo!",
"sputnik.commands.panorama.finalizing": "finalizando pack...",
"sputnik.commands.peek.desc": "cotillea el inventario de otro jugador",
"sputnik.commands.plugins.calmdown": "calmaaa",
"sputnik.commands.plugins.desc": "busca los plugins que tenga el server",
@@ -123,14 +123,17 @@
"sputnik.enum.module.modules.client.hud.dynosaurs.trex": "t-rex",
"sputnik.enum.module.modules.client.hud.dynosaurs.triceratops": "tricerátops",
"sputnik.enum.module.modules.client.hud.dynosaurs.velocirraptor": "velocirráptor",
"sputnik.enum.module.modules.client.hud.speedunits.bpt": "bloques/tick",
"sputnik.enum.module.modules.client.hud.speedunits.bps": "bloques/segundo",
"sputnik.enum.module.modules.client.hud.speedunits.kbph": "kilobloques/hora",
"sputnik.enum.module.modules.client.hud.timeformat.twelve_hour": "12h",
"sputnik.enum.module.modules.client.hud.timeformat.twenty_four_hour": "24h",
"sputnik.enum.module.modules.combat.holdattack.attackmode.spam": "spamear",
"sputnik.enum.module.modules.combat.holdattack.attackmode.time": "timear",
"sputnik.enum.module.modules.combat.killaura.attackmode.spam": "spamear",
"sputnik.enum.module.modules.combat.killaura.attackmode.timed": "timear",
"sputnik.enum.module.modules.combat.killaura.listmode.whitelist": "lista blanca (incluir)",
"sputnik.enum.module.modules.combat.killaura.listmode.blacklist": "lista negra (excluir)",
"sputnik.enum.module.modules.combat.killaura.listmode.whitelist": "lista blanca (incluir)",
"sputnik.enum.module.modules.combat.projectiletrajectories.trajectorystyle.dashed": "discontinua",
"sputnik.enum.module.modules.combat.projectiletrajectories.trajectorystyle.dotted": "puntos",
"sputnik.enum.module.modules.combat.projectiletrajectories.trajectorystyle.solid": "continua",
@@ -157,8 +160,8 @@
"sputnik.enum.module.modules.network.packetdelay.packets.keep_alive": "paquetes KeepAlive",
"sputnik.enum.module.modules.network.packetdelay.packets.others": "todos menos KeepAlive",
"sputnik.enum.module.modules.network.packetlogger.logmode.chat": "chat",
"sputnik.enum.module.modules.network.packetlogger.logmode.notification": "notis",
"sputnik.enum.module.modules.network.packetlogger.logmode.file": "archivo",
"sputnik.enum.module.modules.network.packetlogger.logmode.notification": "notis",
"sputnik.enum.module.modules.network.packetmine.clickaction.add_priority": "agregar prioridad",
"sputnik.enum.module.modules.network.packetmine.clickaction.none": "nada",
"sputnik.enum.module.modules.network.packetmine.clickaction.unselect": "deseleccionar",
@@ -209,8 +212,8 @@
"sputnik.enum.module.modules.render.norender.colors.red": "rojo",
"sputnik.enum.module.modules.render.norender.colors.white": "blanco",
"sputnik.enum.module.modules.render.norender.colors.yellow": "amarillo",
"sputnik.enum.module.modules.world.autotool.autotoolmode.on_tick": "cada tick",
"sputnik.enum.module.modules.world.autotool.autotoolmode.on_click": "cada click",
"sputnik.enum.module.modules.world.autotool.autotoolmode.on_tick": "cada tick",
"sputnik.enum.module.modules.world.blockinfo.copymode.command": "copiar comando /setblock",
"sputnik.enum.module.modules.world.blockinfo.copymode.dont": "no copiar",
"sputnik.enum.module.modules.world.blockinfo.copymode.json": "copiar contenido json",
@@ -225,8 +228,8 @@
"sputnik.enum.module.modules.world.timechanger.moonphases.waxing_gibbous": "creciente gibosa",
"sputnik.filesetting.cannotwrite": "no se puede escribir a \"%s\"!",
"sputnik.filesetting.choose": "elige un archivo",
"sputnik.filesetting.supportedfiles": "archivos soportados",
"sputnik.filesetting.doesnotexist": "el archivo \"%s\" no existe!",
"sputnik.filesetting.supportedfiles": "archivos soportados",
"sputnik.group.andamios.bloques": "bloques",
"sputnik.group.andamios.puente": "puente",
"sputnik.group.andamios.renderizado": "renderizado",
@@ -314,8 +317,8 @@
"sputnik.hud.element.ping.name": "ping",
"sputnik.hud.element.rotation.desc": "te muestra tu rotación actual",
"sputnik.hud.element.rotation.name": "rotaciones",
"sputnik.hud.element.speed.name": "velocidad",
"sputnik.hud.element.speed.desc": "velocidad del jugador",
"sputnik.hud.elementos.velocidad.desc": "velocidad del jugador",
"sputnik.hud.elementos.velocidad.name": "velocidad",
"sputnik.hud.element.time.desc": "hora y minutos de la zona horaria seleccionada",
"sputnik.hud.element.time.name": "hora",
"sputnik.hud.element.totems.desc": "totems disponibles",
@@ -396,6 +399,8 @@
"sputnik.module.bypassearpacks.name": "bypassear packs",
"sputnik.module.camaralibre.desc": "permite a la cámara moverse independientemente del jugador. útil para explorar alrededores",
"sputnik.module.camaralibre.name": "cámara libre",
"sputnik.module.canceladordepaquetes.desc": "cancela paquetes.",
"sputnik.module.canceladordepaquetes.name": "cancelador de paquetes",
"sputnik.module.capas.desc": "elige qué capa llevar (solo visible para ti)",
"sputnik.module.capas.name": "capas",
"sputnik.module.capturasdepantalla.desc": "elige qué hacer tras tomar una captura de pantalla",
@@ -468,8 +473,8 @@
"sputnik.module.hotkeysinvcreativo.name": "hotkeys inv. creativo",
"sputnik.module.hud.desc": "superposición de la pantalla con info. adicional",
"sputnik.module.hud.name": "HUD",
"sputnik.module.imandeitems.name": "imán de items",
"sputnik.module.imandeitems.desc": "recoge items distantes rápidamente mediante paquetes de movimiento",
"sputnik.module.imandeitems.name": "imán de items",
"sputnik.module.infodebloque.desc": "muestra el contenido nbt del bloque al que se está apuntando",
"sputnik.module.infodebloque.name": "info. de bloque",
"sputnik.module.interfaz.desc": "ajustes de la interfaz, y otros misceláneos",
@@ -485,12 +490,12 @@
"sputnik.module.jugadorfalso.desc": "invoca una entidad de jugador falsa por motivos de testeo",
"sputnik.module.jugadorfalso.name": "jugador falso",
"sputnik.module.keypearl.nopearls": "no tienes perlas",
"sputnik.module.killaura.name": "killaura",
"sputnik.module.killaura.desc": "si la violencia no funciona, es porque no has aplicado la suficiente",
"sputnik.module.killaura.name": "killaura",
"sputnik.module.loggerdepaquetes.desc": "loguea paquetes",
"sputnik.module.loggerdepaquetes.name": "logger de paquetes",
"sputnik.module.lsd.desc": "distorsiona y tiñe la pantalla",
"sputnik.module.lsd.name": "lsd",
"sputnik.module.loggerdepaquetes.name": "logger de paquetes",
"sputnik.module.loggerdepaquetes.desc": "loguea paquetes",
"sputnik.module.macekill.oops": "upsi: %s",
"sputnik.module.manos.desc": "modifica la manera en la que se renderizan las manos",
"sputnik.module.manos.name": "manos",
@@ -518,8 +523,6 @@
"sputnik.module.notificaciones.name": "notificaciones",
"sputnik.module.packetdelay.singleplayer": "delay de paquetes no funciona en un solo jugador",
"sputnik.module.packetmine.pickbreaking": "pico por romperse",
"sputnik.module.canceladordepaquetes.name": "cancelador de paquetes",
"sputnik.module.canceladordepaquetes.desc": "cancela paquetes.",
"sputnik.module.parkour.desc": "salta automáticamente en el último tick posible, en la esquina del bloque",
"sputnik.module.parkour.name": "parkour",
"sputnik.module.particulas.desc": "emite particulas artificiales",
@@ -538,8 +541,8 @@
"sputnik.module.progresodeminado.name": "progreso de minado",
"sputnik.module.puntosdedesconexion.desc": "te muestra los puntos donde otros jugadores se desconectan",
"sputnik.module.puntosdedesconexion.name": "puntos de desconexión",
"sputnik.module.putogordo.name": "puto gordo",
"sputnik.module.putogordo.desc": "come automáticamente al tener hambre",
"sputnik.module.putogordo.name": "puto gordo",
"sputnik.module.racismo.desc": "amego segarro",
"sputnik.module.racismo.name": "racismo",
"sputnik.module.reconectar.desc": "añade un botón para reconectarse a un servidor tras ser desconectado",
@@ -611,6 +614,8 @@
"sputnik.setting.amigos.general.prevenirataques.name": "prevenir ataques",
"sputnik.setting.amigos.general.rueditaparaanadiramigo.desc": "pulsara la ruedita del ratón para (des)marcar a un jugador como amigo",
"sputnik.setting.amigos.general.rueditaparaanadiramigo.name": "ruedita para añadir amigo",
"sputnik.setting.andamios.puente.anchodelpuente.name": "ancho del puente",
"sputnik.setting.andamios.puente.anchodelpuente.desc": "número de bloques de ancho del puente",
"sputnik.setting.andamios.bloques.autoselect.desc": "seleccionar slot más cercano con bloques automáticamente",
"sputnik.setting.andamios.bloques.autoselect.name": "autoselect",
"sputnik.setting.andamios.bloques.bloques.desc": "bloques a aplicar al filtro",
@@ -773,10 +778,10 @@
"sputnik.setting.camaralibre.velocidad.tecladelscroll.name": "tecla del scroll",
"sputnik.setting.camaralibre.velocidad.velocidad.desc": "velocidad de movimiento de la cámara",
"sputnik.setting.camaralibre.velocidad.velocidad.name": "velocidad",
"sputnik.setting.canceladordepaquetes.general.c2s.name": "C2S",
"sputnik.setting.canceladordepaquetes.general.c2s.desc": "paquetes a cancelar, dirección servidor",
"sputnik.setting.canceladordepaquetes.general.s2c.name": "S2C",
"sputnik.setting.canceladordepaquetes.general.c2s.name": "C2S",
"sputnik.setting.canceladordepaquetes.general.s2c.desc": "paquetes a cancelar, dirección cliente",
"sputnik.setting.canceladordepaquetes.general.s2c.name": "S2C",
"sputnik.setting.capas.general.capa.desc": "qué capa llevar puesta",
"sputnik.setting.capas.general.capa.name": "capa",
"sputnik.setting.capturasdepantalla.botones.botondeabrir.desc": "mostrar botón para abrir el archivo de la captura",
@@ -838,8 +843,12 @@
"sputnik.setting.colocarenaire.scrolleo.tecladelscroll.desc": "tecla a mantener para que el scroll funcione",
"sputnik.setting.colocarenaire.scrolleo.tecladelscroll.name": "tecla del scroll",
"sputnik.setting.color.rainbow": "arcoíris",
"sputnik.setting.common.arraylistcolor.name": "color del arraylist",
"sputnik.setting.common.arraylistcolor.desc": "color a usar en el arraylist para el nombre del módulo",
"sputnik.setting.common.bind.desc": "tecla asignada al módulo, ESC para desactivar",
"sputnik.setting.common.bind.name": "tecla",
"sputnik.setting.common.displayed.name": "visible",
"sputnik.setting.common.displayed.desc": "mostrar en el arraylist del HUD",
"sputnik.setting.common.keymode.desc": "cómo interpretar la tecla configurada",
"sputnik.setting.common.keymode.name": "modo de tecla",
"sputnik.setting.common.notify.desc": "notificar al activar / desactivar",
@@ -934,6 +943,8 @@
"sputnik.setting.estampaescrotos.general.maximapotencia.name": "máxima potencia",
"sputnik.setting.estampaescrotos.general.prevenirmuerte.desc": "prevenir la muerte por daño de caída si el ataque fue bloqueado, cancelando los paquetes de movimiento",
"sputnik.setting.estampaescrotos.general.prevenirmuerte.name": "prevenir muerte",
"sputnik.setting.fisicadeobjetos.general.rotacionaleatoria.name": "rotación aleatoria",
"sputnik.setting.fisicadeobjetos.general.rotacionaleatoria.desc": "añade una rotación aleatoria a cada objeto",
"sputnik.setting.friend.nickname.desc": "con qué nombre guardar al amigo",
"sputnik.setting.friend.nickname.name": "nombre",
"sputnik.setting.fuentes.general.fuente.desc": "fuente a emplear",
@@ -962,8 +973,8 @@
"sputnik.setting.hud.elementos.formatodelahora.name": "formato de la hora",
"sputnik.setting.hud.elementos.mododecoordenadas.desc": "qué coordenadas mostrar",
"sputnik.setting.hud.elementos.mododecoordenadas.name": "modo de coordenadas",
"sputnik.setting.hud.elementos.rutadeimagen.name": "ruta de imagen",
"sputnik.setting.hud.elementos.rutadeimagen.desc": "ruta de la imagen a renderizar en el elemento de imagen custom",
"sputnik.setting.hud.elementos.rutadeimagen.name": "ruta de imagen",
"sputnik.setting.hud.elementos.textocustom.desc": "marca de agua (dejar vacío para quitar)",
"sputnik.setting.hud.elementos.textocustom.name": "texto custom",
"sputnik.setting.hud.elementos.zonahoraria.desc": "zona horaria en UTC+n",
@@ -976,8 +987,8 @@
"sputnik.setting.hud.visualizacion.mostrarenf3.name": "mostrar en F3",
"sputnik.setting.hud.visualizacion.sombra.desc": "texto con sombra",
"sputnik.setting.hud.visualizacion.sombra.name": "sombra",
"sputnik.setting.imandeitems.general.rango.name": "rango",
"sputnik.setting.imandeitems.general.rango.desc": "rango de recogida de items",
"sputnik.setting.imandeitems.general.rango.name": "rango",
"sputnik.setting.infodebloque.general.copiar.desc": "copiar al portapapeles",
"sputnik.setting.infodebloque.general.copiar.name": "copiar",
"sputnik.setting.infodebloque.general.liquidos.desc": "también incluir líquidos en el raycast",
@@ -1045,26 +1056,26 @@
"sputnik.setting.jugadorfalso.general.nombre.desc": "qué nombre asignarle al jugador",
"sputnik.setting.jugadorfalso.general.nombre.name": "nombre",
"sputnik.setting.key.reset": "tecla del módulo %s restablecida",
"sputnik.setting.killaura.general.alcance.name": "alcance",
"sputnik.setting.killaura.general.alcance.desc": "qué tan lejos extender el brazo",
"sputnik.setting.killaura.general.mododeataque.name": "modo de ataque",
"sputnik.setting.killaura.general.mododeataque.desc": "elige de qué manera atacar",
"sputnik.setting.killaura.general.moverlamano.name": "mover la mano",
"sputnik.setting.killaura.general.moverlamano.desc": "mover la mano al atacar",
"sputnik.setting.killaura.general.porcentajedecooldown.name": "porcentaje de cooldown",
"sputnik.setting.killaura.general.porcentajedecooldown.desc": "cuánto esperar a que se llene la barrita de ataque",
"sputnik.setting.killaura.entidades.entidades.name": "entidades",
"sputnik.setting.killaura.entidades.entidades.desc": "qué entidades atacar",
"sputnik.setting.killaura.entidades.entidades1.name": "entidades",
"sputnik.setting.killaura.entidades.entidades.name": "entidades",
"sputnik.setting.killaura.entidades.entidades1.desc": "qué entidades NO atacar",
"sputnik.setting.killaura.entidades.mododelista.name": "modo de lista",
"sputnik.setting.killaura.entidades.entidades1.name": "entidades",
"sputnik.setting.killaura.entidades.mododelista.desc": "cómo interpretar la lista",
"sputnik.setting.loggerdepaquetes.general.paquetes.name": "paquetes",
"sputnik.setting.loggerdepaquetes.general.paquetes.desc": "paquetes a loguear",
"sputnik.setting.loggerdepaquetes.general.mododelogueo.name": "modo de logueo",
"sputnik.setting.loggerdepaquetes.general.mododelogueo.desc": "de qué manera loguear los paquetes",
"sputnik.setting.loggerdepaquetes.general.archivo.name": "archivo",
"sputnik.setting.killaura.entidades.mododelista.name": "modo de lista",
"sputnik.setting.killaura.general.alcance.desc": "qué tan lejos extender el brazo",
"sputnik.setting.killaura.general.alcance.name": "alcance",
"sputnik.setting.killaura.general.mododeataque.desc": "elige de qué manera atacar",
"sputnik.setting.killaura.general.mododeataque.name": "modo de ataque",
"sputnik.setting.killaura.general.moverlamano.desc": "mover la mano al atacar",
"sputnik.setting.killaura.general.moverlamano.name": "mover la mano",
"sputnik.setting.killaura.general.porcentajedecooldown.desc": "cuánto esperar a que se llene la barrita de ataque",
"sputnik.setting.killaura.general.porcentajedecooldown.name": "porcentaje de cooldown",
"sputnik.setting.loggerdepaquetes.general.archivo.desc": "archivo al que loguear los paquetes",
"sputnik.setting.loggerdepaquetes.general.archivo.name": "archivo",
"sputnik.setting.loggerdepaquetes.general.mododelogueo.desc": "de qué manera loguear los paquetes",
"sputnik.setting.loggerdepaquetes.general.mododelogueo.name": "modo de logueo",
"sputnik.setting.loggerdepaquetes.general.paquetes.desc": "paquetes a loguear",
"sputnik.setting.loggerdepaquetes.general.paquetes.name": "paquetes",
"sputnik.setting.lsd.general.intensidad.desc": "cuánto se distorsiona y se tiñe la imagen",
"sputnik.setting.lsd.general.intensidad.name": "intensidad",
"sputnik.setting.lsd.general.rotaciones.desc": "cuántas vueltas da el desplazamiento; más = más remolinos",
@@ -1339,8 +1350,8 @@
"sputnik.setting.puntosdedesconexion.relleno.colordelrelleno.name": "color del relleno",
"sputnik.setting.puntosdedesconexion.relleno.relleno.desc": "renderizar relleno de la caja (caras)",
"sputnik.setting.puntosdedesconexion.relleno.relleno.name": "relleno",
"sputnik.setting.putogordo.general.hambre.name": "hambre",
"sputnik.setting.putogordo.general.hambre.desc": "cuánta hambre es necesaria para comer (puntos de comida)",
"sputnik.setting.putogordo.general.hambre.name": "hambre",
"sputnik.setting.recorrido.general.color.desc": "color a usar",
"sputnik.setting.recorrido.general.color.name": "color",
"sputnik.setting.recorrido.general.esperanzadevida.desc": "cuánto duran los trazos",