From 73682cb85df0c0dce2c1a2f49c018e2dbf5c2813 Mon Sep 17 00:00:00 2001 From: retucio Date: Fri, 28 Aug 2026 12:27:07 +0200 Subject: [PATCH] v6.2 --- cambios.md | 13 +-- gradle.properties | 2 +- .../mixins/entity/EntityRendererMixin.java | 2 +- .../sputnik/mixin/mixins/hud/HudMixin.java | 2 +- .../EntityHitboxDebugRendererMixin.java | 2 +- .../mixin/mixins/screen/ScreenMixin.java | 2 +- .../me/retucio/sputnik/module/Module.java | 35 ++++-- .../sputnik/module/modules/client/Hud.java | 24 ++++ .../module/modules/movement/Scaffold.java | 30 ++++- .../module/modules/render/BlockOutline.java | 2 +- .../module/modules/render/GlintPlus.java | 10 +- .../module/setting/settings/ColorSetting.java | 2 +- .../retucio/sputnik/ui/hud/HudRenderer.java | 44 ++++---- .../ui/hud/elements/ArrayListElement.java | 104 ++++++++++++++++++ .../sputnik/ui/hud/elements/SpeedElement.java | 19 +++- .../resources/assets/sputnik/lang/en_us.json | 13 ++- .../resources/assets/sputnik/lang/es_es.json | 81 ++++++++------ 17 files changed, 294 insertions(+), 93 deletions(-) create mode 100644 src/main/java/me/retucio/sputnik/ui/hud/elements/ArrayListElement.java diff --git a/cambios.md b/cambios.md index 50cfdbf..c62eab0 100644 --- a/cambios.md +++ b/cambios.md @@ -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 diff --git a/gradle.properties b/gradle.properties index 4b92ada..e8aec5b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -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 \ No newline at end of file diff --git a/src/main/java/me/retucio/sputnik/mixin/mixins/entity/EntityRendererMixin.java b/src/main/java/me/retucio/sputnik/mixin/mixins/entity/EntityRendererMixin.java index e6c924e..c4e3546 100644 --- a/src/main/java/me/retucio/sputnik/mixin/mixins/entity/EntityRendererMixin.java +++ b/src/main/java/me/retucio/sputnik/mixin/mixins/entity/EntityRendererMixin.java @@ -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; } } diff --git a/src/main/java/me/retucio/sputnik/mixin/mixins/hud/HudMixin.java b/src/main/java/me/retucio/sputnik/mixin/mixins/hud/HudMixin.java index f56a793..eeb2b71 100644 --- a/src/main/java/me/retucio/sputnik/mixin/mixins/hud/HudMixin.java +++ b/src/main/java/me/retucio/sputnik/mixin/mixins/hud/HudMixin.java @@ -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; diff --git a/src/main/java/me/retucio/sputnik/mixin/mixins/render/EntityHitboxDebugRendererMixin.java b/src/main/java/me/retucio/sputnik/mixin/mixins/render/EntityHitboxDebugRendererMixin.java index 8db8b3f..c0f88c9 100644 --- a/src/main/java/me/retucio/sputnik/mixin/mixins/render/EntityHitboxDebugRendererMixin.java +++ b/src/main/java/me/retucio/sputnik/mixin/mixins/render/EntityHitboxDebugRendererMixin.java @@ -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; } diff --git a/src/main/java/me/retucio/sputnik/mixin/mixins/screen/ScreenMixin.java b/src/main/java/me/retucio/sputnik/mixin/mixins/screen/ScreenMixin.java index 88e8eaa..d197813 100644 --- a/src/main/java/me/retucio/sputnik/mixin/mixins/screen/ScreenMixin.java +++ b/src/main/java/me/retucio/sputnik/mixin/mixins/screen/ScreenMixin.java @@ -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 ); } } diff --git a/src/main/java/me/retucio/sputnik/module/Module.java b/src/main/java/me/retucio/sputnik/module/Module.java index e75c2e3..3dc4933 100644 --- a/src/main/java/me/retucio/sputnik/module/Module.java +++ b/src/main/java/me/retucio/sputnik/module/Module.java @@ -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 = new EnumSetting( + protected EnumSetting 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 = new EnumSetting( + protected EnumSetting 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 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; } diff --git a/src/main/java/me/retucio/sputnik/module/modules/client/Hud.java b/src/main/java/me/retucio/sputnik/module/modules/client/Hud.java index ddc7385..9234c98 100644 --- a/src/main/java/me/retucio/sputnik/module/modules/client/Hud.java +++ b/src/main/java/me/retucio/sputnik/module/modules/client/Hud.java @@ -133,6 +133,13 @@ public class Hud extends Module { "" )); + public EnumSetting 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; } + } } diff --git a/src/main/java/me/retucio/sputnik/module/modules/movement/Scaffold.java b/src/main/java/me/retucio/sputnik/module/modules/movement/Scaffold.java index 8cb04cc..31073b4 100644 --- a/src/main/java/me/retucio/sputnik/module/modules/movement/Scaffold.java +++ b/src/main/java/me/retucio/sputnik/module/modules/movement/Scaffold.java @@ -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()) { diff --git a/src/main/java/me/retucio/sputnik/module/modules/render/BlockOutline.java b/src/main/java/me/retucio/sputnik/module/modules/render/BlockOutline.java index f1b6f4a..f3c4516 100644 --- a/src/main/java/me/retucio/sputnik/module/modules/render/BlockOutline.java +++ b/src/main/java/me/retucio/sputnik/module/modules/render/BlockOutline.java @@ -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()); } } diff --git a/src/main/java/me/retucio/sputnik/module/modules/render/GlintPlus.java b/src/main/java/me/retucio/sputnik/module/modules/render/GlintPlus.java index 6e683b8..b8dcef2 100644 --- a/src/main/java/me/retucio/sputnik/module/modules/render/GlintPlus.java +++ b/src/main/java/me/retucio/sputnik/module/modules/render/GlintPlus.java @@ -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) { diff --git a/src/main/java/me/retucio/sputnik/module/setting/settings/ColorSetting.java b/src/main/java/me/retucio/sputnik/module/setting/settings/ColorSetting.java index 300ea5f..3955b01 100644 --- a/src/main/java/me/retucio/sputnik/module/setting/settings/ColorSetting.java +++ b/src/main/java/me/retucio/sputnik/module/setting/settings/ColorSetting.java @@ -223,7 +223,7 @@ public class ColorSetting extends Setting { return defaultRainbowSpeed; } - public int getRGB() { + public int getRgb() { return getValue().getRGB(); } diff --git a/src/main/java/me/retucio/sputnik/ui/hud/HudRenderer.java b/src/main/java/me/retucio/sputnik/ui/hud/HudRenderer.java index 8eb596e..702434f 100644 --- a/src/main/java/me/retucio/sputnik/ui/hud/HudRenderer.java +++ b/src/main/java/me/retucio/sputnik/ui/hud/HudRenderer.java @@ -36,40 +36,46 @@ public class HudRenderer { Map positions = ConfigManager.INSTANCE.getConfig().hudPositions; Map 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 positions, Map visibilities) { + private void addElement(HudElement element, Map positions, Map 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); } diff --git a/src/main/java/me/retucio/sputnik/ui/hud/elements/ArrayListElement.java b/src/main/java/me/retucio/sputnik/ui/hud/elements/ArrayListElement.java new file mode 100644 index 0000000..634a967 --- /dev/null +++ b/src/main/java/me/retucio/sputnik/ui/hud/elements/ArrayListElement.java @@ -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 getSortedModules() { + List 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 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 getTooltip() { + return List.of( + Component.translatable("sputnik.hud.element.arraylist.name"), + Component.translatable("sputnik.hud.element.arraylist.desc") + ); + } +} \ No newline at end of file diff --git a/src/main/java/me/retucio/sputnik/ui/hud/elements/SpeedElement.java b/src/main/java/me/retucio/sputnik/ui/hud/elements/SpeedElement.java index 5892c08..8651dff 100644 --- a/src/main/java/me/retucio/sputnik/ui/hud/elements/SpeedElement.java +++ b/src/main/java/me/retucio/sputnik/ui/hud/elements/SpeedElement.java @@ -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 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") ); } } diff --git a/src/main/resources/assets/sputnik/lang/en_us.json b/src/main/resources/assets/sputnik/lang/en_us.json index d62f854..fcf3d6a 100644 --- a/src/main/resources/assets/sputnik/lang/en_us.json +++ b/src/main/resources/assets/sputnik/lang/en_us.json @@ -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", diff --git a/src/main/resources/assets/sputnik/lang/es_es.json b/src/main/resources/assets/sputnik/lang/es_es.json index 6f456b9..f8bf8c9 100644 --- a/src/main/resources/assets/sputnik/lang/es_es.json +++ b/src/main/resources/assets/sputnik/lang/es_es.json @@ -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",