From 67939a1dc66ff5145f92b84800a15e3a878be986 Mon Sep 17 00:00:00 2001 From: Wide_Cat Date: Sun, 2 Nov 2025 20:21:35 +0000 Subject: [PATCH 01/52] Add our own custom translation system Reorganised the translation files and keys. Lots of work still to be done to change our hardcoded strings into translatable ones. We should no longer be susceptible to detection by servers using the translation exploit. --- .../mixin/AbstractSignEditScreenMixin.java | 47 -------- .../mixin/ControlListWidgetMixin.java | 25 ++++ .../meteorclient/mixin/DownloaderMixin.java | 7 +- .../mixin/KeyBindingCategoryMixin.java | 30 +++++ .../mixin/LanguageManagerMixin.java | 21 ++++ .../utils/misc/MeteorTranslations.java | 113 ++++++++++++++++++ .../utils/misc/input/KeyBinds.java | 14 ++- .../assets/meteor-client/lang/en_gb.json | 5 - .../assets/meteor-client/lang/en_us.json | 5 - .../assets/meteor-client/lang/hi_in.json | 4 - .../assets/meteor-client/lang/pt_br.json | 4 - .../assets/meteor-client/lang/vi_vn.json | 4 - .../assets/meteor-client/lang/zh_cn.json | 4 - .../assets/meteor-client/language/en_gb.json | 5 + .../assets/meteor-client/language/en_us.json | 5 + .../assets/meteor-client/language/hi_in.json | 4 + .../assets/meteor-client/language/pt_br.json | 4 + .../assets/meteor-client/language/vi_vn.json | 4 + .../assets/meteor-client/language/zh_cn.json | 4 + src/main/resources/meteor-client.mixins.json | 4 +- 20 files changed, 230 insertions(+), 83 deletions(-) delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/AbstractSignEditScreenMixin.java create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/ControlListWidgetMixin.java create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/KeyBindingCategoryMixin.java create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/LanguageManagerMixin.java create mode 100644 src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java delete mode 100644 src/main/resources/assets/meteor-client/lang/en_gb.json delete mode 100644 src/main/resources/assets/meteor-client/lang/en_us.json delete mode 100644 src/main/resources/assets/meteor-client/lang/hi_in.json delete mode 100644 src/main/resources/assets/meteor-client/lang/pt_br.json delete mode 100644 src/main/resources/assets/meteor-client/lang/vi_vn.json delete mode 100644 src/main/resources/assets/meteor-client/lang/zh_cn.json create mode 100644 src/main/resources/assets/meteor-client/language/en_gb.json create mode 100644 src/main/resources/assets/meteor-client/language/en_us.json create mode 100644 src/main/resources/assets/meteor-client/language/hi_in.json create mode 100644 src/main/resources/assets/meteor-client/language/pt_br.json create mode 100644 src/main/resources/assets/meteor-client/language/vi_vn.json create mode 100644 src/main/resources/assets/meteor-client/language/zh_cn.json diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractSignEditScreenMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractSignEditScreenMixin.java deleted file mode 100644 index 68cb072b41..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractSignEditScreenMixin.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import com.llamalad7.mixinextras.injector.ModifyExpressionValue; -import net.minecraft.client.gui.screen.ingame.AbstractSignEditScreen; -import net.minecraft.text.*; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; - -import java.util.stream.Stream; - -@Mixin(AbstractSignEditScreen.class) -public abstract class AbstractSignEditScreenMixin { - @ModifyExpressionValue(method = "(Lnet/minecraft/block/entity/SignBlockEntity;ZZLnet/minecraft/text/Text;)V", at = @At(value = "INVOKE", target = "Ljava/util/stream/IntStream;mapToObj(Ljava/util/function/IntFunction;)Ljava/util/stream/Stream;")) - private Stream modifyTranslatableText(Stream original) { - return original.map(this::modifyText); - } - - // based on https://github.com/JustAlittleWolf/ModDetectionPreventer - @Unique - private Text modifyText(Text message) { - MutableText modified = MutableText.of(message.getContent()); - - if (message.getContent() instanceof KeybindTextContent content) { - String key = content.getKey(); - - if (key.contains("meteor-client")) modified = MutableText.of(new PlainTextContent.Literal(key)); - } - if (message.getContent() instanceof TranslatableTextContent content) { - String key = content.getKey(); - - if (key.contains("meteor-client")) modified = MutableText.of(new PlainTextContent.Literal(key)); - } - - modified.setStyle(message.getStyle()); - for (Text sibling : message.getSiblings()) { - modified.append(modifyText(sibling)); - } - - return modified; - } -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ControlListWidgetMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ControlListWidgetMixin.java new file mode 100644 index 0000000000..416e592ad6 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ControlListWidgetMixin.java @@ -0,0 +1,25 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import com.llamalad7.mixinextras.sugar.Local; +import meteordevelopment.meteorclient.utils.misc.MeteorTranslations; +import net.minecraft.client.gui.screen.option.ControlsListWidget; +import net.minecraft.client.option.KeyBinding; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(ControlsListWidget.class) +public class ControlListWidgetMixin { + @ModifyExpressionValue(method = "", at = @At(value = "INVOKE", target = "Lnet/minecraft/text/Text;translatable(Ljava/lang/String;)Lnet/minecraft/text/MutableText;")) + private MutableText modifyText(MutableText original, @Local KeyBinding binding) { + if (binding.getId().startsWith("meteor.key.")) return Text.literal(MeteorTranslations.translate(binding.getId())); + return original; + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/DownloaderMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/DownloaderMixin.java index 85362f4815..1da0f0eb09 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/DownloaderMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/DownloaderMixin.java @@ -7,8 +7,8 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import com.llamalad7.mixinextras.sugar.Local; -import meteordevelopment.meteorclient.MeteorClient; import net.minecraft.util.Downloader; +import net.minecraft.util.Uuids; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -36,10 +36,7 @@ public class DownloaderMixin { @ModifyExpressionValue(method = "method_55485", at = @At(value = "INVOKE", target = "Ljava/nio/file/Path;resolve(Ljava/lang/String;)Ljava/nio/file/Path;")) private Path hookResolve(Path original, @Local(argsOnly = true) UUID id) { UUID accountId = mc.getSession().getUuidOrNull(); - if (accountId == null) { - MeteorClient.LOG.warn("Failed to change resource pack download directory because the account id is null."); - return original; - } + if (accountId == null) accountId = Uuids.getOfflinePlayerUuid(mc.getSession().getUsername()); return directory.resolve(accountId.toString()).resolve(id.toString()); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/KeyBindingCategoryMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/KeyBindingCategoryMixin.java new file mode 100644 index 0000000000..766945a158 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/KeyBindingCategoryMixin.java @@ -0,0 +1,30 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import meteordevelopment.meteorclient.MeteorClient; +import meteordevelopment.meteorclient.utils.misc.MeteorTranslations; +import net.minecraft.client.option.KeyBinding; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(KeyBinding.Category.class) +public class KeyBindingCategoryMixin { + @Shadow + @Final + private Identifier id; + + @ModifyReturnValue(method = "getLabel", at = @At("RETURN")) + private Text modifyLabel(Text original) { + if (id.getNamespace().equals(MeteorClient.MOD_ID)) return Text.literal(MeteorTranslations.translate(id.getPath())); + return original; + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/LanguageManagerMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/LanguageManagerMixin.java new file mode 100644 index 0000000000..228143cef8 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/LanguageManagerMixin.java @@ -0,0 +1,21 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import meteordevelopment.meteorclient.utils.misc.MeteorTranslations; +import net.minecraft.client.resource.language.LanguageManager; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(LanguageManager.class) +public class LanguageManagerMixin { + @Inject(method = "setLanguage", at = @At("TAIL")) + private void onSetLanguage(String languageCode, CallbackInfo ci) { + MeteorTranslations.loadLanguage(languageCode); + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java new file mode 100644 index 0000000000..da77e861aa --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java @@ -0,0 +1,113 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.utils.misc; + +import com.google.gson.Gson; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import meteordevelopment.meteorclient.MeteorClient; +import meteordevelopment.meteorclient.utils.PreInit; +import net.minecraft.client.resource.language.ReorderingUtil; +import net.minecraft.text.OrderedText; +import net.minecraft.text.StringVisitable; +import net.minecraft.util.Language; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import static meteordevelopment.meteorclient.MeteorClient.mc; + +public class MeteorTranslations { + private static final Gson GSON = new Gson(); + private static Map languages; + + @PreInit + public static void init() { + languages = new Object2ObjectOpenHashMap<>(); + List toLoad = new ArrayList<>(2); + toLoad.add("en_us"); + if (!mc.options.language.equalsIgnoreCase("en_us")) toLoad.add(mc.options.language); + + for (String language : toLoad) { + loadLanguage(language); + } + } + + public static void loadLanguage(String language) { + language = language.toLowerCase(); + if (languages.containsKey(language)) return; + + try (InputStream stream = MeteorTranslations.class.getResourceAsStream("/assets/meteor-client/language/" + language + ".json")) { + if (stream == null) { + if (language.equals("en_us")) throw new RuntimeException("Error loading the default language"); + else MeteorClient.LOG.error("Error loading language: {}", language); + return; + } + + // noinspection unchecked + Object2ObjectOpenHashMap map = GSON.fromJson(new InputStreamReader(stream), Object2ObjectOpenHashMap.class); + languages.put(language, new MeteorLanguage(map)); + + MeteorClient.LOG.info("Loaded language: {}", language); + } catch (IOException e) { + if (language.equals("en_us")) throw new RuntimeException(e); + else MeteorClient.LOG.error("Error loading language: {}", language, e); + } + } + + public static String translate(String key) { + if (!key.startsWith("meteor.")) key = "meteor." + key; + return _translate(key); + } + + private static String _translate(String key) { + MeteorLanguage currentLang = getCurrentLanguage(); + return currentLang.hasTranslation(key) ? currentLang.get(key) : getDefaultLanguage().get(key); + } + + public static MeteorLanguage getLanguage(String lang) { + return languages.get(lang); + } + + public static MeteorLanguage getCurrentLanguage() { + return languages.get(mc.options.language.toLowerCase()); + } + + public static MeteorLanguage getDefaultLanguage() { + return languages.get("en_us"); + } + + public static class MeteorLanguage extends Language { + private final Map translations; + + public MeteorLanguage(Map translations) { + this.translations = translations; + } + + @Override + public String get(String key, String fallback) { + return translations.getOrDefault(key, fallback); + } + + @Override + public boolean hasTranslation(String key){ + return translations.containsKey(key); + } + + @Override + public boolean isRightToLeft() { + return false; + } + + @Override + public OrderedText reorder(StringVisitable text) { + return ReorderingUtil.reorder(text, false); + } + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/utils/misc/input/KeyBinds.java b/src/main/java/meteordevelopment/meteorclient/utils/misc/input/KeyBinds.java index 6830326c87..ca346284ad 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/misc/input/KeyBinds.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/misc/input/KeyBinds.java @@ -11,16 +11,22 @@ import org.lwjgl.glfw.GLFW; public class KeyBinds { - private static final KeyBinding.Category CATEGORY = KeyBinding.Category.create(MeteorClient.identifier("meteor-client")); + /** + * see {@link meteordevelopment.meteorclient.mixin.KeyBindingCategoryMixin} + */ + private static final KeyBinding.Category CATEGORY = KeyBinding.Category.create(MeteorClient.identifier("meteor.key.category")); - public static KeyBinding OPEN_GUI = new KeyBinding("key.meteor-client.open-gui", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_RIGHT_SHIFT, CATEGORY); - public static KeyBinding OPEN_COMMANDS = new KeyBinding("key.meteor-client.open-commands", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_PERIOD, CATEGORY); + /** + * see {@link meteordevelopment.meteorclient.mixin.ControlListWidgetMixin} + */ + public static KeyBinding OPEN_GUI = new KeyBinding("meteor.key.open-gui", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_RIGHT_SHIFT, CATEGORY); + public static KeyBinding OPEN_COMMANDS = new KeyBinding("meteor.key.open-commands", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_PERIOD, CATEGORY); private KeyBinds() { } public static KeyBinding[] apply(KeyBinding[] binds) { - // Add key binding + // Add key bindings KeyBinding[] newBinds = new KeyBinding[binds.length + 2]; System.arraycopy(binds, 0, newBinds, 0, binds.length); diff --git a/src/main/resources/assets/meteor-client/lang/en_gb.json b/src/main/resources/assets/meteor-client/lang/en_gb.json deleted file mode 100644 index 7b02207810..0000000000 --- a/src/main/resources/assets/meteor-client/lang/en_gb.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "key.meteor-client.open-gui": "Open GUI", - "key.meteor-client.open-commands": "Open Commands", - "key.category.meteor-client.meteor-client": "Meteor Client" -} diff --git a/src/main/resources/assets/meteor-client/lang/en_us.json b/src/main/resources/assets/meteor-client/lang/en_us.json deleted file mode 100644 index 7b02207810..0000000000 --- a/src/main/resources/assets/meteor-client/lang/en_us.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "key.meteor-client.open-gui": "Open GUI", - "key.meteor-client.open-commands": "Open Commands", - "key.category.meteor-client.meteor-client": "Meteor Client" -} diff --git a/src/main/resources/assets/meteor-client/lang/hi_in.json b/src/main/resources/assets/meteor-client/lang/hi_in.json deleted file mode 100644 index 991dfbf4ee..0000000000 --- a/src/main/resources/assets/meteor-client/lang/hi_in.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "key.meteor-client.open-gui": "GUI खोलें", - "key.meteor-client.open-commands": "कमांड खोलें" -} diff --git a/src/main/resources/assets/meteor-client/lang/pt_br.json b/src/main/resources/assets/meteor-client/lang/pt_br.json deleted file mode 100644 index 0056869be4..0000000000 --- a/src/main/resources/assets/meteor-client/lang/pt_br.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "key.meteor-client.open-gui": "Abrir Menu", - "key.meteor-client.open-commands": "Abrir Comandos" -} diff --git a/src/main/resources/assets/meteor-client/lang/vi_vn.json b/src/main/resources/assets/meteor-client/lang/vi_vn.json deleted file mode 100644 index 86372f9041..0000000000 --- a/src/main/resources/assets/meteor-client/lang/vi_vn.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "key.meteor-client.open-gui": "Mở giao diện", - "key.meteor-client.open-commands": "Mở lệnh" -} diff --git a/src/main/resources/assets/meteor-client/lang/zh_cn.json b/src/main/resources/assets/meteor-client/lang/zh_cn.json deleted file mode 100644 index 4c1eaa1207..0000000000 --- a/src/main/resources/assets/meteor-client/lang/zh_cn.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "key.meteor-client.open-gui": "打开GUI", - "key.meteor-client.open-commands": "输入命令" -} diff --git a/src/main/resources/assets/meteor-client/language/en_gb.json b/src/main/resources/assets/meteor-client/language/en_gb.json new file mode 100644 index 0000000000..7dc5eb6bfc --- /dev/null +++ b/src/main/resources/assets/meteor-client/language/en_gb.json @@ -0,0 +1,5 @@ +{ + "meteor.key.category": "Meteor Client", + "meteor.key.open-gui": "Open GUI", + "meteor.key.open-commands": "Open Commands" +} diff --git a/src/main/resources/assets/meteor-client/language/en_us.json b/src/main/resources/assets/meteor-client/language/en_us.json new file mode 100644 index 0000000000..7dc5eb6bfc --- /dev/null +++ b/src/main/resources/assets/meteor-client/language/en_us.json @@ -0,0 +1,5 @@ +{ + "meteor.key.category": "Meteor Client", + "meteor.key.open-gui": "Open GUI", + "meteor.key.open-commands": "Open Commands" +} diff --git a/src/main/resources/assets/meteor-client/language/hi_in.json b/src/main/resources/assets/meteor-client/language/hi_in.json new file mode 100644 index 0000000000..563d10c7b6 --- /dev/null +++ b/src/main/resources/assets/meteor-client/language/hi_in.json @@ -0,0 +1,4 @@ +{ + "meteor.key.open-gui": "GUI खोलें", + "meteor.key.open-commands": "कमांड खोलें" +} diff --git a/src/main/resources/assets/meteor-client/language/pt_br.json b/src/main/resources/assets/meteor-client/language/pt_br.json new file mode 100644 index 0000000000..8a593c9df3 --- /dev/null +++ b/src/main/resources/assets/meteor-client/language/pt_br.json @@ -0,0 +1,4 @@ +{ + "meteor.key.open-gui": "Abrir Menu", + "meteor.key.open-commands": "Abrir Comandos" +} diff --git a/src/main/resources/assets/meteor-client/language/vi_vn.json b/src/main/resources/assets/meteor-client/language/vi_vn.json new file mode 100644 index 0000000000..eec2d74d6c --- /dev/null +++ b/src/main/resources/assets/meteor-client/language/vi_vn.json @@ -0,0 +1,4 @@ +{ + "meteor.key.open-gui": "Mở giao diện", + "meteor.key.open-commands": "Mở lệnh" +} diff --git a/src/main/resources/assets/meteor-client/language/zh_cn.json b/src/main/resources/assets/meteor-client/language/zh_cn.json new file mode 100644 index 0000000000..6ca1f878e0 --- /dev/null +++ b/src/main/resources/assets/meteor-client/language/zh_cn.json @@ -0,0 +1,4 @@ +{ + "meteor.key.open-gui": "打开GUI", + "meteor.key.open-commands": "输入命令" +} diff --git a/src/main/resources/meteor-client.mixins.json b/src/main/resources/meteor-client.mixins.json index 039572d42c..991ca13042 100644 --- a/src/main/resources/meteor-client.mixins.json +++ b/src/main/resources/meteor-client.mixins.json @@ -14,7 +14,6 @@ "AbstractFurnaceScreenMixin", "AbstractSignBlockEntityRendererMixin", "AbstractSignEditScreenAccessor", - "AbstractSignEditScreenMixin", "ArmorFeatureRendererMixin", "BakedQuadMixin", "BannerBlockEntityRendererMixin", @@ -67,6 +66,7 @@ "ConnectScreenMixin", "ContainerComponentAccessor", "ContainerComponentMixin", + "ControlListWidgetMixin", "CrashReportMixin", "CreativeInventoryScreenAccessor", "CreativeSlotMixin", @@ -116,8 +116,10 @@ "ItemRenderStateAccessor", "ItemStackMixin", "KeyBindingAccessor", + "KeyBindingCategoryMixin", "KeyboardInputMixin", "KeyboardMixin", + "LanguageManagerMixin", "LayerRenderStateAccessor", "LightmapTextureManagerMixin", "LightningEntityRendererMixin", From 49a2a44f3233e65d23f556454d8e13467747bc87 Mon Sep 17 00:00:00 2001 From: Wide_Cat Date: Mon, 3 Nov 2025 01:35:09 +0000 Subject: [PATCH 02/52] Add a method for addons to provide their own language files to be used by the translation system --- .../meteorclient/addons/MeteorAddon.java | 11 +++ .../utils/misc/MeteorTranslations.java | 83 ++++++++++++++----- 2 files changed, 72 insertions(+), 22 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/addons/MeteorAddon.java b/src/main/java/meteordevelopment/meteorclient/addons/MeteorAddon.java index 8499e60521..c89f917b67 100644 --- a/src/main/java/meteordevelopment/meteorclient/addons/MeteorAddon.java +++ b/src/main/java/meteordevelopment/meteorclient/addons/MeteorAddon.java @@ -7,6 +7,8 @@ import meteordevelopment.meteorclient.utils.render.color.Color; +import java.io.InputStream; + public abstract class MeteorAddon { /** This field is automatically assigned from fabric.mod.json file. */ public String name; @@ -34,4 +36,13 @@ public GithubRepo getRepo() { public String getCommit() { return null; } + + /** + * @param lang A language code in lowercase + * @return An InputStream for the relevant json translation file, or null if the addon doesn't have + * a file for that language. + */ + public InputStream provideLanguage(String lang) { + return null; + } } diff --git a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java index da77e861aa..f75cb38a19 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java @@ -7,7 +7,10 @@ import com.google.gson.Gson; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; import meteordevelopment.meteorclient.MeteorClient; +import meteordevelopment.meteorclient.addons.AddonManager; +import meteordevelopment.meteorclient.addons.MeteorAddon; import meteordevelopment.meteorclient.utils.PreInit; import net.minecraft.client.resource.language.ReorderingUtil; import net.minecraft.text.OrderedText; @@ -25,11 +28,10 @@ public class MeteorTranslations { private static final Gson GSON = new Gson(); - private static Map languages; + private static final Map languages = new Object2ObjectOpenHashMap<>(); @PreInit - public static void init() { - languages = new Object2ObjectOpenHashMap<>(); + public static void preInit() { List toLoad = new ArrayList<>(2); toLoad.add("en_us"); if (!mc.options.language.equalsIgnoreCase("en_us")) toLoad.add(mc.options.language); @@ -39,34 +41,47 @@ public static void init() { } } - public static void loadLanguage(String language) { - language = language.toLowerCase(); - if (languages.containsKey(language)) return; + public static void loadLanguage(String languageCode) { + languageCode = languageCode.toLowerCase(); + if (languages.containsKey(languageCode)) return; - try (InputStream stream = MeteorTranslations.class.getResourceAsStream("/assets/meteor-client/language/" + language + ".json")) { + try (InputStream stream = MeteorTranslations.class.getResourceAsStream("/assets/meteor-client/language/" + languageCode + ".json")) { if (stream == null) { - if (language.equals("en_us")) throw new RuntimeException("Error loading the default language"); - else MeteorClient.LOG.error("Error loading language: {}", language); + if (languageCode.equals("en_us")) throw new RuntimeException("Error loading the default language"); + else MeteorClient.LOG.info("No language file found for '{}'", languageCode); return; } // noinspection unchecked Object2ObjectOpenHashMap map = GSON.fromJson(new InputStreamReader(stream), Object2ObjectOpenHashMap.class); - languages.put(language, new MeteorLanguage(map)); + languages.put(languageCode, new MeteorLanguage(map)); - MeteorClient.LOG.info("Loaded language: {}", language); + MeteorClient.LOG.info("Loaded language: {}", languageCode); } catch (IOException e) { - if (language.equals("en_us")) throw new RuntimeException(e); - else MeteorClient.LOG.error("Error loading language: {}", language, e); + if (languageCode.equals("en_us")) throw new RuntimeException(e); + else MeteorClient.LOG.error("Error loading language: {}", languageCode, e); } - } - public static String translate(String key) { - if (!key.startsWith("meteor.")) key = "meteor." + key; - return _translate(key); + for (MeteorAddon addon : AddonManager.ADDONS) { + if (addon == MeteorClient.ADDON) continue; + + try (InputStream stream = addon.provideLanguage(languageCode)) { + if (stream == null) continue; + MeteorLanguage lang = languages.getOrDefault(languageCode, new MeteorLanguage()); + + // noinspection unchecked + Object2ObjectOpenHashMap map = GSON.fromJson(new InputStreamReader(stream), Object2ObjectOpenHashMap.class); + lang.addCustomTranslation(map); + languages.put(languageCode, lang); + + MeteorClient.LOG.info("Loaded language {} from addon {}", languageCode, addon.name); + } catch (IOException e) { + MeteorClient.LOG.error("Error loading language {} from addon {}", languageCode, addon.name, e); + } + } } - private static String _translate(String key) { + public static String translate(String key) { MeteorLanguage currentLang = getCurrentLanguage(); return currentLang.hasTranslation(key) ? currentLang.get(key) : getDefaultLanguage().get(key); } @@ -76,7 +91,7 @@ public static MeteorLanguage getLanguage(String lang) { } public static MeteorLanguage getCurrentLanguage() { - return languages.get(mc.options.language.toLowerCase()); + return languages.getOrDefault(mc.options.language.toLowerCase(), getDefaultLanguage()); } public static MeteorLanguage getDefaultLanguage() { @@ -85,19 +100,43 @@ public static MeteorLanguage getDefaultLanguage() { public static class MeteorLanguage extends Language { private final Map translations; + private final List> customTranslations = new ObjectArrayList<>(); + + public MeteorLanguage() { + this.translations = new Object2ObjectOpenHashMap<>(); + } public MeteorLanguage(Map translations) { this.translations = translations; } + @SuppressWarnings("unused") + public void addCustomTranslation(Map customTranslation) { + if (customTranslations.contains(customTranslation)) return; + + customTranslations.add(customTranslation); + } + @Override public String get(String key, String fallback) { - return translations.getOrDefault(key, fallback); + if (translations.containsKey(key)) return translations.get(key); + + for (Map customTranslation : customTranslations) { + if (customTranslation.containsKey(key)) return customTranslation.get(key); + } + + return fallback; } @Override - public boolean hasTranslation(String key){ - return translations.containsKey(key); + public boolean hasTranslation(String key) { + if (translations.containsKey(key)) return true; + + for (Map customTranslation : customTranslations) { + if (customTranslation.containsKey(key)) return true; + } + + return false; } @Override From e5afd008af7a401e52a5d6e70221fa7bccf550c3 Mon Sep 17 00:00:00 2001 From: Wide_Cat Date: Mon, 3 Nov 2025 01:59:20 +0000 Subject: [PATCH 03/52] Fix loading addon translations and add more documentation --- .../meteorclient/addons/MeteorAddon.java | 13 +++++++++++++ .../utils/misc/MeteorTranslations.java | 14 +++++++------- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/addons/MeteorAddon.java b/src/main/java/meteordevelopment/meteorclient/addons/MeteorAddon.java index c89f917b67..7ae5918d6f 100644 --- a/src/main/java/meteordevelopment/meteorclient/addons/MeteorAddon.java +++ b/src/main/java/meteordevelopment/meteorclient/addons/MeteorAddon.java @@ -38,6 +38,19 @@ public String getCommit() { } /** + * Example implementation: + *
{@code
+     *  @Override
+     *  public InputStream provideLanguage(String lang) {
+     *      return Addon.class.getResourceAsStream("/assets/addon-name/language/" + lang + ".json")
+     *  }
+     * }
+     * 

+ * + * Addons should not store their language files in the /assets/xxx/lang/ path as it opens up users to detection + * by servers via the translation exploit. + * Storing them anywhere else should prevent them from getting picked up via the vanilla resource loader. + * * @param lang A language code in lowercase * @return An InputStream for the relevant json translation file, or null if the addon doesn't have * a file for that language. diff --git a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java index f75cb38a19..c2142b5823 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java @@ -26,6 +26,7 @@ import static meteordevelopment.meteorclient.MeteorClient.mc; +@SuppressWarnings("unused") public class MeteorTranslations { private static final Gson GSON = new Gson(); private static final Map languages = new Object2ObjectOpenHashMap<>(); @@ -49,14 +50,14 @@ public static void loadLanguage(String languageCode) { if (stream == null) { if (languageCode.equals("en_us")) throw new RuntimeException("Error loading the default language"); else MeteorClient.LOG.info("No language file found for '{}'", languageCode); - return; } + else { + // noinspection unchecked + Object2ObjectOpenHashMap map = GSON.fromJson(new InputStreamReader(stream), Object2ObjectOpenHashMap.class); + languages.put(languageCode, new MeteorLanguage(map)); - // noinspection unchecked - Object2ObjectOpenHashMap map = GSON.fromJson(new InputStreamReader(stream), Object2ObjectOpenHashMap.class); - languages.put(languageCode, new MeteorLanguage(map)); - - MeteorClient.LOG.info("Loaded language: {}", languageCode); + MeteorClient.LOG.info("Loaded language: {}", languageCode); + } } catch (IOException e) { if (languageCode.equals("en_us")) throw new RuntimeException(e); else MeteorClient.LOG.error("Error loading language: {}", languageCode, e); @@ -110,7 +111,6 @@ public MeteorLanguage(Map translations) { this.translations = translations; } - @SuppressWarnings("unused") public void addCustomTranslation(Map customTranslation) { if (customTranslations.contains(customTranslation)) return; From f4035ea5962bae1efd40d3586af8920058865577 Mon Sep 17 00:00:00 2001 From: Wide_Cat Date: Mon, 3 Nov 2025 14:30:22 +0000 Subject: [PATCH 04/52] Extract command descriptions into translatable components --- .../meteorclient/commands/Command.java | 14 ++++++- .../commands/commands/BindCommand.java | 2 +- .../commands/commands/BindsCommand.java | 2 +- .../commands/commands/DismountCommand.java | 2 +- .../commands/commands/DropCommand.java | 2 +- .../commands/commands/EnchantCommand.java | 2 +- .../commands/commands/FakePlayerCommand.java | 2 +- .../commands/commands/FovCommand.java | 2 +- .../commands/commands/FriendsCommand.java | 2 +- .../commands/commands/GiveCommand.java | 2 +- .../commands/commands/HClipCommand.java | 2 +- .../commands/commands/InputCommand.java | 2 +- .../commands/commands/MacroCommand.java | 2 +- .../commands/commands/NbtCommand.java | 2 +- .../commands/commands/NotebotCommand.java | 2 +- .../commands/commands/PeekCommand.java | 2 +- .../commands/commands/ProfilesCommand.java | 2 +- .../commands/commands/ReloadCommand.java | 2 +- .../commands/commands/ResetCommand.java | 2 +- .../commands/commands/RotationCommand.java | 2 +- .../commands/commands/SayCommand.java | 2 +- .../commands/commands/ServerCommand.java | 2 +- .../commands/commands/SpectateCommand.java | 2 +- .../commands/commands/SwarmCommand.java | 2 +- .../commands/commands/VClipCommand.java | 2 +- .../commands/commands/WaspCommand.java | 2 +- .../utils/misc/MeteorTranslations.java | 7 +++- .../assets/meteor-client/language/en_gb.json | 41 ++++++++++++++++++- .../assets/meteor-client/language/en_us.json | 41 ++++++++++++++++++- 29 files changed, 123 insertions(+), 30 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/commands/Command.java b/src/main/java/meteordevelopment/meteorclient/commands/Command.java index 18fea76782..c61ffc4357 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/Command.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/Command.java @@ -12,6 +12,7 @@ import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.systems.config.Config; import meteordevelopment.meteorclient.utils.Utils; +import meteordevelopment.meteorclient.utils.misc.MeteorTranslations; import meteordevelopment.meteorclient.utils.player.ChatUtils; import net.minecraft.client.MinecraftClient; import net.minecraft.command.CommandRegistryAccess; @@ -32,13 +33,22 @@ public abstract class Command { private final String description; private final List aliases; + // todo remove in the next minecraft version update + @Deprecated(forRemoval = true) public Command(String name, String description, String... aliases) { this.name = name; this.title = Utils.nameToTitle(name); - this.description = description; + this.description = "meteor.command." + name + ".description"; this.aliases = List.of(aliases); } + public Command(String name) { + this.name = name; + this.title = Utils.nameToTitle(name); + this.description = "meteor.command." + name + ".description"; + this.aliases = List.of(); + } + // Helper methods to painlessly infer the CommandSource generic type argument protected static RequiredArgumentBuilder argument(final String name, final ArgumentType type) { return RequiredArgumentBuilder.argument(name, type); @@ -66,7 +76,7 @@ public String getName() { } public String getDescription() { - return description; + return MeteorTranslations.translate(description); } public List getAliases() { diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/BindCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/BindCommand.java index 3ef50aa80d..98302c02fd 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/BindCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/BindCommand.java @@ -14,7 +14,7 @@ public class BindCommand extends Command { public BindCommand() { - super("bind", "Binds a specified module to the next pressed key."); + super("bind"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/BindsCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/BindsCommand.java index 0bc90a5ea4..d21e6352d7 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/BindsCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/BindsCommand.java @@ -21,7 +21,7 @@ public class BindsCommand extends Command { public BindsCommand() { - super("binds", "List of all bound modules."); + super("binds"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/DismountCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/DismountCommand.java index 1cbdfb84cd..78253c2e8c 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/DismountCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/DismountCommand.java @@ -13,7 +13,7 @@ public class DismountCommand extends Command { public DismountCommand() { - super("dismount", "Dismounts you from entity you are riding."); + super("dismount"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/DropCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/DropCommand.java index 4816bedd09..e6d7c202c4 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/DropCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/DropCommand.java @@ -26,7 +26,7 @@ public class DropCommand extends Command { private static final SimpleCommandExceptionType NO_SUCH_ITEM = new SimpleCommandExceptionType(Text.literal("Could not find an item with that name!")); public DropCommand() { - super("drop", "Automatically drops specified items."); + super("drop"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/EnchantCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/EnchantCommand.java index 7eb9e6b584..6d4f03279a 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/EnchantCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/EnchantCommand.java @@ -28,7 +28,7 @@ public class EnchantCommand extends Command { private static final SimpleCommandExceptionType NOT_HOLDING_ITEM = new SimpleCommandExceptionType(Text.literal("You need to hold some item to enchant.")); public EnchantCommand() { - super("enchant", "Enchants the item in your hand. REQUIRES Creative mode."); + super("enchant"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/FakePlayerCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/FakePlayerCommand.java index 5374e1f503..8806330029 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/FakePlayerCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/FakePlayerCommand.java @@ -18,7 +18,7 @@ public class FakePlayerCommand extends Command { public FakePlayerCommand() { - super("fake-player", "Manages fake players that you can use for testing."); + super("fake-player"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/FovCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/FovCommand.java index dd612d030a..bf5aef1948 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/FovCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/FovCommand.java @@ -13,7 +13,7 @@ public class FovCommand extends Command { public FovCommand() { - super("fov", "Changes your fov."); + super("fov"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/FriendsCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/FriendsCommand.java index 23ae209cad..84d12f56c6 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/FriendsCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/FriendsCommand.java @@ -18,7 +18,7 @@ public class FriendsCommand extends Command { public FriendsCommand() { - super("friends", "Manages friends."); + super("friends"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/GiveCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/GiveCommand.java index 94150a58b7..fa802ede81 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/GiveCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/GiveCommand.java @@ -23,7 +23,7 @@ public class GiveCommand extends Command { private final static SimpleCommandExceptionType NO_SPACE = new SimpleCommandExceptionType(Text.literal("No space in hotbar.")); public GiveCommand() { - super("give", "Gives you any item."); + super("give"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/HClipCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/HClipCommand.java index 2af1daa8f3..11528ac7cf 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/HClipCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/HClipCommand.java @@ -14,7 +14,7 @@ public class HClipCommand extends Command { public HClipCommand() { - super("hclip", "Lets you clip through blocks horizontally."); + super("hclip"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/InputCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/InputCommand.java index e453767910..c16e3745da 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/InputCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/InputCommand.java @@ -41,7 +41,7 @@ public class InputCommand extends Command { ); public InputCommand() { - super("input", "Keyboard input simulation."); + super("input"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/MacroCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/MacroCommand.java index 074c9eae8d..22c899af11 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/MacroCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/MacroCommand.java @@ -21,7 +21,7 @@ public class MacroCommand extends Command { public MacroCommand() { - super("macro", "Allows you to execute macros."); + super("macro"); MeteorClient.EVENT_BUS.subscribe(this); } diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/NbtCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/NbtCommand.java index 1eea843b3a..667b28c421 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/NbtCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/NbtCommand.java @@ -51,7 +51,7 @@ public class NbtCommand extends Command { ))); public NbtCommand() { - super("nbt", "Modifies NBT data for an item, example: .nbt add {display:{Name:'{\"text\":\"$cRed Name\"}'}}"); + super("nbt"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/NotebotCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/NotebotCommand.java index ee791ce2fc..cf6822fb2e 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/NotebotCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/NotebotCommand.java @@ -41,7 +41,7 @@ public class NotebotCommand extends Command { private final Map> song = new HashMap<>(); // tick -> notes public NotebotCommand() { - super("notebot", "Allows you load notebot files"); + super("notebot"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/PeekCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/PeekCommand.java index 52e9761622..77d2ac6dcf 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/PeekCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/PeekCommand.java @@ -19,7 +19,7 @@ public class PeekCommand extends Command { private static final SimpleCommandExceptionType CANT_PEEK = new SimpleCommandExceptionType(Text.literal("You must be holding a storage block or looking at an item frame.")); public PeekCommand() { - super("peek", "Lets you see what's inside storage block items."); + super("peek"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/ProfilesCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/ProfilesCommand.java index 43c816f1c1..fa5ccf9412 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/ProfilesCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/ProfilesCommand.java @@ -15,7 +15,7 @@ public class ProfilesCommand extends Command { public ProfilesCommand() { - super("profiles", "Loads and saves profiles."); + super("profiles"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/ReloadCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/ReloadCommand.java index f299819854..3e7304c5a8 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/ReloadCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/ReloadCommand.java @@ -17,7 +17,7 @@ public class ReloadCommand extends Command { public ReloadCommand() { - super("reload", "Reloads many systems."); + super("reload"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/ResetCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/ResetCommand.java index 3377b7d7e1..d5cd90994e 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/ResetCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/ResetCommand.java @@ -19,7 +19,7 @@ public class ResetCommand extends Command { public ResetCommand() { - super("reset", "Resets specified settings."); + super("reset"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/RotationCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/RotationCommand.java index d9b3be2622..ec0aa00d1b 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/RotationCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/RotationCommand.java @@ -15,7 +15,7 @@ public class RotationCommand extends Command { public RotationCommand() { - super("rotation", "Modifies your rotation."); + super("rotation"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/SayCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/SayCommand.java index 102bc003fe..298a3512c0 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/SayCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/SayCommand.java @@ -23,7 +23,7 @@ public class SayCommand extends Command { public SayCommand() { - super("say", "Sends messages in chat."); + super("say"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/ServerCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/ServerCommand.java index c8441e85c0..969cdaa8b8 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/ServerCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/ServerCommand.java @@ -50,7 +50,7 @@ public class ServerCommand extends Command { public ServerCommand() { - super("server", "Prints server information"); + super("server"); MeteorClient.EVENT_BUS.subscribe(this); } diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/SpectateCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/SpectateCommand.java index d54ed7cce9..deefaa9f60 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/SpectateCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/SpectateCommand.java @@ -21,7 +21,7 @@ public class SpectateCommand extends Command { private final StaticListener shiftListener = new StaticListener(); public SpectateCommand() { - super("spectate", "Allows you to spectate nearby players"); + super("spectate"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/SwarmCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/SwarmCommand.java index 555b73793d..1b39b2b3d9 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/SwarmCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/SwarmCommand.java @@ -43,7 +43,7 @@ public class SwarmCommand extends Command { private @Nullable ObjectIntPair pendingConnection; public SwarmCommand() { - super("swarm", "Sends commands to connected swarm workers."); + super("swarm"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/VClipCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/VClipCommand.java index 13124e5a54..d1ee18751c 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/VClipCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/VClipCommand.java @@ -14,7 +14,7 @@ public class VClipCommand extends Command { public VClipCommand() { - super("vclip", "Lets you clip through blocks vertically."); + super("vclip"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/WaspCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/WaspCommand.java index 1b3fb81e6a..d5d9fb15eb 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/WaspCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/WaspCommand.java @@ -19,7 +19,7 @@ public class WaspCommand extends Command { private static final SimpleCommandExceptionType CANT_WASP_SELF = new SimpleCommandExceptionType(Text.literal("You cannot target yourself!")); public WaspCommand() { - super("wasp", "Sets the auto wasp target."); + super("wasp"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java index c2142b5823..9558feba87 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java @@ -84,7 +84,12 @@ public static void loadLanguage(String languageCode) { public static String translate(String key) { MeteorLanguage currentLang = getCurrentLanguage(); - return currentLang.hasTranslation(key) ? currentLang.get(key) : getDefaultLanguage().get(key); + return currentLang.get(key, getDefaultLanguage().get(key)); + } + + public static String translate(String key, String fallback) { + MeteorLanguage currentLang = getCurrentLanguage(); + return currentLang.get(key, getDefaultLanguage().get(key, fallback)); } public static MeteorLanguage getLanguage(String lang) { diff --git a/src/main/resources/assets/meteor-client/language/en_gb.json b/src/main/resources/assets/meteor-client/language/en_gb.json index 7dc5eb6bfc..03d3bb501e 100644 --- a/src/main/resources/assets/meteor-client/language/en_gb.json +++ b/src/main/resources/assets/meteor-client/language/en_gb.json @@ -1,5 +1,44 @@ { "meteor.key.category": "Meteor Client", "meteor.key.open-gui": "Open GUI", - "meteor.key.open-commands": "Open Commands" + "meteor.key.open-commands": "Open Commands", + + "meteor.command.bind.description": "Binds a specified module to the next pressed key.", + "meteor.command.binds.description": "List of all bound modules.", + "meteor.command.commands.description": "List of all commands.", + "meteor.command.damage.description": "Damages self.", + "meteor.command.disconnect.description": "Disconnect from the server", + "meteor.command.dismount.description": "Dismounts you from entity you are riding.", + "meteor.command.drop.description": "Automatically drops specified items.", + "meteor.command.enchant.description": "Enchants the item in your hand. REQUIRES Creative mode.", + "meteor.command.ender-chest.description": "Allows you to preview memory of your ender chest.", + "meteor.command.fake-player.description": "Manages fake players that you can use for testing.", + "meteor.command.fov.description": "Changes your fov.", + "meteor.command.friends.description": "Manages friends.", + "meteor.command.gamemode.description": "Changes your gamemode client-side.", + "meteor.command.give.description": "Gives you any item.", + "meteor.command.hclip.description": "Lets you clip through blocks horizontally.", + "meteor.command.input.description": "Keyboard input simulation.", + "meteor.command.inventory.description": "Allows you to see parts of another player's inventory.", + "meteor.command.locate.description": "Locates structures", + "meteor.command.macro.description": "Allows you to execute macros.", + "meteor.command.modules.description": "Displays a list of all modules.", + "meteor.command.name-history.description": "Provides a list of a players previous names from the laby.net api", + "meteor.command.nbt.description": "Modifies NBT data for an item, example: .nbt add {display:{Name:'{\"text\":\"$cRed Name\"}'}}", + "meteor.command.notebot.description": "Allows you load notebot files", + "meteor.command.peek.description": "Lets you see what's inside storage block items.", + "meteor.command.profiles.description": "Loads and saves profiles.", + "meteor.command.reload.description": "Reloads many systems.", + "meteor.command.reset.description": "Resets specified settings.", + "meteor.command.rotation.description": "Modifies your rotation.", + "meteor.command.save-map.description": "Saves a map to an image.", + "meteor.command.say.description": "Sends messages in chat.", + "meteor.command.server.description": "Prints server information", + "meteor.command.hud.description": "Allows you to view and change module settings.", + "meteor.command.spectate.description": "Allows you to spectate nearby players", + "meteor.command.swarm.description": "Sends commands to connected swarm workers.", + "meteor.command.toggle.description": "Toggles a module.", + "meteor.command.vclip.description": "Lets you clip through blocks vertically.", + "meteor.command.wasp.description": "Sets the auto wasp target.", + "meteor.command.waypoint.description": "Manages waypoints." } diff --git a/src/main/resources/assets/meteor-client/language/en_us.json b/src/main/resources/assets/meteor-client/language/en_us.json index 7dc5eb6bfc..03d3bb501e 100644 --- a/src/main/resources/assets/meteor-client/language/en_us.json +++ b/src/main/resources/assets/meteor-client/language/en_us.json @@ -1,5 +1,44 @@ { "meteor.key.category": "Meteor Client", "meteor.key.open-gui": "Open GUI", - "meteor.key.open-commands": "Open Commands" + "meteor.key.open-commands": "Open Commands", + + "meteor.command.bind.description": "Binds a specified module to the next pressed key.", + "meteor.command.binds.description": "List of all bound modules.", + "meteor.command.commands.description": "List of all commands.", + "meteor.command.damage.description": "Damages self.", + "meteor.command.disconnect.description": "Disconnect from the server", + "meteor.command.dismount.description": "Dismounts you from entity you are riding.", + "meteor.command.drop.description": "Automatically drops specified items.", + "meteor.command.enchant.description": "Enchants the item in your hand. REQUIRES Creative mode.", + "meteor.command.ender-chest.description": "Allows you to preview memory of your ender chest.", + "meteor.command.fake-player.description": "Manages fake players that you can use for testing.", + "meteor.command.fov.description": "Changes your fov.", + "meteor.command.friends.description": "Manages friends.", + "meteor.command.gamemode.description": "Changes your gamemode client-side.", + "meteor.command.give.description": "Gives you any item.", + "meteor.command.hclip.description": "Lets you clip through blocks horizontally.", + "meteor.command.input.description": "Keyboard input simulation.", + "meteor.command.inventory.description": "Allows you to see parts of another player's inventory.", + "meteor.command.locate.description": "Locates structures", + "meteor.command.macro.description": "Allows you to execute macros.", + "meteor.command.modules.description": "Displays a list of all modules.", + "meteor.command.name-history.description": "Provides a list of a players previous names from the laby.net api", + "meteor.command.nbt.description": "Modifies NBT data for an item, example: .nbt add {display:{Name:'{\"text\":\"$cRed Name\"}'}}", + "meteor.command.notebot.description": "Allows you load notebot files", + "meteor.command.peek.description": "Lets you see what's inside storage block items.", + "meteor.command.profiles.description": "Loads and saves profiles.", + "meteor.command.reload.description": "Reloads many systems.", + "meteor.command.reset.description": "Resets specified settings.", + "meteor.command.rotation.description": "Modifies your rotation.", + "meteor.command.save-map.description": "Saves a map to an image.", + "meteor.command.say.description": "Sends messages in chat.", + "meteor.command.server.description": "Prints server information", + "meteor.command.hud.description": "Allows you to view and change module settings.", + "meteor.command.spectate.description": "Allows you to spectate nearby players", + "meteor.command.swarm.description": "Sends commands to connected swarm workers.", + "meteor.command.toggle.description": "Toggles a module.", + "meteor.command.vclip.description": "Lets you clip through blocks vertically.", + "meteor.command.wasp.description": "Sets the auto wasp target.", + "meteor.command.waypoint.description": "Manages waypoints." } From 5634110cf97284c6480998df34480eeb800df482 Mon Sep 17 00:00:00 2001 From: Wide_Cat Date: Mon, 3 Nov 2025 16:10:31 +0000 Subject: [PATCH 05/52] Add a text component for Meteor translations. Translations will be automatically updated when the user changes their language. --- .../meteorclient/commands/Command.java | 5 +- .../commands/commands/CommandsCommand.java | 3 +- .../utils/misc/MeteorTranslations.java | 21 ++++- .../text/MeteorTranslatableTextComponent.java | 76 +++++++++++++++++++ 4 files changed, 97 insertions(+), 8 deletions(-) create mode 100644 src/main/java/meteordevelopment/meteorclient/utils/misc/text/MeteorTranslatableTextComponent.java diff --git a/src/main/java/meteordevelopment/meteorclient/commands/Command.java b/src/main/java/meteordevelopment/meteorclient/commands/Command.java index c61ffc4357..ccb23d2edb 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/Command.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/Command.java @@ -12,7 +12,6 @@ import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.systems.config.Config; import meteordevelopment.meteorclient.utils.Utils; -import meteordevelopment.meteorclient.utils.misc.MeteorTranslations; import meteordevelopment.meteorclient.utils.player.ChatUtils; import net.minecraft.client.MinecraftClient; import net.minecraft.command.CommandRegistryAccess; @@ -33,7 +32,7 @@ public abstract class Command { private final String description; private final List aliases; - // todo remove in the next minecraft version update + // todo remove the description parameter in the next minecraft version update @Deprecated(forRemoval = true) public Command(String name, String description, String... aliases) { this.name = name; @@ -76,7 +75,7 @@ public String getName() { } public String getDescription() { - return MeteorTranslations.translate(description); + return description; } public List getAliases() { diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/CommandsCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/CommandsCommand.java index e35078c472..7202c01151 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/CommandsCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/CommandsCommand.java @@ -10,6 +10,7 @@ import meteordevelopment.meteorclient.commands.Commands; import meteordevelopment.meteorclient.systems.config.Config; import meteordevelopment.meteorclient.utils.Utils; +import meteordevelopment.meteorclient.utils.misc.text.MeteorTranslatableTextComponent; import meteordevelopment.meteorclient.utils.player.ChatUtils; import net.minecraft.command.CommandSource; import net.minecraft.text.ClickEvent; @@ -53,7 +54,7 @@ private MutableText getCommandText(Command command) { } tooltip.append(aliases.formatted(Formatting.GRAY)).append("\n\n"); - tooltip.append(Text.literal(command.getDescription()).formatted(Formatting.WHITE)); + tooltip.append(MutableText.of(new MeteorTranslatableTextComponent(command.getDescription())).formatted(Formatting.WHITE)); // Text MutableText text = Text.literal(Utils.nameToTitle(command.getName())); diff --git a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java index 9558feba87..4d6604b538 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java @@ -21,6 +21,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; +import java.util.IllegalFormatException; import java.util.List; import java.util.Map; @@ -82,14 +83,26 @@ public static void loadLanguage(String languageCode) { } } - public static String translate(String key) { + public static String translate(String key, Object... args) { MeteorLanguage currentLang = getCurrentLanguage(); - return currentLang.get(key, getDefaultLanguage().get(key)); + String translated = currentLang.get(key, getDefaultLanguage().get(key)); + + try { + return String.format(translated, args); + } catch (IllegalFormatException e) { + return key; + } } - public static String translate(String key, String fallback) { + public static String translate(String key, String fallback, Object... args) { MeteorLanguage currentLang = getCurrentLanguage(); - return currentLang.get(key, getDefaultLanguage().get(key, fallback)); + String translated = currentLang.get(key, getDefaultLanguage().get(key, fallback)); + + try { + return String.format(translated, args); + } catch (IllegalFormatException e) { + return fallback; + } } public static MeteorLanguage getLanguage(String lang) { diff --git a/src/main/java/meteordevelopment/meteorclient/utils/misc/text/MeteorTranslatableTextComponent.java b/src/main/java/meteordevelopment/meteorclient/utils/misc/text/MeteorTranslatableTextComponent.java new file mode 100644 index 0000000000..4313da34f4 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/utils/misc/text/MeteorTranslatableTextComponent.java @@ -0,0 +1,76 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.utils.misc.text; + +import com.mojang.serialization.MapCodec; +import meteordevelopment.meteorclient.utils.misc.MeteorTranslations; +import net.minecraft.text.StringVisitable; +import net.minecraft.text.Style; +import net.minecraft.text.TextContent; +import org.jetbrains.annotations.Nullable; + +import java.util.Arrays; +import java.util.Optional; + +import static meteordevelopment.meteorclient.MeteorClient.mc; + +public class MeteorTranslatableTextComponent implements TextContent { + private final String key; + @Nullable + private final String fallback; + private final Object[] args; + + private String translation; + private String cachedLanguage; + + public MeteorTranslatableTextComponent(String key, @Nullable String fallback, Object... args) { + this.key = key; + this.fallback = fallback; + this.args = args; + } + + public MeteorTranslatableTextComponent(String key) { + this(key, null); + } + + private void updateTranslations() { + if (!mc.options.language.equals(this.cachedLanguage)) { + cachedLanguage = mc.options.language; + translation = fallback == null ? MeteorTranslations.translate(key, args) : MeteorTranslations.translate(key, fallback, args); + } + } + + @Override + public Optional visit(StringVisitable.StyledVisitor visitor, Style style) { + updateTranslations(); + + return visitor.accept(style, translation); + } + + @Override + public Optional visit(StringVisitable.Visitor visitor) { + updateTranslations(); + + return visitor.accept(translation); + } + + @Override + public MapCodec getCodec() { + return null; + } + + @Override + public boolean equals(@Nullable Object o) { + if (this == o) return true; + if (!(o instanceof MeteorTranslatableTextComponent component)) return false; + return component.key.equals(this.key) && component.fallback.equals(this.fallback) && Arrays.equals(this.args, component.args); + } + + @Override + public String toString() { + return "MeteorTranslatableTextComponent[key=" + key + ", fallback=" + fallback + ", args=" + Arrays.toString(args) + "]"; + } +} From ffca0cb562c29474c2e66c2bbf9204c1837d9213 Mon Sep 17 00:00:00 2001 From: Wide_Cat Date: Thu, 6 Nov 2025 17:00:40 +0000 Subject: [PATCH 06/52] Assorted fixes and new additions Adds a label in the bottom right corner of the modules screen that can be clicked on to give translation information. --- .../meteorclient/MeteorClient.java | 10 ++++++ .../commands/commands/CommandsCommand.java | 4 +-- .../gui/screens/ModulesScreen.java | 31 +++++++++++++++++++ .../meteorclient/gui/widgets/WWidget.java | 2 +- .../utils/misc/MeteorTranslations.java | 24 +++++++++++--- .../text/MeteorTranslatableTextComponent.java | 7 +++-- .../assets/meteor-client/language/en_gb.json | 2 +- .../assets/meteor-client/language/en_us.json | 2 +- .../assets/meteor-client/language/hi_in.json | 2 ++ .../assets/meteor-client/language/pt_br.json | 2 ++ .../assets/meteor-client/language/vi_vn.json | 2 ++ .../assets/meteor-client/language/zh_cn.json | 2 ++ 12 files changed, 77 insertions(+), 13 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/MeteorClient.java b/src/main/java/meteordevelopment/meteorclient/MeteorClient.java index 2670ade9cc..f2ccda116b 100644 --- a/src/main/java/meteordevelopment/meteorclient/MeteorClient.java +++ b/src/main/java/meteordevelopment/meteorclient/MeteorClient.java @@ -27,6 +27,7 @@ import meteordevelopment.meteorclient.utils.misc.Version; import meteordevelopment.meteorclient.utils.misc.input.KeyAction; import meteordevelopment.meteorclient.utils.misc.input.KeyBinds; +import meteordevelopment.meteorclient.utils.misc.text.MeteorTranslatableTextComponent; import meteordevelopment.meteorclient.utils.network.OnlinePlayers; import meteordevelopment.orbit.EventBus; import meteordevelopment.orbit.EventHandler; @@ -37,6 +38,7 @@ import net.fabricmc.loader.api.metadata.ModMetadata; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.ChatScreen; +import net.minecraft.text.MutableText; import net.minecraft.util.Identifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -197,4 +199,12 @@ private void onOpenScreen(OpenScreenEvent event) { public static Identifier identifier(String path) { return Identifier.of(MeteorClient.MOD_ID, path); } + + public static MutableText translatable(String string, Object... args) { + return MutableText.of(new MeteorTranslatableTextComponent(string, args)); + } + + public static MutableText translatable(String string, String fallback, Object... args) { + return MutableText.of(new MeteorTranslatableTextComponent(string, fallback, args)); + } } diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/CommandsCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/CommandsCommand.java index 7202c01151..020fa30178 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/CommandsCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/CommandsCommand.java @@ -6,11 +6,11 @@ package meteordevelopment.meteorclient.commands.commands; import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.commands.Command; import meteordevelopment.meteorclient.commands.Commands; import meteordevelopment.meteorclient.systems.config.Config; import meteordevelopment.meteorclient.utils.Utils; -import meteordevelopment.meteorclient.utils.misc.text.MeteorTranslatableTextComponent; import meteordevelopment.meteorclient.utils.player.ChatUtils; import net.minecraft.command.CommandSource; import net.minecraft.text.ClickEvent; @@ -54,7 +54,7 @@ private MutableText getCommandText(Command command) { } tooltip.append(aliases.formatted(Formatting.GRAY)).append("\n\n"); - tooltip.append(MutableText.of(new MeteorTranslatableTextComponent(command.getDescription())).formatted(Formatting.WHITE)); + tooltip.append(MeteorClient.translatable(command.getDescription())).formatted(Formatting.WHITE); // Text MutableText text = Text.literal(Utils.nameToTitle(command.getName())); diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/ModulesScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/ModulesScreen.java index 02c9c0e33a..b953816a8b 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/ModulesScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/ModulesScreen.java @@ -9,6 +9,7 @@ import meteordevelopment.meteorclient.gui.tabs.TabScreen; import meteordevelopment.meteorclient.gui.tabs.Tabs; import meteordevelopment.meteorclient.gui.utils.Cell; +import meteordevelopment.meteorclient.gui.widgets.WLabel; import meteordevelopment.meteorclient.gui.widgets.containers.WContainer; import meteordevelopment.meteorclient.gui.widgets.containers.WSection; import meteordevelopment.meteorclient.gui.widgets.containers.WVerticalList; @@ -18,13 +19,17 @@ import meteordevelopment.meteorclient.systems.modules.Category; import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.meteorclient.systems.modules.Modules; +import meteordevelopment.meteorclient.utils.misc.MeteorTranslations; import meteordevelopment.meteorclient.utils.misc.NbtUtils; +import meteordevelopment.meteorclient.utils.render.prompts.YesNoPrompt; import net.minecraft.item.Items; +import net.minecraft.util.Util; import java.util.ArrayList; import java.util.List; import java.util.Set; +import static meteordevelopment.meteorclient.MeteorClient.mc; import static meteordevelopment.meteorclient.utils.Utils.getWindowHeight; import static meteordevelopment.meteorclient.utils.Utils.getWindowWidth; @@ -43,6 +48,32 @@ public void initWidgets() { WVerticalList help = add(theme.verticalList()).pad(4).bottom().widget(); help.add(theme.label("Left click - Toggle module")); help.add(theme.label("Right click - Open module settings")); + + // Translation info + if (MeteorTranslations.isEnglish()) return; + double t = MeteorTranslations.percentLocalised(); + + WLabel translation = add(theme.label(String.format("%.1f%% translated", t))).pad(4).bottom().right().widget(); + translation.tooltip = "Open translation info"; + translation.instantTooltips = true; + translation.action = () -> { + // people who translate deserve their names recognised for it + String translators = MeteorTranslations.translate("meteor.lang.translators", ""); + // todo switch this to master before we merge + String url = "https://github.com/MeteorDevelopment/meteor-client/blob/translations/src/main/resources/assets/meteor-client/language/" + mc.options.language.toLowerCase() + ".json"; + + YesNoPrompt prompt = YesNoPrompt.create(theme, this) + .title("Translation Information") + .message("The current language (%s) is currently %.1f%% translated.", mc.options.language, t); + + if (!translators.isEmpty()) prompt.message("Translation work done by: " + translators + ".\n"); + + prompt.message("") + .message("Do you want to open the language file for the current language?") + .onYes(() -> Util.getOperatingSystem().open(url)) + .dontShowAgainCheckboxVisible(false) + .show(); + }; } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/gui/widgets/WWidget.java b/src/main/java/meteordevelopment/meteorclient/gui/widgets/WWidget.java index c3286c2f36..a87b061696 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/widgets/WWidget.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/widgets/WWidget.java @@ -24,7 +24,7 @@ public abstract class WWidget implements BaseWidget { public String tooltip; public boolean mouseOver; - protected boolean instantTooltips; + public boolean instantTooltips; protected double mouseOverTimer; public void init() {} diff --git a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java index 4d6604b538..3b449ac3c7 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java @@ -117,16 +117,30 @@ public static MeteorLanguage getDefaultLanguage() { return languages.get("en_us"); } + /** + * @return what percentage of the current language has been localised compared to the default language + */ + public static double percentLocalised() { + // Right now there aren't enough differences between the english dialects to justify each having their own + // translation. Maybe that will change in the future. + if (isEnglish()) return 100; + + double currentLangSize = languages.getOrDefault(mc.options.language.toLowerCase(), new MeteorLanguage()).translations.size(); + return (currentLangSize / getDefaultLanguage().translations.size()) * 100; + } + + public static boolean isEnglish() { + return mc.options.language.toLowerCase().startsWith("en"); + } + public static class MeteorLanguage extends Language { - private final Map translations; + private final Map translations = new Object2ObjectOpenHashMap<>(); private final List> customTranslations = new ObjectArrayList<>(); - public MeteorLanguage() { - this.translations = new Object2ObjectOpenHashMap<>(); - } + public MeteorLanguage() {} public MeteorLanguage(Map translations) { - this.translations = translations; + this.translations.putAll(translations); } public void addCustomTranslation(Map customTranslation) { diff --git a/src/main/java/meteordevelopment/meteorclient/utils/misc/text/MeteorTranslatableTextComponent.java b/src/main/java/meteordevelopment/meteorclient/utils/misc/text/MeteorTranslatableTextComponent.java index 4313da34f4..10f568660e 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/misc/text/MeteorTranslatableTextComponent.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/misc/text/MeteorTranslatableTextComponent.java @@ -13,6 +13,7 @@ import org.jetbrains.annotations.Nullable; import java.util.Arrays; +import java.util.Objects; import java.util.Optional; import static meteordevelopment.meteorclient.MeteorClient.mc; @@ -32,8 +33,8 @@ public MeteorTranslatableTextComponent(String key, @Nullable String fallback, Ob this.args = args; } - public MeteorTranslatableTextComponent(String key) { - this(key, null); + public MeteorTranslatableTextComponent(String key, Object... args) { + this(key, null, args); } private void updateTranslations() { @@ -66,7 +67,7 @@ public MapCodec getCodec() { public boolean equals(@Nullable Object o) { if (this == o) return true; if (!(o instanceof MeteorTranslatableTextComponent component)) return false; - return component.key.equals(this.key) && component.fallback.equals(this.fallback) && Arrays.equals(this.args, component.args); + return Objects.equals(this.key, component.key) && Objects.equals(this.fallback, component.fallback) && Arrays.equals(this.args, component.args); } @Override diff --git a/src/main/resources/assets/meteor-client/language/en_gb.json b/src/main/resources/assets/meteor-client/language/en_gb.json index 03d3bb501e..ea3d85d40f 100644 --- a/src/main/resources/assets/meteor-client/language/en_gb.json +++ b/src/main/resources/assets/meteor-client/language/en_gb.json @@ -34,7 +34,7 @@ "meteor.command.save-map.description": "Saves a map to an image.", "meteor.command.say.description": "Sends messages in chat.", "meteor.command.server.description": "Prints server information", - "meteor.command.hud.description": "Allows you to view and change module settings.", + "meteor.command.settings.description": "Allows you to view and change module settings.", "meteor.command.spectate.description": "Allows you to spectate nearby players", "meteor.command.swarm.description": "Sends commands to connected swarm workers.", "meteor.command.toggle.description": "Toggles a module.", diff --git a/src/main/resources/assets/meteor-client/language/en_us.json b/src/main/resources/assets/meteor-client/language/en_us.json index 03d3bb501e..ea3d85d40f 100644 --- a/src/main/resources/assets/meteor-client/language/en_us.json +++ b/src/main/resources/assets/meteor-client/language/en_us.json @@ -34,7 +34,7 @@ "meteor.command.save-map.description": "Saves a map to an image.", "meteor.command.say.description": "Sends messages in chat.", "meteor.command.server.description": "Prints server information", - "meteor.command.hud.description": "Allows you to view and change module settings.", + "meteor.command.settings.description": "Allows you to view and change module settings.", "meteor.command.spectate.description": "Allows you to spectate nearby players", "meteor.command.swarm.description": "Sends commands to connected swarm workers.", "meteor.command.toggle.description": "Toggles a module.", diff --git a/src/main/resources/assets/meteor-client/language/hi_in.json b/src/main/resources/assets/meteor-client/language/hi_in.json index 563d10c7b6..47bce958f5 100644 --- a/src/main/resources/assets/meteor-client/language/hi_in.json +++ b/src/main/resources/assets/meteor-client/language/hi_in.json @@ -1,4 +1,6 @@ { + "meteor.lang.translators" : "devendrapoonia", + "meteor.key.open-gui": "GUI खोलें", "meteor.key.open-commands": "कमांड खोलें" } diff --git a/src/main/resources/assets/meteor-client/language/pt_br.json b/src/main/resources/assets/meteor-client/language/pt_br.json index 8a593c9df3..4a3ccf4e0f 100644 --- a/src/main/resources/assets/meteor-client/language/pt_br.json +++ b/src/main/resources/assets/meteor-client/language/pt_br.json @@ -1,4 +1,6 @@ { + "meteor.lang.translators": "Niix-Dan ", + "meteor.key.open-gui": "Abrir Menu", "meteor.key.open-commands": "Abrir Comandos" } diff --git a/src/main/resources/assets/meteor-client/language/vi_vn.json b/src/main/resources/assets/meteor-client/language/vi_vn.json index eec2d74d6c..dfd1122663 100644 --- a/src/main/resources/assets/meteor-client/language/vi_vn.json +++ b/src/main/resources/assets/meteor-client/language/vi_vn.json @@ -1,4 +1,6 @@ { + "meteor.lang.translators": "AnhNguyenlost13", + "meteor.key.open-gui": "Mở giao diện", "meteor.key.open-commands": "Mở lệnh" } diff --git a/src/main/resources/assets/meteor-client/language/zh_cn.json b/src/main/resources/assets/meteor-client/language/zh_cn.json index 6ca1f878e0..1a3140f140 100644 --- a/src/main/resources/assets/meteor-client/language/zh_cn.json +++ b/src/main/resources/assets/meteor-client/language/zh_cn.json @@ -1,4 +1,6 @@ { + "meteor.lang.translators": "Wuqibor, Enaium", + "meteor.key.open-gui": "打开GUI", "meteor.key.open-commands": "输入命令" } From c32946813ded3dd0d407ab1f4c315039bf49e698 Mon Sep 17 00:00:00 2001 From: Wide_Cat Date: Thu, 13 Nov 2025 21:08:07 +0000 Subject: [PATCH 07/52] Moved more strings from commands into the translation files This includes command exceptions and info/warning/error messages. Still more to be done for commands. This is a bit of a rough draft, if you have any ideas on how better to name or format this, open an issue or message me. --- .../meteorclient/MeteorClient.java | 8 ++-- .../meteorclient/commands/Command.java | 26 +++++++----- .../commands/commands/CommandsCommand.java | 3 +- .../commands/commands/DisconnectCommand.java | 2 +- .../commands/commands/DropCommand.java | 12 +++--- .../commands/commands/EnchantCommand.java | 6 +-- .../commands/commands/FakePlayerCommand.java | 7 ++-- .../commands/commands/GiveCommand.java | 6 +-- .../commands/commands/InputCommand.java | 14 +++---- .../commands/commands/MacroCommand.java | 8 ++-- .../commands/commands/NameHistoryCommand.java | 6 +-- .../commands/commands/ProfilesCommand.java | 6 +-- .../commands/commands/ReloadCommand.java | 2 +- .../commands/commands/SaveMapCommand.java | 40 +++++++++---------- .../commands/commands/WaspCommand.java | 6 +-- .../gui/screens/ModulesScreen.java | 2 +- .../mixin/ControlListWidgetMixin.java | 5 +-- .../mixin/KeyBindingCategoryMixin.java | 3 +- .../assets/meteor-client/language/en_gb.json | 32 ++++++++++++++- .../assets/meteor-client/language/en_us.json | 32 ++++++++++++++- .../assets/meteor-client/language/pt_br.json | 2 +- 21 files changed, 145 insertions(+), 83 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/MeteorClient.java b/src/main/java/meteordevelopment/meteorclient/MeteorClient.java index f2ccda116b..7fb667f368 100644 --- a/src/main/java/meteordevelopment/meteorclient/MeteorClient.java +++ b/src/main/java/meteordevelopment/meteorclient/MeteorClient.java @@ -200,11 +200,11 @@ public static Identifier identifier(String path) { return Identifier.of(MeteorClient.MOD_ID, path); } - public static MutableText translatable(String string, Object... args) { - return MutableText.of(new MeteorTranslatableTextComponent(string, args)); + public static MutableText translatable(String key, Object... args) { + return MutableText.of(new MeteorTranslatableTextComponent(key, args)); } - public static MutableText translatable(String string, String fallback, Object... args) { - return MutableText.of(new MeteorTranslatableTextComponent(string, fallback, args)); + public static MutableText translatable(String key, String fallback, Object... args) { + return MutableText.of(new MeteorTranslatableTextComponent(key, fallback, args)); } } diff --git a/src/main/java/meteordevelopment/meteorclient/commands/Command.java b/src/main/java/meteordevelopment/meteorclient/commands/Command.java index ccb23d2edb..424502a0be 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/Command.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/Command.java @@ -12,12 +12,14 @@ import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.systems.config.Config; import meteordevelopment.meteorclient.utils.Utils; +import meteordevelopment.meteorclient.utils.misc.MeteorTranslations; import meteordevelopment.meteorclient.utils.player.ChatUtils; import net.minecraft.client.MinecraftClient; import net.minecraft.command.CommandRegistryAccess; import net.minecraft.command.CommandSource; import net.minecraft.registry.BuiltinRegistries; import net.minecraft.server.command.CommandManager; +import net.minecraft.text.MutableText; import net.minecraft.text.Text; import java.util.List; @@ -29,23 +31,23 @@ public abstract class Command { private final String name; private final String title; - private final String description; private final List aliases; + public final String translationKey; // todo remove the description parameter in the next minecraft version update @Deprecated(forRemoval = true) public Command(String name, String description, String... aliases) { this.name = name; this.title = Utils.nameToTitle(name); - this.description = "meteor.command." + name + ".description"; this.aliases = List.of(aliases); + this.translationKey = "meteor.command." + name; } public Command(String name) { this.name = name; this.title = Utils.nameToTitle(name); - this.description = "meteor.command." + name + ".description"; this.aliases = List.of(); + this.translationKey = "meteor.command." + name; } // Helper methods to painlessly infer the CommandSource generic type argument @@ -74,10 +76,6 @@ public String getName() { return name; } - public String getDescription() { - return description; - } - public List getAliases() { return aliases; } @@ -99,16 +97,24 @@ public void info(Text message) { public void info(String message, Object... args) { ChatUtils.forceNextPrefixClass(getClass()); - ChatUtils.infoPrefix(title, message, args); + ChatUtils.infoPrefix(title, MeteorTranslations.translate(translationKey + ".info." + message, message, args)); } public void warning(String message, Object... args) { ChatUtils.forceNextPrefixClass(getClass()); - ChatUtils.warningPrefix(title, message, args); + ChatUtils.warningPrefix(title, MeteorTranslations.translate(translationKey + ".warning." + message, message, args)); } public void error(String message, Object... args) { ChatUtils.forceNextPrefixClass(getClass()); - ChatUtils.errorPrefix(title, message, args); + ChatUtils.errorPrefix(title, MeteorTranslations.translate(translationKey + ".error." + message, message, args)); + } + + public MutableText translatable(String string, Object... args) { + return MeteorClient.translatable(translationKey + "." + string, args); + } + + public MutableText translatable(String string, String fallback, Object... args) { + return MeteorClient.translatable(translationKey + "." + string, fallback, args); } } diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/CommandsCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/CommandsCommand.java index 020fa30178..ca08d56e89 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/CommandsCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/CommandsCommand.java @@ -6,7 +6,6 @@ package meteordevelopment.meteorclient.commands.commands; import com.mojang.brigadier.builder.LiteralArgumentBuilder; -import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.commands.Command; import meteordevelopment.meteorclient.commands.Commands; import meteordevelopment.meteorclient.systems.config.Config; @@ -54,7 +53,7 @@ private MutableText getCommandText(Command command) { } tooltip.append(aliases.formatted(Formatting.GRAY)).append("\n\n"); - tooltip.append(MeteorClient.translatable(command.getDescription())).formatted(Formatting.WHITE); + tooltip.append(translatable("description")).formatted(Formatting.WHITE); // Text MutableText text = Text.literal(Utils.nameToTitle(command.getName())); diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/DisconnectCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/DisconnectCommand.java index f43585276a..2ae2620ecf 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/DisconnectCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/DisconnectCommand.java @@ -21,7 +21,7 @@ public DisconnectCommand() { @Override public void build(LiteralArgumentBuilder builder) { builder.executes(context -> { - mc.player.networkHandler.onDisconnect(new DisconnectS2CPacket(Text.literal("%s[%sDisconnectCommand%s] Disconnected by user.".formatted(Formatting.GRAY, Formatting.BLUE, Formatting.GRAY)))); + mc.player.networkHandler.onDisconnect(new DisconnectS2CPacket(translatable("disconnection_message", Formatting.GRAY, Formatting.BLUE, Formatting.GRAY))); return SINGLE_SUCCESS; }); diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/DropCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/DropCommand.java index e6d7c202c4..e03c181216 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/DropCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/DropCommand.java @@ -10,6 +10,7 @@ import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; +import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.commands.Command; import meteordevelopment.meteorclient.utils.player.InvUtils; import net.minecraft.client.network.ClientPlayerEntity; @@ -19,11 +20,10 @@ import net.minecraft.entity.EquipmentSlot; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; -import net.minecraft.text.Text; public class DropCommand extends Command { - private static final SimpleCommandExceptionType NOT_SPECTATOR = new SimpleCommandExceptionType(Text.literal("Can't drop items while in spectator.")); - private static final SimpleCommandExceptionType NO_SUCH_ITEM = new SimpleCommandExceptionType(Text.literal("Could not find an item with that name!")); + private static final SimpleCommandExceptionType NOT_SPECTATOR = new SimpleCommandExceptionType(MeteorClient.translatable("meteor.command.drop.exception.not_spectator")); + private static final SimpleCommandExceptionType NO_SUCH_ITEM = new SimpleCommandExceptionType(MeteorClient.translatable("meteor.command.drop.exception.no_such_item")); public DropCommand() { super("drop"); @@ -70,9 +70,9 @@ public void build(LiteralArgumentBuilder builder) { // Specific item builder.then(argument("item", ItemStackArgumentType.itemStack(REGISTRY_ACCESS)) - .executes(context -> drop(player -> { - dropItem(player, context, Integer.MAX_VALUE); - })) + .executes(context -> drop(player -> + dropItem(player, context, Integer.MAX_VALUE) + )) .then(argument("amount", IntegerArgumentType.integer(1)) .executes(context -> drop(player -> { int amount = IntegerArgumentType.getInteger(context, "amount"); diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/EnchantCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/EnchantCommand.java index 6d4f03279a..d9dc46cb3c 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/EnchantCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/EnchantCommand.java @@ -10,6 +10,7 @@ import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; +import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.commands.Command; import meteordevelopment.meteorclient.commands.arguments.RegistryEntryReferenceArgumentType; import meteordevelopment.meteorclient.utils.Utils; @@ -19,13 +20,12 @@ import net.minecraft.item.ItemStack; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.text.Text; import java.util.function.ToIntFunction; public class EnchantCommand extends Command { - private static final SimpleCommandExceptionType NOT_IN_CREATIVE = new SimpleCommandExceptionType(Text.literal("You must be in creative mode to use this.")); - private static final SimpleCommandExceptionType NOT_HOLDING_ITEM = new SimpleCommandExceptionType(Text.literal("You need to hold some item to enchant.")); + private static final SimpleCommandExceptionType NOT_IN_CREATIVE = new SimpleCommandExceptionType(MeteorClient.translatable("meteor.command.enchant.exception.not_in_creative")); + private static final SimpleCommandExceptionType NOT_HOLDING_ITEM = new SimpleCommandExceptionType(MeteorClient.translatable("meteor.command.enchant.exception.not_holding_item")); public EnchantCommand() { super("enchant"); diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/FakePlayerCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/FakePlayerCommand.java index 8806330029..09dd5e3797 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/FakePlayerCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/FakePlayerCommand.java @@ -13,7 +13,6 @@ import meteordevelopment.meteorclient.systems.modules.player.FakePlayer; import meteordevelopment.meteorclient.utils.entity.fakeplayer.FakePlayerEntity; import meteordevelopment.meteorclient.utils.entity.fakeplayer.FakePlayerManager; -import meteordevelopment.meteorclient.utils.player.ChatUtils; import net.minecraft.command.CommandSource; public class FakePlayerCommand extends Command { @@ -43,12 +42,12 @@ public void build(LiteralArgumentBuilder builder) { .executes(context -> { FakePlayerEntity fp = FakePlayerArgumentType.get(context); if (fp == null || !FakePlayerManager.contains(fp)) { - error("Couldn't find a Fake Player with that name."); + error("not_found"); return SINGLE_SUCCESS; } FakePlayerManager.remove(fp); - info("Removed Fake Player %s.".formatted(fp.getName().getString())); + info("removed", fp.getName().getString()); return SINGLE_SUCCESS; }) @@ -65,7 +64,7 @@ public void build(LiteralArgumentBuilder builder) { builder.then(literal("list") .executes(context -> { info("--- Fake Players ((highlight)%s(default)) ---", FakePlayerManager.count()); - FakePlayerManager.forEach(fp -> ChatUtils.info("(highlight)%s".formatted(fp.getName().getString()))); + FakePlayerManager.forEach(fp -> info("(highlight)%s".formatted(fp.getName().getString()))); return SINGLE_SUCCESS; }) ); diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/GiveCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/GiveCommand.java index fa802ede81..83b4e8bc12 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/GiveCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/GiveCommand.java @@ -9,6 +9,7 @@ import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; +import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.commands.Command; import meteordevelopment.meteorclient.utils.player.FindItemResult; import meteordevelopment.meteorclient.utils.player.InvUtils; @@ -16,11 +17,10 @@ import net.minecraft.command.argument.ItemStackArgumentType; import net.minecraft.item.ItemStack; import net.minecraft.network.packet.c2s.play.CreativeInventoryActionC2SPacket; -import net.minecraft.text.Text; public class GiveCommand extends Command { - private final static SimpleCommandExceptionType NOT_IN_CREATIVE = new SimpleCommandExceptionType(Text.literal("You must be in creative mode to use this.")); - private final static SimpleCommandExceptionType NO_SPACE = new SimpleCommandExceptionType(Text.literal("No space in hotbar.")); + private final static SimpleCommandExceptionType NOT_IN_CREATIVE = new SimpleCommandExceptionType(MeteorClient.translatable("meteor.command.give.exception.not_in_creative")); + private final static SimpleCommandExceptionType NO_SPACE = new SimpleCommandExceptionType(MeteorClient.translatable("meteor.command.give.exception.no_space")); public GiveCommand() { super("give"); diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/InputCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/InputCommand.java index c16e3745da..add4cdbd37 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/InputCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/InputCommand.java @@ -76,9 +76,9 @@ public void build(LiteralArgumentBuilder builder) { } builder.then(literal("clear").executes(ctx -> { - if (activeHandlers.isEmpty()) warning("No active keypress handlers."); + if (activeHandlers.isEmpty()) warning("no_handlers"); else { - info("Cleared all keypress handlers."); + info("cleared_handlers"); activeHandlers.forEach(MeteorClient.EVENT_BUS::unsubscribe); activeHandlers.clear(); } @@ -86,12 +86,12 @@ public void build(LiteralArgumentBuilder builder) { })); builder.then(literal("list").executes(ctx -> { - if (activeHandlers.isEmpty()) warning("No active keypress handlers."); + if (activeHandlers.isEmpty()) warning("no_handlers"); else { - info("Active keypress handlers: "); + info(""); for (int i = 0; i < activeHandlers.size(); i++) { KeypressHandler handler = activeHandlers.get(i); - info("(highlight)%d(default) - (highlight)%s %d(default) ticks left out of (highlight)%d(default).", i, I18n.translate(handler.key.getId()), handler.ticks, handler.totalTicks); + info("keypress_handler", i, I18n.translate(handler.key.getId()), handler.ticks, handler.totalTicks); } } return SINGLE_SUCCESS; @@ -99,9 +99,9 @@ public void build(LiteralArgumentBuilder builder) { builder.then(literal("remove").then(argument("index", IntegerArgumentType.integer(0)).executes(ctx -> { int index = IntegerArgumentType.getInteger(ctx, "index"); - if (index >= activeHandlers.size()) warning("Index out of range."); + if (index >= activeHandlers.size()) warning("out_of_range"); else { - info("Removed keypress handler."); + info("removed_handler"); MeteorClient.EVENT_BUS.unsubscribe(activeHandlers.get(index)); activeHandlers.remove(index); } diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/MacroCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/MacroCommand.java index 22c899af11..566cfb43e1 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/MacroCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/MacroCommand.java @@ -35,12 +35,12 @@ public void build(LiteralArgumentBuilder builder) { .then(literal("clear") .executes(context -> { if (scheduleQueue.isEmpty() && scheduledMacros.isEmpty()) { - error("No macros are currently scheduled."); + error("none_scheduled"); return SINGLE_SUCCESS; } clearAll(); - info("Cleared all scheduled macros."); + info("cleared_all"); return SINGLE_SUCCESS; }) @@ -49,12 +49,12 @@ public void build(LiteralArgumentBuilder builder) { Macro macro = MacroArgumentType.get(context); if (!isScheduled(macro)) { - error("This macro is not currently scheduled."); + error("not_scheduled"); return SINGLE_SUCCESS; } clear(macro); - info("Cleared scheduled macro."); + info("cleared"); return SINGLE_SUCCESS; }) ) diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/NameHistoryCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/NameHistoryCommand.java index db1a317183..3a646a477c 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/NameHistoryCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/NameHistoryCommand.java @@ -38,13 +38,13 @@ public void build(LiteralArgumentBuilder builder) { UUID uuid = lookUpTarget.getProfile().id(); NameHistory history = Http.get("https://laby.net/api/v2/user/" + uuid + "/get-profile") - .exceptionHandler(e -> error("There was an error fetching that users name history.")) + .exceptionHandler(e -> error("error_fetching_name")) .sendJson(NameHistory.class); if (history == null) { return; } else if (history.username_history == null || history.username_history.length == 0) { - error("There was an error fetching that users name history."); + error("error_fetching_name"); } String name = lookUpTarget.getProfile().name(); @@ -85,7 +85,7 @@ public void build(LiteralArgumentBuilder builder) { if (!entry.accurate) { MutableText text = Text.literal("*").formatted(Formatting.WHITE); - text.setStyle(text.getStyle().withHoverEvent(new HoverEvent.ShowText(Text.literal("This name history entry is not accurate according to laby.net")))); + text.setStyle(text.getStyle().withHoverEvent(new HoverEvent.ShowText(translatable("inaccurate")))); nameText.append(text); } diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/ProfilesCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/ProfilesCommand.java index fa5ccf9412..f8b0b7c25d 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/ProfilesCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/ProfilesCommand.java @@ -25,7 +25,7 @@ public void build(LiteralArgumentBuilder builder) { if (profile != null) { profile.load(); - info("Loaded profile (highlight)%s(default).", profile.name.get()); + info("loaded", profile.name.get()); } return SINGLE_SUCCESS; @@ -36,7 +36,7 @@ public void build(LiteralArgumentBuilder builder) { if (profile != null) { profile.save(); - info("Saved profile (highlight)%s(default).", profile.name.get()); + info("saved", profile.name.get()); } return SINGLE_SUCCESS; @@ -47,7 +47,7 @@ public void build(LiteralArgumentBuilder builder) { if (profile != null) { Profiles.get().remove(profile); - info("Deleted profile (highlight)%s(default).", profile.name.get()); + info("deleted", profile.name.get()); } return SINGLE_SUCCESS; diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/ReloadCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/ReloadCommand.java index 3e7304c5a8..4a66ff2272 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/ReloadCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/ReloadCommand.java @@ -23,7 +23,7 @@ public ReloadCommand() { @Override public void build(LiteralArgumentBuilder builder) { builder.executes(context -> { - warning("Reloading systems, this may take a while."); + warning("reloading"); Systems.load(); Capes.init(); diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/SaveMapCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/SaveMapCommand.java index e29c4f2f48..232ed70e9f 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/SaveMapCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/SaveMapCommand.java @@ -19,7 +19,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.item.map.MapState; -import net.minecraft.text.Text; import org.jetbrains.annotations.Nullable; import org.lwjgl.BufferUtils; import org.lwjgl.PointerBuffer; @@ -33,8 +32,8 @@ import java.nio.ByteBuffer; public class SaveMapCommand extends Command { - private static final SimpleCommandExceptionType MAP_NOT_FOUND = new SimpleCommandExceptionType(Text.literal("You must be holding a filled map.")); - private static final SimpleCommandExceptionType OOPS = new SimpleCommandExceptionType(Text.literal("Something went wrong.")); + private static final SimpleCommandExceptionType MAP_NOT_FOUND = new SimpleCommandExceptionType(MeteorClient.translatable("meteor.command.save-map.exception.map_not_found")); + private static final SimpleCommandExceptionType OOPS = new SimpleCommandExceptionType(MeteorClient.translatable("meteor.command.save-map.exception.oops")); private final PointerBuffer filters; @@ -72,24 +71,25 @@ private void saveMap(int scale) throws CommandSyntaxException { if (path == null) throw OOPS.create(); MapTextureManagerAccessor textureManager = (MapTextureManagerAccessor) mc.gameRenderer.getClient().getMapTextureManager(); - MapTextureManager.MapTexture texture = textureManager.meteor$invokeGetMapTexture(map.get(DataComponentTypes.MAP_ID), state); - if (texture.texture.getImage() == null) throw OOPS.create(); - - try { - if (scale == 128) texture.texture.getImage().writeTo(path); - else { - int[] data = texture.texture.getImage().makePixelArray(); - BufferedImage image = new BufferedImage(128, 128, BufferedImage.TYPE_INT_ARGB); - image.setRGB(0, 0, image.getWidth(), image.getHeight(), data, 0, 128); - - BufferedImage scaledImage = new BufferedImage(scale, scale, 2); - scaledImage.createGraphics().drawImage(image, 0, 0, scale, scale, null); - - ImageIO.write(scaledImage, "png", path); + try (MapTextureManager.MapTexture texture = textureManager.meteor$invokeGetMapTexture(map.get(DataComponentTypes.MAP_ID), state)) { + if (texture.texture.getImage() == null) throw OOPS.create(); + + try { + if (scale == 128) texture.texture.getImage().writeTo(path); + else { + int[] data = texture.texture.getImage().makePixelArray(); + BufferedImage image = new BufferedImage(128, 128, BufferedImage.TYPE_INT_ARGB); + image.setRGB(0, 0, image.getWidth(), image.getHeight(), data, 0, 128); + + BufferedImage scaledImage = new BufferedImage(scale, scale, 2); + scaledImage.createGraphics().drawImage(image, 0, 0, scale, scale, null); + + ImageIO.write(scaledImage, "png", path); + } + } catch (IOException e) { + error("error_writing_texture"); + MeteorClient.LOG.error(e.toString()); } - } catch (IOException e) { - error("Error writing map texture"); - MeteorClient.LOG.error(e.toString()); } } diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/WaspCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/WaspCommand.java index d5d9fb15eb..0f57375d76 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/WaspCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/WaspCommand.java @@ -7,16 +7,16 @@ import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; +import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.commands.Command; import meteordevelopment.meteorclient.commands.arguments.PlayerArgumentType; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.movement.AutoWasp; import net.minecraft.command.CommandSource; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.text.Text; public class WaspCommand extends Command { - private static final SimpleCommandExceptionType CANT_WASP_SELF = new SimpleCommandExceptionType(Text.literal("You cannot target yourself!")); + private static final SimpleCommandExceptionType CANT_WASP_SELF = new SimpleCommandExceptionType(MeteorClient.translatable("meteor.command.wasp.exception.cant_wasp_self")); public WaspCommand() { super("wasp"); @@ -38,7 +38,7 @@ public void build(LiteralArgumentBuilder builder) { wasp.target = player; if (!wasp.isActive()) wasp.toggle(); - info(player.getName().getString() + " set as target."); + info("target", player.getName().getString()); return SINGLE_SUCCESS; })); } diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/ModulesScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/ModulesScreen.java index b953816a8b..bd1f0bfbd3 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/ModulesScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/ModulesScreen.java @@ -66,7 +66,7 @@ public void initWidgets() { .title("Translation Information") .message("The current language (%s) is currently %.1f%% translated.", mc.options.language, t); - if (!translators.isEmpty()) prompt.message("Translation work done by: " + translators + ".\n"); + if (!translators.isEmpty()) prompt.message("Translation work done by: " + translators); prompt.message("") .message("Do you want to open the language file for the current language?") diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ControlListWidgetMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ControlListWidgetMixin.java index 416e592ad6..40bcc25ae7 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ControlListWidgetMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ControlListWidgetMixin.java @@ -7,11 +7,10 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import com.llamalad7.mixinextras.sugar.Local; -import meteordevelopment.meteorclient.utils.misc.MeteorTranslations; +import meteordevelopment.meteorclient.MeteorClient; import net.minecraft.client.gui.screen.option.ControlsListWidget; import net.minecraft.client.option.KeyBinding; import net.minecraft.text.MutableText; -import net.minecraft.text.Text; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -19,7 +18,7 @@ public class ControlListWidgetMixin { @ModifyExpressionValue(method = "", at = @At(value = "INVOKE", target = "Lnet/minecraft/text/Text;translatable(Ljava/lang/String;)Lnet/minecraft/text/MutableText;")) private MutableText modifyText(MutableText original, @Local KeyBinding binding) { - if (binding.getId().startsWith("meteor.key.")) return Text.literal(MeteorTranslations.translate(binding.getId())); + if (binding.getId().startsWith("meteor.key.")) return MeteorClient.translatable(binding.getId()); return original; } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/KeyBindingCategoryMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/KeyBindingCategoryMixin.java index 766945a158..fcb1709e42 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/KeyBindingCategoryMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/KeyBindingCategoryMixin.java @@ -7,7 +7,6 @@ import com.llamalad7.mixinextras.injector.ModifyReturnValue; import meteordevelopment.meteorclient.MeteorClient; -import meteordevelopment.meteorclient.utils.misc.MeteorTranslations; import net.minecraft.client.option.KeyBinding; import net.minecraft.text.Text; import net.minecraft.util.Identifier; @@ -24,7 +23,7 @@ public class KeyBindingCategoryMixin { @ModifyReturnValue(method = "getLabel", at = @At("RETURN")) private Text modifyLabel(Text original) { - if (id.getNamespace().equals(MeteorClient.MOD_ID)) return Text.literal(MeteorTranslations.translate(id.getPath())); + if (id.getNamespace().equals(MeteorClient.MOD_ID)) return MeteorClient.translatable(id.getPath()); return original; } } diff --git a/src/main/resources/assets/meteor-client/language/en_gb.json b/src/main/resources/assets/meteor-client/language/en_gb.json index ea3d85d40f..35aa0b8e0c 100644 --- a/src/main/resources/assets/meteor-client/language/en_gb.json +++ b/src/main/resources/assets/meteor-client/language/en_gb.json @@ -1,37 +1,65 @@ { "meteor.key.category": "Meteor Client", - "meteor.key.open-gui": "Open GUI", "meteor.key.open-commands": "Open Commands", + "meteor.key.open-gui": "Open GUI", "meteor.command.bind.description": "Binds a specified module to the next pressed key.", "meteor.command.binds.description": "List of all bound modules.", "meteor.command.commands.description": "List of all commands.", "meteor.command.damage.description": "Damages self.", "meteor.command.disconnect.description": "Disconnect from the server", + "meteor.command.disconnect.disconnection_message": "%s[%sDisconnectCommand%s] Disconnected by user.", "meteor.command.dismount.description": "Dismounts you from entity you are riding.", "meteor.command.drop.description": "Automatically drops specified items.", + "meteor.command.drop.exception.no_such_item": "Could not find an item with that name!", + "meteor.command.drop.exception.not_spectator": "Can't drop items while in spectator.", "meteor.command.enchant.description": "Enchants the item in your hand. REQUIRES Creative mode.", + "meteor.command.enchant.exception.not_holding_item": "You need to hold some item to enchant.", + "meteor.command.enchant.exception.not_in_creative": "You must be in creative mode to use this.", "meteor.command.ender-chest.description": "Allows you to preview memory of your ender chest.", "meteor.command.fake-player.description": "Manages fake players that you can use for testing.", + "meteor.command.fake-player.error.not_found": "Couldn't find a Fake Player with that name.", + "meteor.command.fake-player.info.removed": "Removed Fake Player %s.", "meteor.command.fov.description": "Changes your fov.", "meteor.command.friends.description": "Manages friends.", "meteor.command.gamemode.description": "Changes your gamemode client-side.", "meteor.command.give.description": "Gives you any item.", + "meteor.command.give.exception.not_in_creative": "You must be in creative mode to use this.", + "meteor.command.give.exception.no_space": "No space in hotbar.", "meteor.command.hclip.description": "Lets you clip through blocks horizontally.", "meteor.command.input.description": "Keyboard input simulation.", + "meteor.command.input.info.cleared_handlers": "Cleared all keypress handlers.", + "meteor.command.input.info.active_handlers": "Active keypress handlers: ", + "meteor.command.input.info.keypress_handler": "(highlight)%d(default) - (highlight)%s %d(default) ticks left out of (highlight)%d(default).", + "meteor.command.input.info.removed_handler": "Removed keypress handler.", + "meteor.command.input.warning.no_handlers": "No active keypress handlers.", + "meteor.command.input.warning.out_of_range": "Index out of range.", "meteor.command.inventory.description": "Allows you to see parts of another player's inventory.", "meteor.command.locate.description": "Locates structures", "meteor.command.macro.description": "Allows you to execute macros.", + "meteor.command.macro.error.none_scheduled": "No macros are currently scheduled.", + "meteor.command.macro.error.not_scheduled": "This macro is not currently scheduled.", + "meteor.command.macro.info.cleared_all": "Cleared all scheduled macros.", + "meteor.command.macro.info.cleared": "Cleared scheduled macro.", "meteor.command.modules.description": "Displays a list of all modules.", "meteor.command.name-history.description": "Provides a list of a players previous names from the laby.net api", + "meteor.command.name-history.error.error_fetching_name": "There was an error fetching that users name history.", + "meteor.command.name-history.inaccurate": "This name history entry is not accurate according to laby.net", "meteor.command.nbt.description": "Modifies NBT data for an item, example: .nbt add {display:{Name:'{\"text\":\"$cRed Name\"}'}}", "meteor.command.notebot.description": "Allows you load notebot files", "meteor.command.peek.description": "Lets you see what's inside storage block items.", "meteor.command.profiles.description": "Loads and saves profiles.", + "meteor.command.profiles.info.loaded": "Loaded profile (highlight)%s(default).", + "meteor.command.profiles.info.saved": "Saved profile (highlight)%s(default).", + "meteor.command.profiles.info.deleted": "Deleted profile (highlight)%s(default).", "meteor.command.reload.description": "Reloads many systems.", + "meteor.command.reload.warning.reloading": "Reloading systems, this may take a while.", "meteor.command.reset.description": "Resets specified settings.", "meteor.command.rotation.description": "Modifies your rotation.", "meteor.command.save-map.description": "Saves a map to an image.", + "meteor.command.save-map.error.error_writing_texture": "Error writing map texture", + "meteor.command.save-map.exception.map_not_found": "You must be holding a filled map.", + "meteor.command.save-map.exception.oops": "Something went wrong.", "meteor.command.say.description": "Sends messages in chat.", "meteor.command.server.description": "Prints server information", "meteor.command.settings.description": "Allows you to view and change module settings.", @@ -40,5 +68,7 @@ "meteor.command.toggle.description": "Toggles a module.", "meteor.command.vclip.description": "Lets you clip through blocks vertically.", "meteor.command.wasp.description": "Sets the auto wasp target.", + "meteor.command.wasp.exception.cant_wasp_self": "You cannot target yourself!", + "meteor.command.wasp.info.target": "%d set as target.", "meteor.command.waypoint.description": "Manages waypoints." } diff --git a/src/main/resources/assets/meteor-client/language/en_us.json b/src/main/resources/assets/meteor-client/language/en_us.json index ea3d85d40f..35aa0b8e0c 100644 --- a/src/main/resources/assets/meteor-client/language/en_us.json +++ b/src/main/resources/assets/meteor-client/language/en_us.json @@ -1,37 +1,65 @@ { "meteor.key.category": "Meteor Client", - "meteor.key.open-gui": "Open GUI", "meteor.key.open-commands": "Open Commands", + "meteor.key.open-gui": "Open GUI", "meteor.command.bind.description": "Binds a specified module to the next pressed key.", "meteor.command.binds.description": "List of all bound modules.", "meteor.command.commands.description": "List of all commands.", "meteor.command.damage.description": "Damages self.", "meteor.command.disconnect.description": "Disconnect from the server", + "meteor.command.disconnect.disconnection_message": "%s[%sDisconnectCommand%s] Disconnected by user.", "meteor.command.dismount.description": "Dismounts you from entity you are riding.", "meteor.command.drop.description": "Automatically drops specified items.", + "meteor.command.drop.exception.no_such_item": "Could not find an item with that name!", + "meteor.command.drop.exception.not_spectator": "Can't drop items while in spectator.", "meteor.command.enchant.description": "Enchants the item in your hand. REQUIRES Creative mode.", + "meteor.command.enchant.exception.not_holding_item": "You need to hold some item to enchant.", + "meteor.command.enchant.exception.not_in_creative": "You must be in creative mode to use this.", "meteor.command.ender-chest.description": "Allows you to preview memory of your ender chest.", "meteor.command.fake-player.description": "Manages fake players that you can use for testing.", + "meteor.command.fake-player.error.not_found": "Couldn't find a Fake Player with that name.", + "meteor.command.fake-player.info.removed": "Removed Fake Player %s.", "meteor.command.fov.description": "Changes your fov.", "meteor.command.friends.description": "Manages friends.", "meteor.command.gamemode.description": "Changes your gamemode client-side.", "meteor.command.give.description": "Gives you any item.", + "meteor.command.give.exception.not_in_creative": "You must be in creative mode to use this.", + "meteor.command.give.exception.no_space": "No space in hotbar.", "meteor.command.hclip.description": "Lets you clip through blocks horizontally.", "meteor.command.input.description": "Keyboard input simulation.", + "meteor.command.input.info.cleared_handlers": "Cleared all keypress handlers.", + "meteor.command.input.info.active_handlers": "Active keypress handlers: ", + "meteor.command.input.info.keypress_handler": "(highlight)%d(default) - (highlight)%s %d(default) ticks left out of (highlight)%d(default).", + "meteor.command.input.info.removed_handler": "Removed keypress handler.", + "meteor.command.input.warning.no_handlers": "No active keypress handlers.", + "meteor.command.input.warning.out_of_range": "Index out of range.", "meteor.command.inventory.description": "Allows you to see parts of another player's inventory.", "meteor.command.locate.description": "Locates structures", "meteor.command.macro.description": "Allows you to execute macros.", + "meteor.command.macro.error.none_scheduled": "No macros are currently scheduled.", + "meteor.command.macro.error.not_scheduled": "This macro is not currently scheduled.", + "meteor.command.macro.info.cleared_all": "Cleared all scheduled macros.", + "meteor.command.macro.info.cleared": "Cleared scheduled macro.", "meteor.command.modules.description": "Displays a list of all modules.", "meteor.command.name-history.description": "Provides a list of a players previous names from the laby.net api", + "meteor.command.name-history.error.error_fetching_name": "There was an error fetching that users name history.", + "meteor.command.name-history.inaccurate": "This name history entry is not accurate according to laby.net", "meteor.command.nbt.description": "Modifies NBT data for an item, example: .nbt add {display:{Name:'{\"text\":\"$cRed Name\"}'}}", "meteor.command.notebot.description": "Allows you load notebot files", "meteor.command.peek.description": "Lets you see what's inside storage block items.", "meteor.command.profiles.description": "Loads and saves profiles.", + "meteor.command.profiles.info.loaded": "Loaded profile (highlight)%s(default).", + "meteor.command.profiles.info.saved": "Saved profile (highlight)%s(default).", + "meteor.command.profiles.info.deleted": "Deleted profile (highlight)%s(default).", "meteor.command.reload.description": "Reloads many systems.", + "meteor.command.reload.warning.reloading": "Reloading systems, this may take a while.", "meteor.command.reset.description": "Resets specified settings.", "meteor.command.rotation.description": "Modifies your rotation.", "meteor.command.save-map.description": "Saves a map to an image.", + "meteor.command.save-map.error.error_writing_texture": "Error writing map texture", + "meteor.command.save-map.exception.map_not_found": "You must be holding a filled map.", + "meteor.command.save-map.exception.oops": "Something went wrong.", "meteor.command.say.description": "Sends messages in chat.", "meteor.command.server.description": "Prints server information", "meteor.command.settings.description": "Allows you to view and change module settings.", @@ -40,5 +68,7 @@ "meteor.command.toggle.description": "Toggles a module.", "meteor.command.vclip.description": "Lets you clip through blocks vertically.", "meteor.command.wasp.description": "Sets the auto wasp target.", + "meteor.command.wasp.exception.cant_wasp_self": "You cannot target yourself!", + "meteor.command.wasp.info.target": "%d set as target.", "meteor.command.waypoint.description": "Manages waypoints." } diff --git a/src/main/resources/assets/meteor-client/language/pt_br.json b/src/main/resources/assets/meteor-client/language/pt_br.json index 4a3ccf4e0f..16cc5e0c1c 100644 --- a/src/main/resources/assets/meteor-client/language/pt_br.json +++ b/src/main/resources/assets/meteor-client/language/pt_br.json @@ -1,5 +1,5 @@ { - "meteor.lang.translators": "Niix-Dan ", + "meteor.lang.translators": "Niix-Dan", "meteor.key.open-gui": "Abrir Menu", "meteor.key.open-commands": "Abrir Comandos" From ed00828f787f1247b0f5ff70d7e702bedc8997bd Mon Sep 17 00:00:00 2001 From: RacoonDog <32882447+racoondog@users.noreply.github.com> Date: Tue, 18 Nov 2025 00:05:28 -0500 Subject: [PATCH 08/52] add error message when IOExcepting during en_us --- .../meteorclient/utils/misc/MeteorTranslations.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java index 3b449ac3c7..e4b396f522 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java @@ -60,7 +60,7 @@ public static void loadLanguage(String languageCode) { MeteorClient.LOG.info("Loaded language: {}", languageCode); } } catch (IOException e) { - if (languageCode.equals("en_us")) throw new RuntimeException(e); + if (languageCode.equals("en_us")) throw new RuntimeException("Error loading default language", e); else MeteorClient.LOG.error("Error loading language: {}", languageCode, e); } From 08a8d6b80660a1cf2bb3d05ce89002df34ac9562 Mon Sep 17 00:00:00 2001 From: RacoonDog <32882447+racoondog@users.noreply.github.com> Date: Tue, 18 Nov 2025 00:06:14 -0500 Subject: [PATCH 09/52] always use utf8 for translations --- .../meteorclient/utils/misc/MeteorTranslations.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java index e4b396f522..17233e495d 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java @@ -20,6 +20,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.IllegalFormatException; import java.util.List; @@ -54,7 +55,7 @@ public static void loadLanguage(String languageCode) { } else { // noinspection unchecked - Object2ObjectOpenHashMap map = GSON.fromJson(new InputStreamReader(stream), Object2ObjectOpenHashMap.class); + Object2ObjectOpenHashMap map = GSON.fromJson(new InputStreamReader(stream, StandardCharsets.UTF_8), Object2ObjectOpenHashMap.class); languages.put(languageCode, new MeteorLanguage(map)); MeteorClient.LOG.info("Loaded language: {}", languageCode); @@ -72,7 +73,7 @@ public static void loadLanguage(String languageCode) { MeteorLanguage lang = languages.getOrDefault(languageCode, new MeteorLanguage()); // noinspection unchecked - Object2ObjectOpenHashMap map = GSON.fromJson(new InputStreamReader(stream), Object2ObjectOpenHashMap.class); + Object2ObjectOpenHashMap map = GSON.fromJson(new InputStreamReader(stream, StandardCharsets.UTF_8), Object2ObjectOpenHashMap.class); lang.addCustomTranslation(map); languages.put(languageCode, lang); From cc08c570d0b1a74f231d8b5f190d46df4a8c1290 Mon Sep 17 00:00:00 2001 From: RacoonDog <32882447+racoondog@users.noreply.github.com> Date: Tue, 18 Nov 2025 00:18:41 -0500 Subject: [PATCH 10/52] set default lang as a constant --- .../utils/misc/MeteorTranslations.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java index 17233e495d..82f713810c 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java @@ -30,18 +30,22 @@ @SuppressWarnings("unused") public class MeteorTranslations { + private static final String EN_US_CODE = "en_us"; private static final Gson GSON = new Gson(); private static final Map languages = new Object2ObjectOpenHashMap<>(); + private static MeteorLanguage defaultLanguage; @PreInit public static void preInit() { List toLoad = new ArrayList<>(2); - toLoad.add("en_us"); - if (!mc.options.language.equalsIgnoreCase("en_us")) toLoad.add(mc.options.language); + toLoad.add(EN_US_CODE); + if (!mc.options.language.equalsIgnoreCase(EN_US_CODE)) toLoad.add(mc.options.language); for (String language : toLoad) { loadLanguage(language); } + + defaultLanguage = getLanguage(EN_US_CODE); } public static void loadLanguage(String languageCode) { @@ -50,7 +54,7 @@ public static void loadLanguage(String languageCode) { try (InputStream stream = MeteorTranslations.class.getResourceAsStream("/assets/meteor-client/language/" + languageCode + ".json")) { if (stream == null) { - if (languageCode.equals("en_us")) throw new RuntimeException("Error loading the default language"); + if (languageCode.equals(EN_US_CODE)) throw new RuntimeException("Error loading the default language"); else MeteorClient.LOG.info("No language file found for '{}'", languageCode); } else { @@ -61,7 +65,7 @@ public static void loadLanguage(String languageCode) { MeteorClient.LOG.info("Loaded language: {}", languageCode); } } catch (IOException e) { - if (languageCode.equals("en_us")) throw new RuntimeException("Error loading default language", e); + if (languageCode.equals(EN_US_CODE)) throw new RuntimeException("Error loading default language", e); else MeteorClient.LOG.error("Error loading language: {}", languageCode, e); } @@ -115,7 +119,7 @@ public static MeteorLanguage getCurrentLanguage() { } public static MeteorLanguage getDefaultLanguage() { - return languages.get("en_us"); + return defaultLanguage; } /** From bd68d2daa8949d03bed4e72d062d68ba783d11d8 Mon Sep 17 00:00:00 2001 From: RacoonDog <32882447+racoondog@users.noreply.github.com> Date: Tue, 18 Nov 2025 00:42:58 -0500 Subject: [PATCH 11/52] add id field to `MeteorAddon` --- .../meteordevelopment/meteorclient/addons/AddonManager.java | 2 ++ .../meteordevelopment/meteorclient/addons/MeteorAddon.java | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/src/main/java/meteordevelopment/meteorclient/addons/AddonManager.java b/src/main/java/meteordevelopment/meteorclient/addons/AddonManager.java index 54af1c4d00..2e1a10668e 100644 --- a/src/main/java/meteordevelopment/meteorclient/addons/AddonManager.java +++ b/src/main/java/meteordevelopment/meteorclient/addons/AddonManager.java @@ -48,6 +48,7 @@ public String getCommit() { ModMetadata metadata = FabricLoader.getInstance().getModContainer(MeteorClient.MOD_ID).get().getMetadata(); + MeteorClient.ADDON.id = metadata.getId(); MeteorClient.ADDON.name = metadata.getName(); MeteorClient.ADDON.authors = new String[metadata.getAuthors().size()]; if (metadata.containsCustomValue(MeteorClient.MOD_ID + ":color")) { @@ -72,6 +73,7 @@ public String getCommit() { throw new RuntimeException("Exception during addon init \"%s\".".formatted(metadata.getName()), throwable); } + addon.id = metadata.getId(); addon.name = metadata.getName(); if (metadata.getAuthors().isEmpty()) throw new RuntimeException("Addon \"%s\" requires at least 1 author to be defined in it's fabric.mod.json. See https://fabricmc.net/wiki/documentation:fabric_mod_json_spec".formatted(addon.name)); diff --git a/src/main/java/meteordevelopment/meteorclient/addons/MeteorAddon.java b/src/main/java/meteordevelopment/meteorclient/addons/MeteorAddon.java index 7ae5918d6f..01286ead0f 100644 --- a/src/main/java/meteordevelopment/meteorclient/addons/MeteorAddon.java +++ b/src/main/java/meteordevelopment/meteorclient/addons/MeteorAddon.java @@ -10,6 +10,10 @@ import java.io.InputStream; public abstract class MeteorAddon { + /** This field is automatically assigned from fabric.mod.json file. + * @since 1.21.11 */ // todo replace with exact version when released + public String id; + /** This field is automatically assigned from fabric.mod.json file. */ public String name; From e1eef18ae1e067b448e4a229eb9f242886860ba4 Mon Sep 17 00:00:00 2001 From: RacoonDog <32882447+racoondog@users.noreply.github.com> Date: Tue, 18 Nov 2025 00:50:09 -0500 Subject: [PATCH 12/52] compute map of localized languages --- .../utils/misc/MeteorTranslations.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java index 82f713810c..0ce3709542 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java @@ -12,6 +12,8 @@ import meteordevelopment.meteorclient.addons.AddonManager; import meteordevelopment.meteorclient.addons.MeteorAddon; import meteordevelopment.meteorclient.utils.PreInit; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.resource.language.LanguageDefinition; import net.minecraft.client.resource.language.ReorderingUtil; import net.minecraft.text.OrderedText; import net.minecraft.text.StringVisitable; @@ -33,10 +35,17 @@ public class MeteorTranslations { private static final String EN_US_CODE = "en_us"; private static final Gson GSON = new Gson(); private static final Map languages = new Object2ObjectOpenHashMap<>(); + private static final Map languageDefinitions = new Object2ObjectOpenHashMap<>(); private static MeteorLanguage defaultLanguage; @PreInit public static void preInit() { + MinecraftClient.getInstance().getLanguageManager().getAllLanguages().forEach((code, definition) -> { + if (hasLocalization(code)) { + languageDefinitions.put(code, definition); + } + }); + List toLoad = new ArrayList<>(2); toLoad.add(EN_US_CODE); if (!mc.options.language.equalsIgnoreCase(EN_US_CODE)) toLoad.add(mc.options.language); @@ -48,6 +57,20 @@ public static void preInit() { defaultLanguage = getLanguage(EN_US_CODE); } + private static boolean hasLocalization(String languageCode) { + if (doesLangFileExist(MeteorClient.ADDON, languageCode)) return true; + + for (MeteorAddon addon : AddonManager.ADDONS) { + if (doesLangFileExist(addon, languageCode)) return true; + } + + return false; + } + + private static boolean doesLangFileExist(MeteorAddon addon, String languageCode) { + return addon.getClass().getResource("/assets/" + addon.id + "/language/" + languageCode + ".json") != null; + } + public static void loadLanguage(String languageCode) { languageCode = languageCode.toLowerCase(); if (languages.containsKey(languageCode)) return; @@ -110,6 +133,10 @@ public static String translate(String key, String fallback, Object... args) { } } + public static Map getLanguageDefinitions() { + return languageDefinitions; + } + public static MeteorLanguage getLanguage(String lang) { return languages.get(lang); } From 6bb4151a365efa0f0f89a13b055d6e9028e8456f Mon Sep 17 00:00:00 2001 From: RacoonDog <32882447+racoondog@users.noreply.github.com> Date: Tue, 18 Nov 2025 00:52:56 -0500 Subject: [PATCH 13/52] add right-to-left support --- .../utils/misc/MeteorTranslations.java | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java index 0ce3709542..89a7f86b29 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java @@ -75,6 +75,9 @@ public static void loadLanguage(String languageCode) { languageCode = languageCode.toLowerCase(); if (languages.containsKey(languageCode)) return; + LanguageDefinition definition = languageDefinitions.get(languageCode); + if (definition == null) return; + try (InputStream stream = MeteorTranslations.class.getResourceAsStream("/assets/meteor-client/language/" + languageCode + ".json")) { if (stream == null) { if (languageCode.equals(EN_US_CODE)) throw new RuntimeException("Error loading the default language"); @@ -83,7 +86,7 @@ public static void loadLanguage(String languageCode) { else { // noinspection unchecked Object2ObjectOpenHashMap map = GSON.fromJson(new InputStreamReader(stream, StandardCharsets.UTF_8), Object2ObjectOpenHashMap.class); - languages.put(languageCode, new MeteorLanguage(map)); + languages.put(languageCode, new MeteorLanguage(definition.rightToLeft(), map)); MeteorClient.LOG.info("Loaded language: {}", languageCode); } @@ -97,7 +100,7 @@ public static void loadLanguage(String languageCode) { try (InputStream stream = addon.provideLanguage(languageCode)) { if (stream == null) continue; - MeteorLanguage lang = languages.getOrDefault(languageCode, new MeteorLanguage()); + MeteorLanguage lang = languages.getOrDefault(languageCode, new MeteorLanguage(definition.rightToLeft())); // noinspection unchecked Object2ObjectOpenHashMap map = GSON.fromJson(new InputStreamReader(stream, StandardCharsets.UTF_8), Object2ObjectOpenHashMap.class); @@ -157,7 +160,7 @@ public static double percentLocalised() { // translation. Maybe that will change in the future. if (isEnglish()) return 100; - double currentLangSize = languages.getOrDefault(mc.options.language.toLowerCase(), new MeteorLanguage()).translations.size(); + double currentLangSize = languages.getOrDefault(mc.options.language.toLowerCase(), new MeteorLanguage(false)).translations.size(); return (currentLangSize / getDefaultLanguage().translations.size()) * 100; } @@ -168,10 +171,14 @@ public static boolean isEnglish() { public static class MeteorLanguage extends Language { private final Map translations = new Object2ObjectOpenHashMap<>(); private final List> customTranslations = new ObjectArrayList<>(); + private final boolean rightToLeft; - public MeteorLanguage() {} + public MeteorLanguage(boolean rightToLeft) { + this.rightToLeft = rightToLeft; + } - public MeteorLanguage(Map translations) { + public MeteorLanguage(boolean rightToLeft, Map translations) { + this(rightToLeft); this.translations.putAll(translations); } @@ -205,12 +212,12 @@ public boolean hasTranslation(String key) { @Override public boolean isRightToLeft() { - return false; + return this.rightToLeft; } @Override public OrderedText reorder(StringVisitable text) { - return ReorderingUtil.reorder(text, false); + return ReorderingUtil.reorder(text, this.rightToLeft); } } } From 083f0d894ae55a8431e3ab15df57d9da0b03950e Mon Sep 17 00:00:00 2001 From: RacoonDog <32882447+racoondog@users.noreply.github.com> Date: Tue, 18 Nov 2025 01:08:48 -0500 Subject: [PATCH 14/52] flatten translation maps --- .../utils/misc/MeteorTranslations.java | 45 ++++++------------- 1 file changed, 13 insertions(+), 32 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java index 89a7f86b29..6c1f314099 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java @@ -7,7 +7,6 @@ import com.google.gson.Gson; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; -import it.unimi.dsi.fastutil.objects.ObjectArrayList; import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.addons.AddonManager; import meteordevelopment.meteorclient.addons.MeteorAddon; @@ -78,6 +77,8 @@ public static void loadLanguage(String languageCode) { LanguageDefinition definition = languageDefinitions.get(languageCode); if (definition == null) return; + Object2ObjectOpenHashMap languageMap = new Object2ObjectOpenHashMap<>(); + try (InputStream stream = MeteorTranslations.class.getResourceAsStream("/assets/meteor-client/language/" + languageCode + ".json")) { if (stream == null) { if (languageCode.equals(EN_US_CODE)) throw new RuntimeException("Error loading the default language"); @@ -86,7 +87,7 @@ public static void loadLanguage(String languageCode) { else { // noinspection unchecked Object2ObjectOpenHashMap map = GSON.fromJson(new InputStreamReader(stream, StandardCharsets.UTF_8), Object2ObjectOpenHashMap.class); - languages.put(languageCode, new MeteorLanguage(definition.rightToLeft(), map)); + languageMap.putAll(map); MeteorClient.LOG.info("Loaded language: {}", languageCode); } @@ -100,18 +101,20 @@ public static void loadLanguage(String languageCode) { try (InputStream stream = addon.provideLanguage(languageCode)) { if (stream == null) continue; - MeteorLanguage lang = languages.getOrDefault(languageCode, new MeteorLanguage(definition.rightToLeft())); // noinspection unchecked Object2ObjectOpenHashMap map = GSON.fromJson(new InputStreamReader(stream, StandardCharsets.UTF_8), Object2ObjectOpenHashMap.class); - lang.addCustomTranslation(map); - languages.put(languageCode, lang); + languageMap.putAll(map); MeteorClient.LOG.info("Loaded language {} from addon {}", languageCode, addon.name); } catch (IOException e) { MeteorClient.LOG.error("Error loading language {} from addon {}", languageCode, addon.name, e); } } + + if (!languageMap.isEmpty()) { + languages.put(languageCode, new MeteorLanguage(definition.rightToLeft(), languageMap)); + } } public static String translate(String key, Object... args) { @@ -160,7 +163,8 @@ public static double percentLocalised() { // translation. Maybe that will change in the future. if (isEnglish()) return 100; - double currentLangSize = languages.getOrDefault(mc.options.language.toLowerCase(), new MeteorLanguage(false)).translations.size(); + MeteorLanguage currentLang = languages.get(mc.options.language.toLowerCase()); + double currentLangSize = currentLang != null ? currentLang.translations.size() : 0; return (currentLangSize / getDefaultLanguage().translations.size()) * 100; } @@ -170,44 +174,21 @@ public static boolean isEnglish() { public static class MeteorLanguage extends Language { private final Map translations = new Object2ObjectOpenHashMap<>(); - private final List> customTranslations = new ObjectArrayList<>(); private final boolean rightToLeft; - public MeteorLanguage(boolean rightToLeft) { - this.rightToLeft = rightToLeft; - } - public MeteorLanguage(boolean rightToLeft, Map translations) { - this(rightToLeft); + this.rightToLeft = rightToLeft; this.translations.putAll(translations); } - public void addCustomTranslation(Map customTranslation) { - if (customTranslations.contains(customTranslation)) return; - - customTranslations.add(customTranslation); - } - @Override public String get(String key, String fallback) { - if (translations.containsKey(key)) return translations.get(key); - - for (Map customTranslation : customTranslations) { - if (customTranslation.containsKey(key)) return customTranslation.get(key); - } - - return fallback; + return translations.getOrDefault(key, fallback); } @Override public boolean hasTranslation(String key) { - if (translations.containsKey(key)) return true; - - for (Map customTranslation : customTranslations) { - if (customTranslation.containsKey(key)) return true; - } - - return false; + return translations.containsKey(key); } @Override From f05923e11248305ff3d6508a527150b1c473e49b Mon Sep 17 00:00:00 2001 From: RacoonDog <32882447+racoondog@users.noreply.github.com> Date: Tue, 18 Nov 2025 01:13:43 -0500 Subject: [PATCH 15/52] these are actually case sensitive --- .../meteorclient/utils/misc/MeteorTranslations.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java index 6c1f314099..5d121fb62c 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java @@ -47,7 +47,7 @@ public static void preInit() { List toLoad = new ArrayList<>(2); toLoad.add(EN_US_CODE); - if (!mc.options.language.equalsIgnoreCase(EN_US_CODE)) toLoad.add(mc.options.language); + if (!mc.options.language.equals(EN_US_CODE)) toLoad.add(mc.options.language); for (String language : toLoad) { loadLanguage(language); @@ -71,7 +71,6 @@ private static boolean doesLangFileExist(MeteorAddon addon, String languageCode) } public static void loadLanguage(String languageCode) { - languageCode = languageCode.toLowerCase(); if (languages.containsKey(languageCode)) return; LanguageDefinition definition = languageDefinitions.get(languageCode); @@ -148,7 +147,7 @@ public static MeteorLanguage getLanguage(String lang) { } public static MeteorLanguage getCurrentLanguage() { - return languages.getOrDefault(mc.options.language.toLowerCase(), getDefaultLanguage()); + return languages.getOrDefault(mc.options.language, getDefaultLanguage()); } public static MeteorLanguage getDefaultLanguage() { @@ -163,13 +162,13 @@ public static double percentLocalised() { // translation. Maybe that will change in the future. if (isEnglish()) return 100; - MeteorLanguage currentLang = languages.get(mc.options.language.toLowerCase()); + MeteorLanguage currentLang = languages.get(mc.options.language); double currentLangSize = currentLang != null ? currentLang.translations.size() : 0; return (currentLangSize / getDefaultLanguage().translations.size()) * 100; } public static boolean isEnglish() { - return mc.options.language.toLowerCase().startsWith("en"); + return mc.options.language.startsWith("en"); } public static class MeteorLanguage extends Language { From d380320919f29472e3b0bdfd03276655a10971aa Mon Sep 17 00:00:00 2001 From: RacoonDog <32882447+racoondog@users.noreply.github.com> Date: Tue, 18 Nov 2025 01:15:47 -0500 Subject: [PATCH 16/52] automatic addon language registration --- .../meteorclient/addons/MeteorAddon.java | 24 ------------------- .../utils/misc/MeteorTranslations.java | 2 +- 2 files changed, 1 insertion(+), 25 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/addons/MeteorAddon.java b/src/main/java/meteordevelopment/meteorclient/addons/MeteorAddon.java index 01286ead0f..5c2eb55fff 100644 --- a/src/main/java/meteordevelopment/meteorclient/addons/MeteorAddon.java +++ b/src/main/java/meteordevelopment/meteorclient/addons/MeteorAddon.java @@ -7,8 +7,6 @@ import meteordevelopment.meteorclient.utils.render.color.Color; -import java.io.InputStream; - public abstract class MeteorAddon { /** This field is automatically assigned from fabric.mod.json file. * @since 1.21.11 */ // todo replace with exact version when released @@ -40,26 +38,4 @@ public GithubRepo getRepo() { public String getCommit() { return null; } - - /** - * Example implementation: - *
{@code
-     *  @Override
-     *  public InputStream provideLanguage(String lang) {
-     *      return Addon.class.getResourceAsStream("/assets/addon-name/language/" + lang + ".json")
-     *  }
-     * }
-     * 

- * - * Addons should not store their language files in the /assets/xxx/lang/ path as it opens up users to detection - * by servers via the translation exploit. - * Storing them anywhere else should prevent them from getting picked up via the vanilla resource loader. - * - * @param lang A language code in lowercase - * @return An InputStream for the relevant json translation file, or null if the addon doesn't have - * a file for that language. - */ - public InputStream provideLanguage(String lang) { - return null; - } } diff --git a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java index 5d121fb62c..92a97a3f16 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java @@ -98,7 +98,7 @@ public static void loadLanguage(String languageCode) { for (MeteorAddon addon : AddonManager.ADDONS) { if (addon == MeteorClient.ADDON) continue; - try (InputStream stream = addon.provideLanguage(languageCode)) { + try (InputStream stream = addon.getClass().getResourceAsStream("/assets/" + addon.id + "/language/" + languageCode + ".json")) { if (stream == null) continue; // noinspection unchecked From 5848a9fc931b5a718c7aa79f896af8a87dd653c2 Mon Sep 17 00:00:00 2001 From: RacoonDog <32882447+racoondog@users.noreply.github.com> Date: Tue, 18 Nov 2025 01:37:26 -0500 Subject: [PATCH 17/52] oops turns out you dont have those during `@PreInit` --- .../meteorclient/utils/misc/MeteorTranslations.java | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java index 92a97a3f16..e6b460be07 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java @@ -34,17 +34,10 @@ public class MeteorTranslations { private static final String EN_US_CODE = "en_us"; private static final Gson GSON = new Gson(); private static final Map languages = new Object2ObjectOpenHashMap<>(); - private static final Map languageDefinitions = new Object2ObjectOpenHashMap<>(); private static MeteorLanguage defaultLanguage; @PreInit public static void preInit() { - MinecraftClient.getInstance().getLanguageManager().getAllLanguages().forEach((code, definition) -> { - if (hasLocalization(code)) { - languageDefinitions.put(code, definition); - } - }); - List toLoad = new ArrayList<>(2); toLoad.add(EN_US_CODE); if (!mc.options.language.equals(EN_US_CODE)) toLoad.add(mc.options.language); @@ -73,7 +66,7 @@ private static boolean doesLangFileExist(MeteorAddon addon, String languageCode) public static void loadLanguage(String languageCode) { if (languages.containsKey(languageCode)) return; - LanguageDefinition definition = languageDefinitions.get(languageCode); + LanguageDefinition definition = MinecraftClient.getInstance().getLanguageManager().getLanguage(languageCode); if (definition == null) return; Object2ObjectOpenHashMap languageMap = new Object2ObjectOpenHashMap<>(); @@ -138,10 +131,6 @@ public static String translate(String key, String fallback, Object... args) { } } - public static Map getLanguageDefinitions() { - return languageDefinitions; - } - public static MeteorLanguage getLanguage(String lang) { return languages.get(lang); } From 0d02a2bab5217c026679cfd2fec508eb37f42b46 Mon Sep 17 00:00:00 2001 From: RacoonDog <32882447+racoondog@users.noreply.github.com> Date: Tue, 18 Nov 2025 01:55:00 -0500 Subject: [PATCH 18/52] fix command descriptions --- .../meteorclient/commands/commands/CommandsCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/CommandsCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/CommandsCommand.java index ca08d56e89..7f63c4cd26 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/CommandsCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/CommandsCommand.java @@ -53,7 +53,7 @@ private MutableText getCommandText(Command command) { } tooltip.append(aliases.formatted(Formatting.GRAY)).append("\n\n"); - tooltip.append(translatable("description")).formatted(Formatting.WHITE); + tooltip.append(command.translatable("description")).formatted(Formatting.WHITE); // Text MutableText text = Text.literal(Utils.nameToTitle(command.getName())); From 4df0c08345f6b6b0e6eeee9f7d2c62c27da7ae22 Mon Sep 17 00:00:00 2001 From: RacoonDog <32882447+racoondog@users.noreply.github.com> Date: Tue, 18 Nov 2025 01:55:16 -0500 Subject: [PATCH 19/52] sadly cant use these --- .../utils/misc/MeteorTranslations.java | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java index e6b460be07..8ca54ff676 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java @@ -49,20 +49,6 @@ public static void preInit() { defaultLanguage = getLanguage(EN_US_CODE); } - private static boolean hasLocalization(String languageCode) { - if (doesLangFileExist(MeteorClient.ADDON, languageCode)) return true; - - for (MeteorAddon addon : AddonManager.ADDONS) { - if (doesLangFileExist(addon, languageCode)) return true; - } - - return false; - } - - private static boolean doesLangFileExist(MeteorAddon addon, String languageCode) { - return addon.getClass().getResource("/assets/" + addon.id + "/language/" + languageCode + ".json") != null; - } - public static void loadLanguage(String languageCode) { if (languages.containsKey(languageCode)) return; From eec45e4174d202cd56112422e8a96a003b8ac90d Mon Sep 17 00:00:00 2001 From: RacoonDog <32882447+racoondog@users.noreply.github.com> Date: Tue, 18 Nov 2025 02:30:25 -0500 Subject: [PATCH 20/52] dont have like all of the languages --- .../meteorclient/mixin/LanguageManagerMixin.java | 1 + .../meteorclient/utils/misc/MeteorTranslations.java | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/LanguageManagerMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/LanguageManagerMixin.java index 228143cef8..4a1868909c 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/LanguageManagerMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/LanguageManagerMixin.java @@ -17,5 +17,6 @@ public class LanguageManagerMixin { @Inject(method = "setLanguage", at = @At("TAIL")) private void onSetLanguage(String languageCode, CallbackInfo ci) { MeteorTranslations.loadLanguage(languageCode); + MeteorTranslations.clearUnusedLanguages(languageCode); } } diff --git a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java index 8ca54ff676..c726bb5d4e 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java @@ -22,10 +22,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.IllegalFormatException; -import java.util.List; -import java.util.Map; +import java.util.*; import static meteordevelopment.meteorclient.MeteorClient.mc; @@ -95,6 +92,10 @@ public static void loadLanguage(String languageCode) { } } + public static void clearUnusedLanguages(String currentLanguageCode) { + languages.keySet().removeIf(languageCode -> !languageCode.equals(EN_US_CODE) && !languageCode.equals(currentLanguageCode)); + } + public static String translate(String key, Object... args) { MeteorLanguage currentLang = getCurrentLanguage(); String translated = currentLang.get(key, getDefaultLanguage().get(key)); From ad3c0b3b8a844f5b8f2cbef36959f64428838c3e Mon Sep 17 00:00:00 2001 From: RacoonDog <32882447+racoondog@users.noreply.github.com> Date: Tue, 18 Nov 2025 03:25:55 -0500 Subject: [PATCH 21/52] fix wasp target info --- src/main/resources/assets/meteor-client/language/en_us.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/assets/meteor-client/language/en_us.json b/src/main/resources/assets/meteor-client/language/en_us.json index 35aa0b8e0c..c27502e5fe 100644 --- a/src/main/resources/assets/meteor-client/language/en_us.json +++ b/src/main/resources/assets/meteor-client/language/en_us.json @@ -69,6 +69,6 @@ "meteor.command.vclip.description": "Lets you clip through blocks vertically.", "meteor.command.wasp.description": "Sets the auto wasp target.", "meteor.command.wasp.exception.cant_wasp_self": "You cannot target yourself!", - "meteor.command.wasp.info.target": "%d set as target.", + "meteor.command.wasp.info.target": "%s set as target.", "meteor.command.waypoint.description": "Manages waypoints." } From 8a22141d3aa4cfaf9245f6dd213797e116e3e90c Mon Sep 17 00:00:00 2001 From: Wide_Cat Date: Fri, 2 Jan 2026 15:02:51 +0000 Subject: [PATCH 22/52] fix issues --- .../meteorclient/gui/screens/ModulesScreen.java | 3 ++- src/main/resources/assets/meteor-client/language/en_gb.json | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/ModulesScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/ModulesScreen.java index bb8399149d..a20aac7c9d 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/ModulesScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/ModulesScreen.java @@ -9,6 +9,7 @@ import meteordevelopment.meteorclient.gui.tabs.TabScreen; import meteordevelopment.meteorclient.gui.tabs.Tabs; import meteordevelopment.meteorclient.gui.utils.Cell; +import meteordevelopment.meteorclient.gui.widgets.WLabel; import meteordevelopment.meteorclient.gui.widgets.containers.WContainer; import meteordevelopment.meteorclient.gui.widgets.containers.WSection; import meteordevelopment.meteorclient.gui.widgets.containers.WVerticalList; @@ -22,8 +23,8 @@ import meteordevelopment.meteorclient.utils.misc.NbtUtils; import meteordevelopment.meteorclient.utils.render.prompts.YesNoPrompt; import net.minecraft.item.Items; -import net.minecraft.util.Util; import net.minecraft.util.Pair; +import net.minecraft.util.Util; import java.util.ArrayList; import java.util.List; diff --git a/src/main/resources/assets/meteor-client/language/en_gb.json b/src/main/resources/assets/meteor-client/language/en_gb.json index 35aa0b8e0c..c27502e5fe 100644 --- a/src/main/resources/assets/meteor-client/language/en_gb.json +++ b/src/main/resources/assets/meteor-client/language/en_gb.json @@ -69,6 +69,6 @@ "meteor.command.vclip.description": "Lets you clip through blocks vertically.", "meteor.command.wasp.description": "Sets the auto wasp target.", "meteor.command.wasp.exception.cant_wasp_self": "You cannot target yourself!", - "meteor.command.wasp.info.target": "%d set as target.", + "meteor.command.wasp.info.target": "%s set as target.", "meteor.command.waypoint.description": "Manages waypoints." } From 6f108f7e79f01c9fdde6b50c79ce5dae3d89f514 Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Sat, 3 Jan 2026 00:44:41 -0500 Subject: [PATCH 23/52] define `Settings` base keys --- .../meteorclient/gui/GuiTheme.java | 3 +- .../pathing/BaritoneSettings.java | 2 +- .../meteorclient/renderer/MeshRenderer.java | 1 + .../meteorclient/settings/Settings.java | 12 +++ .../meteorclient/systems/config/Config.java | 2 +- .../meteorclient/systems/hud/Hud.java | 2 +- .../meteorclient/systems/hud/HudElement.java | 3 +- .../systems/hud/screens/HudElementScreen.java | 2 +- .../meteorclient/systems/macros/Macro.java | 2 +- .../meteorclient/systems/modules/Module.java | 3 +- .../render/blockesp/ESPBlockDataScreen.java | 2 +- .../modules/render/marker/BaseMarker.java | 75 ++++++++++--------- .../systems/profiles/Profile.java | 2 +- .../meteorclient/systems/proxies/Proxies.java | 2 +- .../meteorclient/systems/proxies/Proxy.java | 2 +- .../systems/waypoints/Waypoint.java | 2 +- 16 files changed, 70 insertions(+), 47 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/gui/GuiTheme.java b/src/main/java/meteordevelopment/meteorclient/gui/GuiTheme.java index 2b52425f84..e387ae6f37 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/GuiTheme.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/GuiTheme.java @@ -40,7 +40,7 @@ public abstract class GuiTheme implements ISerializable { public static final double TITLE_TEXT_SCALE = 1.25; public final String name; - public final Settings settings = new Settings(); + public final Settings settings; public boolean disableHoverColor; @@ -50,6 +50,7 @@ public abstract class GuiTheme implements ISerializable { public GuiTheme(String name) { this.name = name; + this.settings = new Settings("theme." + name); } public void beforeRender() { diff --git a/src/main/java/meteordevelopment/meteorclient/pathing/BaritoneSettings.java b/src/main/java/meteordevelopment/meteorclient/pathing/BaritoneSettings.java index 8294edaa12..72b44d9f0a 100644 --- a/src/main/java/meteordevelopment/meteorclient/pathing/BaritoneSettings.java +++ b/src/main/java/meteordevelopment/meteorclient/pathing/BaritoneSettings.java @@ -19,7 +19,7 @@ import java.util.Map; public class BaritoneSettings implements IPathManager.ISettings { - private final Settings settings = new Settings(); + private final Settings settings = new Settings("baritone"); private Setting walkOnWater, walkOnLava; private Setting step, noFall; diff --git a/src/main/java/meteordevelopment/meteorclient/renderer/MeshRenderer.java b/src/main/java/meteordevelopment/meteorclient/renderer/MeshRenderer.java index 738e623776..961b7921f6 100644 --- a/src/main/java/meteordevelopment/meteorclient/renderer/MeshRenderer.java +++ b/src/main/java/meteordevelopment/meteorclient/renderer/MeshRenderer.java @@ -166,6 +166,7 @@ public void end() { pass.setPipeline(pipeline); pass.setUniform("MeshData", meshData); + uniforms.forEach(pass::setUniform); for (var name : uniforms.keySet()) { pass.setUniform(name, uniforms.get(name)); } diff --git a/src/main/java/meteordevelopment/meteorclient/settings/Settings.java b/src/main/java/meteordevelopment/meteorclient/settings/Settings.java index 6e4ca7d2d7..7d40216b39 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/Settings.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/Settings.java @@ -15,6 +15,7 @@ import net.minecraft.nbt.NbtElement; import net.minecraft.nbt.NbtList; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Iterator; @@ -23,6 +24,17 @@ public class Settings implements ISerializable, Iterable { private SettingGroup defaultGroup; public final List groups = new ArrayList<>(1); + /// {@code null} when {@link Settings} is internal, should not be passed to {@link GuiTheme#settings(Settings)} + public final @Nullable String baseTranslationKey; + + public Settings(@NotNull String baseTranslationKey) { + this.baseTranslationKey = baseTranslationKey; + } + + /// @apiNote marks this {@link Settings} as internal, using it in user-facing UIs will throw + public Settings() { + this.baseTranslationKey = null; + } public void onActivated() { for (SettingGroup group : groups) { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/config/Config.java b/src/main/java/meteordevelopment/meteorclient/systems/config/Config.java index f8deb6eff2..863a7f12f9 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/config/Config.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/config/Config.java @@ -24,7 +24,7 @@ import static meteordevelopment.meteorclient.MeteorClient.mc; public class Config extends System { - public final Settings settings = new Settings(); + public final Settings settings = new Settings("config"); private final SettingGroup sgVisual = settings.createGroup("Visual"); private final SettingGroup sgModules = settings.createGroup("Modules"); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/Hud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/Hud.java index b5fa527675..23f488126a 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/Hud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/Hud.java @@ -31,7 +31,7 @@ public class Hud extends System implements Iterable { public static final HudGroup GROUP = new HudGroup("Meteor"); public boolean active; - public Settings settings = new Settings(); + public Settings settings = new Settings("hud"); public final Map> infos = new TreeMap<>(); private final List elements = new ArrayList<>(); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/HudElement.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/HudElement.java index 1868e9c1d2..75ecb138da 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/HudElement.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/HudElement.java @@ -18,7 +18,7 @@ public abstract class HudElement implements Snapper.Element, ISerializable info; private boolean active; - public final Settings settings = new Settings(); + public final Settings settings; public final HudBox box = new HudBox(this); public boolean autoAnchors = true; @@ -26,6 +26,7 @@ public abstract class HudElement implements Snapper.Element, ISerializable info) { this.info = info; + this.settings = new Settings("hud." + info.name); this.active = true; } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/screens/HudElementScreen.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/screens/HudElementScreen.java index 387b729678..3b8c03b450 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/screens/HudElementScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/screens/HudElementScreen.java @@ -36,7 +36,7 @@ public HudElementScreen(GuiTheme theme, HudElement element) { this.element = element; - settings = new Settings(); + settings = new Settings("hud.base"); SettingGroup sg = settings.createGroup("Anchors"); sg.add(new BoolSetting.Builder() .name("auto-anchors") diff --git a/src/main/java/meteordevelopment/meteorclient/systems/macros/Macro.java b/src/main/java/meteordevelopment/meteorclient/systems/macros/Macro.java index d1e04fca43..c7249a8a5f 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/macros/Macro.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/macros/Macro.java @@ -22,7 +22,7 @@ import static meteordevelopment.meteorclient.MeteorClient.mc; public class Macro implements ISerializable { - public final Settings settings = new Settings(); + public final Settings settings = new Settings("macro"); private final SettingGroup sgGeneral = settings.getDefaultGroup(); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/Module.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/Module.java index 1e7fd08a29..45927ec0c4 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/Module.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/Module.java @@ -37,7 +37,7 @@ public abstract class Module implements ISerializable, Comparable se @Override public void initWidgets() { - Settings settings = new Settings(); + Settings settings = new Settings("module.block-esp.data"); SettingGroup sgGeneral = settings.getDefaultGroup(); SettingGroup sgTracer = settings.createGroup("Tracer"); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/BaseMarker.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/BaseMarker.java index 81617cd0cb..b4db8dad09 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/BaseMarker.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/BaseMarker.java @@ -17,40 +17,47 @@ import net.minecraft.nbt.NbtCompound; public abstract class BaseMarker implements ISerializable { - public final Settings settings = new Settings(); - - protected final SettingGroup sgBase = settings.createGroup("Base"); - - public final Setting name = sgBase.add(new StringSetting.Builder() - .name("name") - .description("Custom name for this marker.") - .build() - ); - - protected final Setting description = sgBase.add(new StringSetting.Builder() - .name("description") - .description("Custom description for this marker.") - .build() - ); - - private final Setting dimension = sgBase.add(new EnumSetting.Builder() - .name("dimension") - .description("In which dimension this marker should be visible.") - .defaultValue(Dimension.Overworld) - .build() - ); - - private final Setting active = sgBase.add(new BoolSetting.Builder() - .name("active") - .description("Is this marker visible.") - .defaultValue(false) - .build() - ); - - public BaseMarker(String name) { - this.name.set(name); - - dimension.set(PlayerUtils.getDimension()); + public final Settings settings; + + protected final SettingGroup sgBase; + + public final Setting name; + protected final Setting description; + private final Setting dimension; + private final Setting active; + + public BaseMarker(String type) { + this.settings = new Settings(type); + + this.sgBase = settings.createGroup("Base"); + + this.name = sgBase.add(new StringSetting.Builder() + .name("name") + .description("Custom name for this marker.") + .build() + ); + this.name.set(type); + + this.description = sgBase.add(new StringSetting.Builder() + .name("description") + .description("Custom description for this marker.") + .build() + ); + + this.dimension = sgBase.add(new EnumSetting.Builder() + .name("dimension") + .description("In which dimension this marker should be visible.") + .defaultValue(Dimension.Overworld) + .build() + ); + this.dimension.set(PlayerUtils.getDimension()); + + this.active = sgBase.add(new BoolSetting.Builder() + .name("active") + .description("Is this marker visible.") + .defaultValue(false) + .build() + ); } protected void render(Render3DEvent event) {} diff --git a/src/main/java/meteordevelopment/meteorclient/systems/profiles/Profile.java b/src/main/java/meteordevelopment/meteorclient/systems/profiles/Profile.java index 8ce3aeb02f..3956307408 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/profiles/Profile.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/profiles/Profile.java @@ -23,7 +23,7 @@ import java.util.Objects; public class Profile implements ISerializable { - public final Settings settings = new Settings(); + public final Settings settings = new Settings("profile"); private final SettingGroup sgGeneral = settings.getDefaultGroup(); private final SettingGroup sgSave = settings.createGroup("Save"); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/proxies/Proxies.java b/src/main/java/meteordevelopment/meteorclient/systems/proxies/Proxies.java index bb99af47a0..5d1abd3918 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/proxies/Proxies.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/proxies/Proxies.java @@ -18,7 +18,7 @@ import java.util.regex.Pattern; public class Proxies extends System implements Iterable { - public final Settings settings = new Settings(); + public final Settings settings = new Settings("proxies"); private final SettingGroup sgRefreshing = settings.createGroup("Refreshing"); private final SettingGroup sgCleanup = settings.createGroup("Cleanup"); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/proxies/Proxy.java b/src/main/java/meteordevelopment/meteorclient/systems/proxies/Proxy.java index f0d53b89da..92d246f21e 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/proxies/Proxy.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/proxies/Proxy.java @@ -25,7 +25,7 @@ import java.util.Objects; public class Proxy implements ISerializable { - public final Settings settings = new Settings(); + public final Settings settings = new Settings("proxy"); private final SettingGroup sgGeneral = settings.getDefaultGroup(); private final SettingGroup sgOptional = settings.createGroup("Optional"); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/waypoints/Waypoint.java b/src/main/java/meteordevelopment/meteorclient/systems/waypoints/Waypoint.java index 08eeb12808..ee862a39a3 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/waypoints/Waypoint.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/waypoints/Waypoint.java @@ -23,7 +23,7 @@ import java.util.UUID; public class Waypoint implements ISerializable { - public final Settings settings = new Settings(); + public final Settings settings = new Settings("waypoint"); private final SettingGroup sgVisual = settings.createGroup("Visual"); private final SettingGroup sgPosition = settings.createGroup("Position"); From 66e129416b301d82b60fe6717f7316b4bff8cf11 Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Sat, 3 Jan 2026 02:27:44 -0500 Subject: [PATCH 24/52] throw on internal settings usage --- src/main/java/meteordevelopment/meteorclient/gui/GuiTheme.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/meteordevelopment/meteorclient/gui/GuiTheme.java b/src/main/java/meteordevelopment/meteorclient/gui/GuiTheme.java index e387ae6f37..2160747723 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/GuiTheme.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/GuiTheme.java @@ -214,6 +214,7 @@ public WKeybind keybind(Keybind keybind, Keybind defaultValue) { } public WWidget settings(Settings settings, String filter) { + if (settings.baseTranslationKey == null) throw new IllegalArgumentException("Cannot use internal Settings in a GuiTheme!"); return settingsFactory.create(this, settings, filter); } public WWidget settings(Settings settings) { From bd99ca24f7c6176fd47d5b2b4285b646552c5aa8 Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Sat, 3 Jan 2026 03:29:37 -0500 Subject: [PATCH 25/52] add supplier fallback translate function --- .../utils/misc/MeteorTranslations.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java index c726bb5d4e..bc86976ad2 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java @@ -17,12 +17,14 @@ import net.minecraft.text.OrderedText; import net.minecraft.text.StringVisitable; import net.minecraft.util.Language; +import org.jetbrains.annotations.Nullable; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.util.*; +import java.util.function.Supplier; import static meteordevelopment.meteorclient.MeteorClient.mc; @@ -118,6 +120,17 @@ public static String translate(String key, String fallback, Object... args) { } } + public static String translate(String key, Supplier fallback, Object... args) { + MeteorLanguage currentLang = getCurrentLanguage(); + String translated = currentLang.get(key, getDefaultLanguage().get(key, fallback)); + + try { + return String.format(translated, args); + } catch (IllegalFormatException e) { + return fallback.get(); + } + } + public static MeteorLanguage getLanguage(String lang) { return languages.get(lang); } @@ -161,6 +174,11 @@ public String get(String key, String fallback) { return translations.getOrDefault(key, fallback); } + public String get(String key, Supplier fallback) { + @Nullable String string = translations.get(key); + return string != null ? string : fallback.get(); + } + @Override public boolean hasTranslation(String key) { return translations.containsKey(key); From fffeba8f2efb895c9d6630e175aea5a0088cbb7b Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Sat, 3 Jan 2026 04:11:36 -0500 Subject: [PATCH 26/52] ignore setting group case when loading nbt --- .../meteordevelopment/meteorclient/settings/Settings.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/meteordevelopment/meteorclient/settings/Settings.java b/src/main/java/meteordevelopment/meteorclient/settings/Settings.java index 7d40216b39..c3a1a8a74b 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/Settings.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/Settings.java @@ -8,6 +8,7 @@ import meteordevelopment.meteorclient.gui.GuiTheme; import meteordevelopment.meteorclient.gui.widgets.containers.WContainer; import meteordevelopment.meteorclient.systems.modules.Module; +import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.misc.ISerializable; import meteordevelopment.meteorclient.utils.render.color.RainbowColors; import meteordevelopment.meteorclient.utils.render.color.SettingColor; @@ -76,6 +77,7 @@ public void reset() { } public SettingGroup getGroup(String name) { + name = Utils.titleToName(name); for (SettingGroup sg : this) { if (sg.name.equals(name)) return sg; } @@ -88,7 +90,7 @@ public int sizeGroups() { } public SettingGroup getDefaultGroup() { - if (defaultGroup == null) defaultGroup = createGroup("General"); + if (defaultGroup == null) defaultGroup = createGroup("general"); return defaultGroup; } From a38282ce1c2bca27646c93395a93bf85577b53db Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Sat, 3 Jan 2026 05:12:32 -0500 Subject: [PATCH 27/52] map modules --- .../commands/commands/BindsCommand.java | 7 +- .../commands/commands/ModulesCommand.java | 6 +- .../gui/DefaultSettingsWidgetFactory.java | 14 +- .../meteorclient/gui/GuiTheme.java | 2 +- .../gui/screens/ModuleScreen.java | 4 +- .../settings/ModuleListSettingScreen.java | 4 +- .../themes/meteor/widgets/WMeteorModule.java | 2 +- .../hud/elements/ActiveModulesHud.java | 8 +- .../systems/hud/elements/ModuleInfosHud.java | 4 +- .../meteorclient/systems/modules/Module.java | 43 +- .../meteorclient/systems/modules/Modules.java | 9 +- .../systems/modules/combat/AnchorAura.java | 34 +- .../systems/modules/combat/AntiAnchor.java | 4 +- .../systems/modules/combat/AntiAnvil.java | 4 +- .../systems/modules/combat/AntiBed.java | 6 +- .../systems/modules/combat/ArrowDodge.java | 11 +- .../systems/modules/combat/AttributeSwap.java | 40 +- .../systems/modules/combat/AutoAnvil.java | 10 +- .../systems/modules/combat/AutoArmor.java | 8 +- .../systems/modules/combat/AutoCity.java | 16 +- .../systems/modules/combat/AutoEXP.java | 8 +- .../systems/modules/combat/AutoLog.java | 17 +- .../systems/modules/combat/AutoTotem.java | 8 +- .../systems/modules/combat/AutoTrap.java | 21 +- .../systems/modules/combat/AutoWeapon.java | 5 +- .../systems/modules/combat/AutoWeb.java | 16 +- .../systems/modules/combat/BedAura.java | 28 +- .../systems/modules/combat/BowAimbot.java | 8 +- .../systems/modules/combat/BowSpam.java | 9 +- .../systems/modules/combat/Burrow.java | 11 +- .../systems/modules/combat/Criticals.java | 8 +- .../systems/modules/combat/CrystalAura.java | 71 +- .../systems/modules/combat/Hitboxes.java | 16 +- .../systems/modules/combat/HoleFiller.java | 29 +- .../systems/modules/combat/KillAura.java | 31 +- .../systems/modules/combat/Offhand.java | 18 +- .../systems/modules/combat/Quiver.java | 12 +- .../systems/modules/combat/SelfAnvil.java | 2 +- .../systems/modules/combat/SelfTrap.java | 15 +- .../systems/modules/combat/SelfWeb.java | 7 +- .../systems/modules/combat/Surround.java | 31 +- .../systems/modules/misc/AntiPacketKick.java | 4 +- .../systems/modules/misc/AutoReconnect.java | 4 +- .../systems/modules/misc/BetterBeacons.java | 2 +- .../systems/modules/misc/BetterChat.java | 33 +- .../systems/modules/misc/BookBot.java | 10 +- .../systems/modules/misc/DiscordPresence.java | 12 +- .../systems/modules/misc/InventoryTweaks.java | 39 +- .../systems/modules/misc/MessageAura.java | 4 +- .../systems/modules/misc/Notebot.java | 29 +- .../systems/modules/misc/Notifier.java | 28 +- .../systems/modules/misc/PacketCanceller.java | 4 +- .../systems/modules/misc/ServerSpoof.java | 7 +- .../systems/modules/misc/SoundBlocker.java | 3 +- .../systems/modules/misc/Spam.java | 13 +- .../systems/modules/misc/swarm/Swarm.java | 5 +- .../systems/modules/movement/AirJump.java | 3 +- .../systems/modules/movement/Anchor.java | 7 +- .../systems/modules/movement/AntiVoid.java | 3 +- .../systems/modules/movement/AutoJump.java | 5 +- .../systems/modules/movement/AutoWalk.java | 7 +- .../systems/modules/movement/AutoWasp.java | 9 +- .../systems/modules/movement/Blink.java | 5 +- .../systems/modules/movement/ClickTP.java | 2 +- .../systems/modules/movement/ElytraBoost.java | 6 +- .../modules/movement/EntityControl.java | 22 +- .../systems/modules/movement/FastClimb.java | 5 +- .../systems/modules/movement/Flight.java | 11 +- .../systems/modules/movement/GUIMove.java | 8 +- .../systems/modules/movement/HighJump.java | 3 +- .../systems/modules/movement/Jesus.java | 19 +- .../systems/modules/movement/LongJump.java | 12 +- .../systems/modules/movement/NoFall.java | 8 +- .../systems/modules/movement/NoSlow.java | 14 +- .../systems/modules/movement/Parkour.java | 3 +- .../systems/modules/movement/ReverseStep.java | 5 +- .../systems/modules/movement/SafeWalk.java | 11 +- .../systems/modules/movement/Scaffold.java | 22 +- .../systems/modules/movement/Slippy.java | 6 +- .../systems/modules/movement/Sneak.java | 3 +- .../systems/modules/movement/Spider.java | 3 +- .../systems/modules/movement/Sprint.java | 7 +- .../systems/modules/movement/Step.java | 6 +- .../modules/movement/TridentBoost.java | 4 +- .../systems/modules/movement/Velocity.java | 16 +- .../modules/movement/elytrafly/ElytraFly.java | 45 +- .../systems/modules/movement/speed/Speed.java | 10 +- .../systems/modules/player/AirPlace.java | 10 +- .../systems/modules/player/AntiAFK.java | 19 +- .../systems/modules/player/AntiHunger.java | 4 +- .../systems/modules/player/AutoClicker.java | 7 +- .../systems/modules/player/AutoEat.java | 10 +- .../systems/modules/player/AutoFish.java | 9 +- .../systems/modules/player/AutoGap.java | 17 +- .../systems/modules/player/AutoMend.java | 5 +- .../systems/modules/player/AutoReplenish.java | 11 +- .../systems/modules/player/AutoRespawn.java | 2 +- .../systems/modules/player/AutoTool.java | 14 +- .../systems/modules/player/BreakDelay.java | 4 +- .../systems/modules/player/ChestSwap.java | 7 +- .../systems/modules/player/EXPThrower.java | 2 +- .../systems/modules/player/FakePlayer.java | 5 +- .../systems/modules/player/FastUse.java | 6 +- .../systems/modules/player/GhostHand.java | 2 +- .../modules/player/InstantRebreak.java | 11 +- .../modules/player/LiquidInteract.java | 2 +- .../modules/player/MiddleClickExtra.java | 9 +- .../systems/modules/player/Multitask.java | 3 +- .../systems/modules/player/NameProtect.java | 5 +- .../systems/modules/player/NoInteract.java | 19 +- .../systems/modules/player/NoMiningTrace.java | 4 +- .../systems/modules/player/NoRotate.java | 2 +- .../modules/player/NoStatusEffects.java | 3 +- .../systems/modules/player/OffhandCrash.java | 5 +- .../systems/modules/player/Portals.java | 2 +- .../systems/modules/player/PotionSaver.java | 4 +- .../systems/modules/player/Reach.java | 4 +- .../systems/modules/player/Rotation.java | 10 +- .../systems/modules/player/SpeedMine.java | 8 +- .../systems/modules/render/BetterTab.java | 9 +- .../modules/render/BetterTooltips.java | 28 +- .../modules/render/BlockSelection.java | 8 +- .../systems/modules/render/Blur.java | 10 +- .../systems/modules/render/BossStack.java | 5 +- .../systems/modules/render/Breadcrumbs.java | 5 +- .../modules/render/BreakIndicators.java | 6 +- .../systems/modules/render/CameraTweaks.java | 9 +- .../systems/modules/render/Chams.java | 28 +- .../systems/modules/render/CityESP.java | 7 +- .../systems/modules/render/ESP.java | 24 +- .../systems/modules/render/EntityOwner.java | 3 +- .../systems/modules/render/FreeLook.java | 9 +- .../systems/modules/render/Freecam.java | 16 +- .../systems/modules/render/Fullbright.java | 5 +- .../systems/modules/render/HandView.java | 22 +- .../systems/modules/render/HoleESP.java | 20 +- .../systems/modules/render/ItemHighlight.java | 4 +- .../systems/modules/render/ItemPhysics.java | 3 +- .../systems/modules/render/LightOverlay.java | 10 +- .../systems/modules/render/LogoutSpots.java | 11 +- .../systems/modules/render/Nametags.java | 36 +- .../systems/modules/render/NoRender.java | 59 +- .../systems/modules/render/PopChams.java | 10 +- .../systems/modules/render/StorageESP.java | 20 +- .../systems/modules/render/TimeChanger.java | 3 +- .../systems/modules/render/Tracers.java | 26 +- .../systems/modules/render/Trail.java | 4 +- .../systems/modules/render/Trajectories.java | 18 +- .../systems/modules/render/TunnelESP.java | 7 +- .../systems/modules/render/VoidESP.java | 11 +- .../systems/modules/render/WallHack.java | 5 +- .../modules/render/WaypointsModule.java | 8 +- .../systems/modules/render/Xray.java | 5 +- .../systems/modules/render/Zoom.java | 8 +- .../modules/render/blockesp/BlockESP.java | 6 +- .../systems/modules/render/marker/Marker.java | 2 +- .../systems/modules/world/Ambience.java | 25 +- .../systems/modules/world/AutoBreed.java | 6 +- .../systems/modules/world/AutoBrewer.java | 3 +- .../systems/modules/world/AutoMount.java | 5 +- .../systems/modules/world/AutoNametag.java | 7 +- .../systems/modules/world/AutoShearer.java | 5 +- .../systems/modules/world/AutoSign.java | 3 +- .../systems/modules/world/AutoSmelter.java | 5 +- .../systems/modules/world/BuildHeight.java | 2 +- .../systems/modules/world/Collisions.java | 6 +- .../systems/modules/world/EChestFarmer.java | 12 +- .../systems/modules/world/EndermanLook.java | 4 +- .../systems/modules/world/Excavator.java | 11 +- .../systems/modules/world/Flamethrower.java | 8 +- .../systems/modules/world/HighwayBuilder.java | 54 +- .../systems/modules/world/InfinityMiner.java | 12 +- .../systems/modules/world/LiquidFiller.java | 15 +- .../systems/modules/world/MountBypass.java | 2 +- .../systems/modules/world/NoGhostBlocks.java | 4 +- .../systems/modules/world/Nuker.java | 36 +- .../systems/modules/world/PacketMine.java | 15 +- .../systems/modules/world/SpawnProofer.java | 10 +- .../systems/modules/world/StashFinder.java | 21 +- .../systems/modules/world/Timer.java | 3 +- .../systems/modules/world/VeinMiner.java | 14 +- .../assets/meteor-client/language/en_us.json | 3384 ++++++++++++++++- 182 files changed, 3747 insertions(+), 1714 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/BindsCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/BindsCommand.java index d21e6352d7..76abdda30c 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/BindsCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/BindsCommand.java @@ -9,7 +9,6 @@ import meteordevelopment.meteorclient.commands.Command; import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.meteorclient.systems.modules.Modules; -import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.player.ChatUtils; import net.minecraft.command.CommandSource; import net.minecraft.text.HoverEvent; @@ -37,7 +36,7 @@ public void build(LiteralArgumentBuilder builder) { for (Module module : modules) { HoverEvent hoverEvent = new HoverEvent.ShowText(getTooltip(module)); - MutableText text = Text.literal(module.title).formatted(Formatting.WHITE); + MutableText text = module.getTitleText().formatted(Formatting.WHITE); text.setStyle(text.getStyle().withHoverEvent(hoverEvent)); MutableText sep = Text.literal(" - "); @@ -56,8 +55,8 @@ public void build(LiteralArgumentBuilder builder) { } private MutableText getTooltip(Module module) { - MutableText tooltip = Text.literal(Utils.nameToTitle(module.title)).formatted(Formatting.BLUE, Formatting.BOLD).append("\n\n"); - tooltip.append(Text.literal(module.description).formatted(Formatting.WHITE)); + MutableText tooltip = module.getTitleText().formatted(Formatting.BLUE, Formatting.BOLD).append("\n\n"); + tooltip.append(module.getDescriptionText().formatted(Formatting.WHITE)); return tooltip; } } diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/ModulesCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/ModulesCommand.java index 248fea9f6a..6f31d9a2c7 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/ModulesCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/ModulesCommand.java @@ -40,11 +40,11 @@ private MutableText getModuleText(Module module) { // Hover tooltip MutableText tooltip = Text.literal(""); - tooltip.append(Text.literal(module.title).formatted(Formatting.BLUE, Formatting.BOLD)).append("\n"); + tooltip.append(module.getTitleText().formatted(Formatting.BLUE, Formatting.BOLD)).append("\n"); tooltip.append(Text.literal(module.name).formatted(Formatting.GRAY)).append("\n\n"); - tooltip.append(Text.literal(module.description).formatted(Formatting.WHITE)); + tooltip.append(module.getDescriptionText().formatted(Formatting.WHITE)); - MutableText finalModule = Text.literal(module.title); + MutableText finalModule = module.getTitleText(); if (!module.isActive()) finalModule.formatted(Formatting.GRAY); if (!module.equals(Modules.get().getGroup(module.category).getLast())) finalModule.append(Text.literal(", ").formatted(Formatting.GRAY)); finalModule.setStyle(finalModule.getStyle().withHoverEvent(new HoverEvent.ShowText(tooltip))); diff --git a/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java b/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java index 6a1b773118..3f5c6678fa 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java @@ -23,6 +23,7 @@ import meteordevelopment.meteorclient.renderer.Fonts; import meteordevelopment.meteorclient.settings.*; import meteordevelopment.meteorclient.utils.Utils; +import meteordevelopment.meteorclient.utils.misc.MeteorTranslations; import meteordevelopment.meteorclient.utils.render.color.SettingColor; import net.minecraft.client.resource.language.I18n; import org.apache.commons.lang3.Strings; @@ -81,7 +82,7 @@ public WWidget create(GuiTheme theme, Settings settings, String filter) { // Add all settings for (SettingGroup group : settings.groups) { - group(list, group, filter, removeInfoList); + group(list, group, filter, removeInfoList, settings.baseTranslationKey); } // Calculate width and set it as minimum width @@ -101,8 +102,9 @@ protected double settingTitleTopMargin() { return 6; } - private void group(WVerticalList list, SettingGroup group, String filter, List removeInfoList) { - WSection section = list.add(theme.section(group.name, group.sectionExpanded)).expandX().widget(); + private void group(WVerticalList list, SettingGroup group, String filter, List removeInfoList, String baseKey) { + String groupKey = group.name.equals("general") ? "module.base.general" : baseKey + "." + group.name; + WSection section = list.add(theme.section(MeteorTranslations.translate(groupKey, group.name), group.sectionExpanded)).expandX().widget(); section.action = () -> group.sectionExpanded = section.isExpanded(); WTable table = section.add(theme.table()).expandX().widget(); @@ -110,7 +112,9 @@ private void group(WVerticalList list, SettingGroup group, String filter, List setting : group) { - if (!Strings.CI.contains(setting.title, filter)) continue; + String settingKey = groupKey + "." + setting.name; + String title = MeteorTranslations.translate(settingKey, () -> Utils.nameToTitle(setting.name)); + if (!Strings.CI.contains(title, filter) && !Strings.CI.contains(setting.name, filter)) continue; boolean visible = setting.isVisible(); setting.lastWasVisible = visible; @@ -119,7 +123,7 @@ private void group(WVerticalList list, SettingGroup group, String filter, List account); public WWidget module(Module module) { - return module(module, module.title); + return module(module, module.getTitle()); } public abstract WWidget module(Module module, String title); diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/ModuleScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/ModuleScreen.java index a9918bddfe..280a0c4261 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/ModuleScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/ModuleScreen.java @@ -40,7 +40,7 @@ public class ModuleScreen extends WindowScreen { private WCheckbox active; public ModuleScreen(GuiTheme theme, Module module) { - super(theme, theme.favorite(module.favorite), module.title); + super(theme, theme.favorite(module.favorite), module.getTitle()); ((WFavorite) window.icon).action = () -> module.favorite = ((WFavorite) window.icon).checked; this.module = module; @@ -49,7 +49,7 @@ public ModuleScreen(GuiTheme theme, Module module) { @Override public void initWidgets() { // Description - add(theme.label(module.description, getWindowWidth() / 2.0)); + add(theme.label(module.getDescription(), getWindowWidth() / 2.0)); if (module.addon != null && module.addon != MeteorClient.ADDON) { WHorizontalList addon = add(theme.horizontalList()).expandX().widget(); diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ModuleListSettingScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ModuleListSettingScreen.java index b8b3ab4fbf..b37b410875 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ModuleListSettingScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ModuleListSettingScreen.java @@ -21,14 +21,14 @@ public ModuleListSettingScreen(GuiTheme theme, Setting> setting) { @Override protected WWidget getValueWidget(Module value) { - return theme.label(value.title); + return theme.label(value.getTitle()); } @Override protected String[] getValueNames(Module value) { String[] names = new String[value.aliases.length + 1]; System.arraycopy(value.aliases, 0, names, 1, value.aliases.length); - names[0] = value.title; + names[0] = value.getTitle(); return names; } } diff --git a/src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/widgets/WMeteorModule.java b/src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/widgets/WMeteorModule.java index 7cd5bd1481..bb0778bf63 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/widgets/WMeteorModule.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/widgets/WMeteorModule.java @@ -30,7 +30,7 @@ public class WMeteorModule extends WPressable implements MeteorWidget { public WMeteorModule(Module module, String title) { this.module = module; this.title = title; - this.tooltip = module.description; + this.tooltip = module.getDescription(); if (module.isActive()) { animationProgress1 = 1; diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ActiveModulesHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ActiveModulesHud.java index 10e21972bc..317267364f 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ActiveModulesHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ActiveModulesHud.java @@ -213,7 +213,7 @@ public void tick(HudRenderer renderer) { } modules.sort((e1, e2) -> switch (sort.get()) { - case Alphabetical -> e1.title.compareTo(e2.title); + case Alphabetical -> e1.getTitle().compareTo(e2.getTitle()); case Biggest -> Double.compare(getModuleWidth(renderer, e2), getModuleWidth(renderer, e1)); case Smallest -> Double.compare(getModuleWidth(renderer, e1), getModuleWidth(renderer, e2)); }); @@ -275,10 +275,10 @@ private void renderModule(HudRenderer renderer, int index, double x, double y) { } } - renderer.text(module.title, x, y, color, shadow.get(), getScale()); + renderer.text(module.getTitle(), x, y, color, shadow.get(), getScale()); double textHeight = renderer.textHeight(shadow.get(), getScale()); - double textLength = renderer.textWidth(module.title, shadow.get(), getScale()); + double textLength = renderer.textWidth(module.getTitle(), shadow.get(), getScale()); if (showKeybind.get() && module.keybind.isSet()) { String keybindStr = " [" + module.keybind + "]"; @@ -341,7 +341,7 @@ private void renderModule(HudRenderer renderer, int index, double x, double y) { } private double getModuleWidth(HudRenderer renderer, Module module) { - double width = renderer.textWidth(module.title, shadow.get(), getScale()); + double width = renderer.textWidth(module.getTitle(), shadow.get(), getScale()); if (showKeybind.get() && module.keybind.isSet()) { width += renderer.textWidth(" [" + module.keybind + "]", shadow.get(), getScale()); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ModuleInfosHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ModuleInfosHud.java index 61f0c0f8cd..e85e7b6304 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ModuleInfosHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ModuleInfosHud.java @@ -87,7 +87,7 @@ public void render(HudRenderer renderer) { int i = 0; for (Module module : modules.get()) { - double moduleWidth = renderer.textWidth(module.title) + renderer.textWidth(" "); + double moduleWidth = renderer.textWidth(module.getTitle()) + renderer.textWidth(" "); String text = null; if (module.isActive()) { @@ -102,7 +102,7 @@ public void render(HudRenderer renderer) { moduleWidth += renderer.textWidth(text); double x = this.x + alignX(moduleWidth, alignment.get()); - x = renderer.text(module.title, x, y, moduleColor.get(), textShadow.get()); + x = renderer.text(module.getTitle(), x, y, moduleColor.get(), textShadow.get()); renderer.text(text, x + renderer.textWidth(" "), y, module.isActive() ? onColor.get() : offColor.get(), textShadow.get()); y += renderer.textHeight() + 2; diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/Module.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/Module.java index 45927ec0c4..39cd17a338 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/Module.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/Module.java @@ -15,11 +15,14 @@ import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.misc.ISerializable; import meteordevelopment.meteorclient.utils.misc.Keybind; +import meteordevelopment.meteorclient.utils.misc.MeteorTranslations; +import meteordevelopment.meteorclient.utils.misc.text.MeteorTranslatableTextComponent; import meteordevelopment.meteorclient.utils.player.ChatUtils; import meteordevelopment.meteorclient.utils.render.color.Color; import net.minecraft.client.MinecraftClient; import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtElement; +import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import org.jetbrains.annotations.NotNull; @@ -31,8 +34,6 @@ public abstract class Module implements ISerializable, Comparable, Comparable Utils.nameToTitle(this.name)); + } + + public MutableText getTitleText() { + return MutableText.of(new MeteorTranslatableTextComponent("module." + this.name, Utils.nameToTitle(this.name))); + } + + public String getDescription() { + return MeteorTranslations.translate("module." + this.name + ".description", ""); + } + + public MutableText getDescriptionText() { + return MutableText.of(new MeteorTranslatableTextComponent("module." + this.name + ".description", "")); + } + @Override public NbtCompound toTag() { if (!serialize) return null; diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/Modules.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/Modules.java index 07346da48f..c5d7f10f18 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/Modules.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/Modules.java @@ -93,7 +93,7 @@ public void load(File folder) { public void sortModules() { for (List modules : groups.values()) { - modules.sort(Comparator.comparing(o -> o.title)); + modules.sort(Comparator.comparing(o -> o.getTitle())); } } @@ -153,20 +153,21 @@ public List> searchTitles(String text) { Map, Integer> modules = new HashMap<>(); for (Module module : this.moduleInstances.values()) { - String title = module.title; + String title = module.getTitle(); int score = Utils.searchLevenshteinDefault(title, text, false); + String display = title; if (Config.get().moduleAliases.get()) { for (String alias : module.aliases) { int aliasScore = Utils.searchLevenshteinDefault(alias, text, false); if (aliasScore < score) { - title = module.title + " (" + alias + ")"; + display = title + " (" + alias + ")"; score = aliasScore; } } } - modules.put(new Pair<>(module, title), score); + modules.put(new Pair<>(module, display), score); } List> l = new ArrayList<>(modules.keySet()); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AnchorAura.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AnchorAura.java index a7e303d03e..4ec0336548 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AnchorAura.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AnchorAura.java @@ -39,16 +39,15 @@ public class AnchorAura extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgPlace = settings.createGroup("Place"); - private final SettingGroup sgBreak = settings.createGroup("Break"); - private final SettingGroup sgPause = settings.createGroup("Pause"); - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgPlace = settings.createGroup("place"); + private final SettingGroup sgBreak = settings.createGroup("break"); + private final SettingGroup sgPause = settings.createGroup("pause"); + private final SettingGroup sgRender = settings.createGroup("render"); // General private final Setting targetRange = sgGeneral.add(new DoubleSetting.Builder() .name("target-range") - .description("Range in which to target players.") .defaultValue(10) .min(0) .sliderMax(16) @@ -57,14 +56,12 @@ public class AnchorAura extends Module { private final Setting targetPriority = sgGeneral.add(new EnumSetting.Builder() .name("target-priority") - .description("How to select the player to target.") .defaultValue(SortPriority.LowestHealth) .build() ); private final Setting minDamage = sgGeneral.add(new DoubleSetting.Builder() .name("min-damage") - .description("The minimum damage to inflict on your target.") .defaultValue(7) .min(0) .sliderMax(36) @@ -73,7 +70,6 @@ public class AnchorAura extends Module { private final Setting maxSelfDamage = sgGeneral.add(new DoubleSetting.Builder() .name("max-self-damage") - .description("The maximum damage to inflict on yourself.") .defaultValue(7) .min(0) .sliderMax(36) @@ -82,21 +78,18 @@ public class AnchorAura extends Module { private final Setting antiSuicide = sgGeneral.add(new BoolSetting.Builder() .name("anti-suicide") - .description("Will not place and break anchors if they will kill you.") .defaultValue(true) .build() ); private final Setting swapBack = sgGeneral.add(new BoolSetting.Builder() .name("swap-back") - .description("Switches to your previous slot after using anchors.") .defaultValue(true) .build() ); private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() .name("rotate") - .description("Rotates server-side towards the anchors being placed/broken.") .defaultValue(true) .build() ); @@ -105,14 +98,12 @@ public class AnchorAura extends Module { private final Setting place = sgPlace.add(new BoolSetting.Builder() .name("place") - .description("Allows Anchor Aura to place anchors.") .defaultValue(true) .build() ); private final Setting placeDelay = sgPlace.add(new IntSetting.Builder() .name("place-delay") - .description("The tick delay between placing anchors.") .defaultValue(5) .range(0, 10) .visible(place::get) @@ -121,7 +112,6 @@ public class AnchorAura extends Module { private final Setting placeRange = sgPlace.add(new DoubleSetting.Builder() .name("place-range") - .description("The range at which anchors can be placed.") .defaultValue(4) .range(0, 6) .visible(place::get) @@ -130,7 +120,6 @@ public class AnchorAura extends Module { private final Setting placeWallsRange = sgPlace.add(new DoubleSetting.Builder() .name("walls-range") - .description("Range in which to place anchors when behind blocks.") .defaultValue(4) .range(0, 6) .visible(place::get) @@ -139,7 +128,6 @@ public class AnchorAura extends Module { private final Setting airPlace = sgPlace.add(new BoolSetting.Builder() .name("air-place") - .description("Allows Anchor Aura to place anchors in the air.") .defaultValue(true) .visible(place::get) .build() @@ -149,7 +137,6 @@ public class AnchorAura extends Module { private final Setting chargeDelay = sgBreak.add(new IntSetting.Builder() .name("charge-delay") - .description("The tick delay it takes to charge anchors.") .defaultValue(1) .range(0, 10) .build() @@ -157,7 +144,6 @@ public class AnchorAura extends Module { private final Setting breakDelay = sgBreak.add(new IntSetting.Builder() .name("break-delay") - .description("The tick delay it takes to break anchors.") .defaultValue(1) .range(0, 10) .build() @@ -165,7 +151,6 @@ public class AnchorAura extends Module { private final Setting breakRange = sgBreak.add(new DoubleSetting.Builder() .name("break-range") - .description("Range in which to break anchors.") .defaultValue(4.5) .min(0) .sliderMax(6) @@ -174,7 +159,6 @@ public class AnchorAura extends Module { private final Setting breakWallsRange = sgBreak.add(new DoubleSetting.Builder() .name("walls-range") - .description("Range in which to break anchors when behind blocks.") .defaultValue(4.5) .min(0) .sliderMax(6) @@ -185,21 +169,18 @@ public class AnchorAura extends Module { private final Setting pauseOnUse = sgPause.add(new BoolSetting.Builder() .name("pause-on-use") - .description("Pauses while using an item.") .defaultValue(true) .build() ); private final Setting pauseOnMine = sgPause.add(new BoolSetting.Builder() .name("pause-on-mine") - .description("Pauses while mining blocks.") .defaultValue(true) .build() ); private final Setting pauseOnCA = sgPause.add(new BoolSetting.Builder() .name("pause-on-CA") - .description("Pauses while Crystal Aura is placing.") .defaultValue(true) .build() ); @@ -208,21 +189,18 @@ public class AnchorAura extends Module { private final Setting swing = sgRender.add(new BoolSetting.Builder() .name("swing") - .description("Whether to swing your hand client-side.") .defaultValue(true) .build() ); private final Setting render = sgRender.add(new BoolSetting.Builder() .name("render") - .description("Renders the block where it is placing an anchor.") .defaultValue(true) .build() ); private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .visible(render::get) .build() @@ -230,7 +208,6 @@ public class AnchorAura extends Module { private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") - .description("The side color for positions to be placed.") .defaultValue(new SettingColor(15, 255, 211, 41)) .visible(() -> render.get() && shapeMode.get().sides()) .build() @@ -238,7 +215,6 @@ public class AnchorAura extends Module { private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") - .description("The line color for positions to be placed.") .defaultValue(new SettingColor(15, 255, 211)) .visible(() -> render.get() && shapeMode.get().lines()) .build() @@ -255,7 +231,7 @@ public class AnchorAura extends Module { private PlayerEntity target; public AnchorAura() { - super(Categories.Combat, "anchor-aura", "Automatically places and breaks Respawn Anchors to harm entities."); + super(Categories.Combat, "anchor-aura"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AntiAnchor.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AntiAnchor.java index 5a9ec05d7c..be4c554583 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AntiAnchor.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AntiAnchor.java @@ -23,20 +23,18 @@ public class AntiAnchor extends Module { private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() .name("rotate") - .description("Makes you rotate when placing.") .defaultValue(true) .build() ); private final Setting swing = sgGeneral.add(new BoolSetting.Builder() .name("swing") - .description("Swings your hand when placing.") .defaultValue(true) .build() ); public AntiAnchor() { - super(Categories.Combat, "anti-anchor", "Automatically prevents Anchor Aura by placing a slab on your head."); + super(Categories.Combat, "anti-anchor"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AntiAnvil.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AntiAnvil.java index 3285309807..7aa19dbd13 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AntiAnvil.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AntiAnvil.java @@ -23,20 +23,18 @@ public class AntiAnvil extends Module { private final Setting swing = sgGeneral.add(new BoolSetting.Builder() .name("swing") - .description("Swings your hand client-side when placing.") .defaultValue(true) .build() ); private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() .name("rotate") - .description("Makes you rotate when placing.") .defaultValue(true) .build() ); public AntiAnvil() { - super(Categories.Combat, "anti-anvil", "Automatically prevents Auto Anvil by placing between you and the anvil."); + super(Categories.Combat, "anti-anvil"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AntiBed.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AntiBed.java index 34eac3026f..e713e38a5e 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AntiBed.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AntiBed.java @@ -29,28 +29,24 @@ public class AntiBed extends Module { private final Setting placeStringTop = sgGeneral.add(new BoolSetting.Builder() .name("place-string-top") - .description("Places string above you.") .defaultValue(false) .build() ); private final Setting placeStringMiddle = sgGeneral.add(new BoolSetting.Builder() .name("place-string-middle") - .description("Places string in your upper hitbox.") .defaultValue(true) .build() ); private final Setting placeStringBottom = sgGeneral.add(new BoolSetting.Builder() .name("place-string-bottom") - .description("Places string at your feet.") .defaultValue(false) .build() ); private final Setting onlyInHole = sgGeneral.add(new BoolSetting.Builder() .name("only-in-hole") - .description("Only functions when you are standing in a hole.") .defaultValue(true) .build() ); @@ -58,7 +54,7 @@ public class AntiBed extends Module { private boolean breaking; public AntiBed() { - super(Categories.Combat, "anti-bed", "Places string to prevent beds being placed on you."); + super(Categories.Combat, "anti-bed"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/ArrowDodge.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/ArrowDodge.java index 322d0fa837..0ce5907097 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/ArrowDodge.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/ArrowDodge.java @@ -28,18 +28,16 @@ public class ArrowDodge extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgMovement = settings.createGroup("Movement"); + private final SettingGroup sgMovement = settings.createGroup("movement"); private final Setting moveType = sgMovement.add(new EnumSetting.Builder() .name("move-type") - .description("The way you are moved by this module.") .defaultValue(MoveType.Velocity) .build() ); private final Setting moveSpeed = sgMovement.add(new DoubleSetting.Builder() .name("move-speed") - .description("How fast should you be when dodging arrow.") .defaultValue(1) .min(0.01) .sliderRange(0.01, 5) @@ -48,7 +46,6 @@ public class ArrowDodge extends Module { private final Setting distanceCheck = sgMovement.add(new DoubleSetting.Builder() .name("distance-check") - .description("How far should an arrow be from the player to be considered not hitting.") .defaultValue(1) .min(0.01) .sliderRange(0.01, 5) @@ -57,28 +54,24 @@ public class ArrowDodge extends Module { private final Setting groundCheck = sgGeneral.add(new BoolSetting.Builder() .name("ground-check") - .description("Tries to prevent you from falling to your death.") .defaultValue(true) .build() ); private final Setting allProjectiles = sgGeneral.add(new BoolSetting.Builder() .name("all-projectiles") - .description("Dodge all projectiles, not only arrows.") .defaultValue(false) .build() ); private final Setting ignoreOwn = sgGeneral.add(new BoolSetting.Builder() .name("ignore-own") - .description("Ignore your own projectiles.") .defaultValue(true) .build() ); public final Setting simulationSteps = sgGeneral.add(new IntSetting.Builder() .name("simulation-steps") - .description("How many steps to simulate projectiles. Zero for no limit.") .defaultValue(500) .sliderMax(5000) .build() @@ -100,7 +93,7 @@ public class ArrowDodge extends Module { private final List points = new ArrayList<>(); public ArrowDodge() { - super(Categories.Combat, "arrow-dodge", "Tries to dodge arrows coming at you."); + super(Categories.Combat, "arrow-dodge"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AttributeSwap.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AttributeSwap.java index 2b8aab6fc0..319db4969c 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AttributeSwap.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AttributeSwap.java @@ -30,22 +30,20 @@ public class AttributeSwap extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgSwappingOptions = settings.createGroup("Swapping Options"); - private final SettingGroup sgSwordEnchants = settings.createGroup("Sword Enchants"); - private final SettingGroup sgMaceEnchants = settings.createGroup("Mace Enchants"); - private final SettingGroup sgOtherEnchants = settings.createGroup("Other Enchants"); - private final SettingGroup sgWeapon = settings.createGroup("Weapon Options"); + private final SettingGroup sgSwappingOptions = settings.createGroup("swapping-ptions"); + private final SettingGroup sgSwordEnchants = settings.createGroup("sword-enchants"); + private final SettingGroup sgMaceEnchants = settings.createGroup("mace-enchants"); + private final SettingGroup sgOtherEnchants = settings.createGroup("other-enchants"); + private final SettingGroup sgWeapon = settings.createGroup("weapon-options"); private final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("The mode to use.") .defaultValue(Mode.Simple) .build() ); private final Setting targetSlot = sgGeneral.add(new IntSetting.Builder() .name("target-slot") - .description("Hotbar slot to swap to (1-9).") .defaultValue(1) .min(1) .sliderRange(1, 9) @@ -55,14 +53,12 @@ public class AttributeSwap extends Module { private final Setting swapBack = sgGeneral.add(new BoolSetting.Builder() .name("swap-back") - .description("Swap back to the original slot after a delay.") .defaultValue(true) .build() ); private final Setting swapBackDelay = sgGeneral.add(new IntSetting.Builder() .name("swap-back-delay") - .description("Delay in ticks before swapping back.") .defaultValue(2) .min(0) .max(100) @@ -73,7 +69,6 @@ public class AttributeSwap extends Module { private final Setting smartShieldBreak = sgSwappingOptions.add(new BoolSetting.Builder() .name("shield-breaker") - .description("Automatically swaps to an axe if the target is blocking.") .defaultValue(true) .visible(() -> mode.get() == Mode.Smart) .build() @@ -81,7 +76,6 @@ public class AttributeSwap extends Module { private final Setting smartDurability = sgSwappingOptions.add(new BoolSetting.Builder() .name("durability-saver") - .description("Swaps to a non-damageable item to save durability on the main weapon.") .defaultValue(true) .visible(() -> mode.get() == Mode.Smart) .build() @@ -89,7 +83,6 @@ public class AttributeSwap extends Module { private final Setting swordSwapping = sgSwappingOptions.add(new BoolSetting.Builder() .name("sword-swapping") - .description("Enables smart swapping for sword enchantments.") .defaultValue(true) .visible(() -> mode.get() == Mode.Smart) .build() @@ -97,7 +90,6 @@ public class AttributeSwap extends Module { private final Setting maceSwapping = sgSwappingOptions.add(new BoolSetting.Builder() .name("mace-swapping") - .description("Enables smart swapping for mace enchantments.") .defaultValue(true) .visible(() -> mode.get() == Mode.Smart) .build() @@ -105,7 +97,6 @@ public class AttributeSwap extends Module { private final Setting otherSwapping = sgSwappingOptions.add(new BoolSetting.Builder() .name("other-swapping") - .description("Enables smart swapping for other enchantments like Impaling.") .defaultValue(true) .visible(() -> mode.get() == Mode.Smart) .build() @@ -113,7 +104,6 @@ public class AttributeSwap extends Module { private final Setting enchantFireAspect = sgSwordEnchants.add(new BoolSetting.Builder() .name("fire-aspect") - .description("Swaps to an item with Fire Aspect to set the target on fire, if target isn't already on fire") .defaultValue(true) .visible(() -> mode.get() == Mode.Smart && swordSwapping.get()) .build() @@ -121,7 +111,6 @@ public class AttributeSwap extends Module { private final Setting enchantLooting = sgSwordEnchants.add(new BoolSetting.Builder() .name("looting") - .description("Swaps to an item with Looting for better drops or more experience. Only prefers for mobs (but fire aspect is priority)") .defaultValue(true) .visible(() -> mode.get() == Mode.Smart && swordSwapping.get()) .build() @@ -129,7 +118,6 @@ public class AttributeSwap extends Module { private final Setting enchantSharpness = sgSwordEnchants.add(new BoolSetting.Builder() .name("sharpness") - .description("Swaps to an item with Sharpness for increased damage against all entities.") .defaultValue(true) .visible(() -> mode.get() == Mode.Smart && swordSwapping.get()) .build() @@ -137,7 +125,6 @@ public class AttributeSwap extends Module { private final Setting enchantSmite = sgSwordEnchants.add(new BoolSetting.Builder() .name("smite") - .description("Swaps to an item with Smite for increased damage against undead mobs.") .defaultValue(true) .visible(() -> mode.get() == Mode.Smart && swordSwapping.get()) .build() @@ -145,7 +132,6 @@ public class AttributeSwap extends Module { private final Setting enchantBaneOfArthropods = sgSwordEnchants.add(new BoolSetting.Builder() .name("bane-of-arthropods") - .description("Swaps to an item with Bane of Arthropods for increased damage against arthropods.") .defaultValue(true) .visible(() -> mode.get() == Mode.Smart && swordSwapping.get()) .build() @@ -153,7 +139,6 @@ public class AttributeSwap extends Module { private final Setting enchantSweepingEdge = sgSwordEnchants.add(new BoolSetting.Builder() .name("sweeping-edge") - .description("Swaps to an item with Sweeping Edge for increased sweeping attack damage.") .defaultValue(true) .visible(() -> mode.get() == Mode.Smart && swordSwapping.get()) .build() @@ -161,7 +146,6 @@ public class AttributeSwap extends Module { private final Setting regularMace = sgMaceEnchants.add(new BoolSetting.Builder() .name("regular-mace") - .description("Swaps to a regular Mace when falling if no better option is available.") .defaultValue(true) .visible(() -> mode.get() == Mode.Smart && maceSwapping.get()) .build() @@ -169,7 +153,6 @@ public class AttributeSwap extends Module { private final Setting enchantDensity = sgMaceEnchants.add(new BoolSetting.Builder() .name("density") - .description("Swaps to a Mace with Density to deal increased damage when falling.") .defaultValue(true) .visible(() -> mode.get() == Mode.Smart && maceSwapping.get()) .build() @@ -177,7 +160,6 @@ public class AttributeSwap extends Module { private final Setting enchantBreach = sgMaceEnchants.add(new BoolSetting.Builder() .name("breach") - .description("Swaps to a Mace with Breach to reduce the target's armor effectiveness.") .defaultValue(true) .visible(() -> mode.get() == Mode.Smart && maceSwapping.get()) .build() @@ -185,7 +167,6 @@ public class AttributeSwap extends Module { private final Setting enchantWindBurst = sgMaceEnchants.add(new BoolSetting.Builder() .name("wind-burst") - .description("Swaps to a Mace with Wind Burst to launch up when hitting while falling.") .defaultValue(true) .visible(() -> mode.get() == Mode.Smart && maceSwapping.get()) .build() @@ -193,7 +174,6 @@ public class AttributeSwap extends Module { private final Setting enchantImpaling = sgOtherEnchants.add(new BoolSetting.Builder() .name("impaling") - .description("Swaps to an item with Impaling for increased damage against aquatic mobs.") .defaultValue(true) .visible(() -> mode.get() == Mode.Smart && otherSwapping.get()) .build() @@ -201,14 +181,12 @@ public class AttributeSwap extends Module { private final Setting onlyOnWeapon = sgWeapon.add(new BoolSetting.Builder() .name("only-on-weapon") - .description("Only swaps when holding a selected weapon in hand.") .defaultValue(false) .build() ); private final Setting sword = sgWeapon.add(new BoolSetting.Builder() .name("sword") - .description("Works while holding a sword.") .defaultValue(true) .visible(onlyOnWeapon::get) .build() @@ -216,7 +194,6 @@ public class AttributeSwap extends Module { private final Setting axe = sgWeapon.add(new BoolSetting.Builder() .name("axe") - .description("Works while holding an axe.") .defaultValue(true) .visible(onlyOnWeapon::get) .build() @@ -224,7 +201,6 @@ public class AttributeSwap extends Module { private final Setting pickaxe = sgWeapon.add(new BoolSetting.Builder() .name("pickaxe") - .description("Works while holding a pickaxe.") .defaultValue(true) .visible(onlyOnWeapon::get) .build() @@ -232,7 +208,6 @@ public class AttributeSwap extends Module { private final Setting shovel = sgWeapon.add(new BoolSetting.Builder() .name("shovel") - .description("Works while holding a shovel.") .defaultValue(true) .visible(onlyOnWeapon::get) .build() @@ -240,7 +215,6 @@ public class AttributeSwap extends Module { private final Setting hoe = sgWeapon.add(new BoolSetting.Builder() .name("hoe") - .description("Works while holding a hoe.") .defaultValue(true) .visible(onlyOnWeapon::get) .build() @@ -248,7 +222,6 @@ public class AttributeSwap extends Module { private final Setting mace = sgWeapon.add(new BoolSetting.Builder() .name("mace") - .description("Works while holding a mace.") .defaultValue(true) .visible(onlyOnWeapon::get) .build() @@ -256,7 +229,6 @@ public class AttributeSwap extends Module { private final Setting trident = sgWeapon.add(new BoolSetting.Builder() .name("trident") - .description("Works while holding a trident.") .defaultValue(true) .visible(onlyOnWeapon::get) .build() @@ -266,7 +238,7 @@ public class AttributeSwap extends Module { private boolean awaitingBack; public AttributeSwap() { - super(Categories.Combat, "attribute-swap", "Swaps to a target slot when you attack."); + super(Categories.Combat, "attribute-swap"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoAnvil.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoAnvil.java index 674afe4078..48c14df2fb 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoAnvil.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoAnvil.java @@ -33,7 +33,6 @@ public class AutoAnvil extends Module { private final Setting range = sgGeneral.add(new DoubleSetting.Builder() .name("target-range") - .description("The radius in which players get targeted.") .defaultValue(4) .min(0) .sliderMax(5) @@ -42,14 +41,12 @@ public class AutoAnvil extends Module { private final Setting priority = sgGeneral.add(new EnumSetting.Builder() .name("target-priority") - .description("How to select the player to target.") .defaultValue(SortPriority.LowestHealth) .build() ); private final Setting height = sgGeneral.add(new IntSetting.Builder() .name("height") - .description("The height to place anvils at.") .defaultValue(2) .range(0, 5) .sliderMax(5) @@ -58,7 +55,6 @@ public class AutoAnvil extends Module { private final Setting delay = sgGeneral.add(new IntSetting.Builder() .name("delay") - .description("The delay in between anvil placements.") .defaultValue(10) .min(0) .sliderMax(50) @@ -67,28 +63,24 @@ public class AutoAnvil extends Module { private final Setting placeButton = sgGeneral.add(new BoolSetting.Builder() .name("place-at-feet") - .description("Automatically places a button or pressure plate at the targets feet to break the anvils.") .defaultValue(true) .build() ); private final Setting multiPlace = sgGeneral.add(new BoolSetting.Builder() .name("multi-place") - .description("Places multiple anvils at once.") .defaultValue(true) .build() ); private final Setting toggleOnBreak = sgGeneral.add(new BoolSetting.Builder() .name("toggle-on-break") - .description("Toggles when the target's helmet slot is empty.") .defaultValue(false) .build() ); private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() .name("rotate") - .description("Automatically rotates towards the position anvils/pressure plates/buttons are placed.") .defaultValue(true) .build() ); @@ -97,7 +89,7 @@ public class AutoAnvil extends Module { private int timer; public AutoAnvil() { - super(Categories.Combat, "auto-anvil", "Automatically places anvils above players to destroy helmets."); + super(Categories.Combat, "auto-anvil"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoArmor.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoArmor.java index 476b016a0c..1e3d75ac96 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoArmor.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoArmor.java @@ -37,14 +37,12 @@ public class AutoArmor extends Module { private final Setting preferredProtection = sgGeneral.add(new EnumSetting.Builder() .name("preferred-protection") - .description("Which type of protection to prefer.") .defaultValue(Protection.Protection) .build() ); private final Setting delay = sgGeneral.add(new IntSetting.Builder() .name("swap-delay") - .description("The delay between equipping armor pieces.") .defaultValue(1) .min(0) .sliderMax(5) @@ -53,28 +51,24 @@ public class AutoArmor extends Module { private final Setting>> avoidedEnchantments = sgGeneral.add(new EnchantmentListSetting.Builder() .name("avoided-enchantments") - .description("Enchantments that should be avoided.") .defaultValue(Enchantments.BINDING_CURSE, Enchantments.FROST_WALKER) .build() ); private final Setting blastLeggings = sgGeneral.add(new BoolSetting.Builder() .name("blast-prot-leggings") - .description("Uses blast protection for leggings regardless of preferred protection.") .defaultValue(true) .build() ); private final Setting antiBreak = sgGeneral.add(new BoolSetting.Builder() .name("anti-break") - .description("Takes off armor if it is about to break.") .defaultValue(false) .build() ); private final Setting ignoreElytra = sgGeneral.add(new BoolSetting.Builder() .name("ignore-elytra") - .description("Will not replace your elytra if you have it equipped.") .defaultValue(true) .build() ); @@ -88,7 +82,7 @@ public class AutoArmor extends Module { private int timer; public AutoArmor() { - super(Categories.Combat, "auto-armor", "Automatically equips armor."); + super(Categories.Combat, "auto-armor"); armorPieces[0] = helmet; armorPieces[1] = chestplate; diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoCity.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoCity.java index a7e3629c6f..8a4293619b 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoCity.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoCity.java @@ -31,12 +31,11 @@ public class AutoCity extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgRender = settings.createGroup("render"); private final Setting targetRange = sgGeneral.add(new DoubleSetting.Builder() .name("target-range") - .description("The radius in which players get targeted.") .defaultValue(5.5) .min(0) .sliderMax(7) @@ -45,7 +44,6 @@ public class AutoCity extends Module { private final Setting breakRange = sgGeneral.add(new DoubleSetting.Builder() .name("break-range") - .description("How close a block must be to you to be considered.") .defaultValue(4.5) .min(0) .sliderMax(6) @@ -54,21 +52,18 @@ public class AutoCity extends Module { private final Setting switchMode = sgGeneral.add(new EnumSetting.Builder() .name("switch-mode") - .description("How to switch to a pickaxe.") .defaultValue(SwitchMode.Normal) .build() ); private final Setting support = sgGeneral.add(new BoolSetting.Builder() .name("support") - .description("If there is no block below a city block it will place one before mining.") .defaultValue(true) .build() ); private final Setting placeRange = sgGeneral.add(new DoubleSetting.Builder() .name("place-range") - .description("How far away to try and place a block.") .defaultValue(4.5) .min(0) .sliderMax(6) @@ -78,14 +73,12 @@ public class AutoCity extends Module { private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() .name("rotate") - .description("Automatically rotates you towards the city block.") .defaultValue(true) .build() ); private final Setting chatInfo = sgGeneral.add(new BoolSetting.Builder() .name("chat-info") - .description("Whether the module should send messages in chat.") .defaultValue(true) .build() ); @@ -94,21 +87,18 @@ public class AutoCity extends Module { private final Setting swingHand = sgRender.add(new BoolSetting.Builder() .name("swing-hand") - .description("Whether to render your hand swinging.") .defaultValue(false) .build() ); private final Setting renderBlock = sgRender.add(new BoolSetting.Builder() .name("render-block") - .description("Whether to render the block being broken.") .defaultValue(true) .build() ); private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .visible(renderBlock::get) .build() @@ -116,7 +106,6 @@ public class AutoCity extends Module { private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") - .description("The side color of the rendering.") .defaultValue(new SettingColor(225, 0, 0, 75)) .visible(() -> renderBlock.get() && shapeMode.get().sides()) .build() @@ -124,7 +113,6 @@ public class AutoCity extends Module { private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") - .description("The line color of the rendering.") .defaultValue(new SettingColor(225, 0, 0, 255)) .visible(() -> renderBlock.get() && shapeMode.get().lines()) .build() @@ -136,7 +124,7 @@ public class AutoCity extends Module { private float progress; public AutoCity() { - super(Categories.Combat, "auto-city", "Automatically mine blocks next to someone's feet."); + super(Categories.Combat, "auto-city"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoEXP.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoEXP.java index b79065eb46..76cd66ac7b 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoEXP.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoEXP.java @@ -27,28 +27,24 @@ public class AutoEXP extends Module { private final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("Which items to repair.") .defaultValue(Mode.Both) .build() ); private final Setting replenish = sgGeneral.add(new BoolSetting.Builder() .name("replenish") - .description("Automatically replenishes exp into a selected hotbar slot.") .defaultValue(true) .build() ); private final Setting onlyGround = sgGeneral.add(new BoolSetting.Builder() .name("only-on-ground") - .description("Only throw when the player is on the ground.") .defaultValue(false) .build() ); private final Setting slot = sgGeneral.add(new IntSetting.Builder() .name("exp-slot") - .description("The slot to replenish exp into.") .visible(replenish::get) .defaultValue(6) .range(1, 9) @@ -58,7 +54,6 @@ public class AutoEXP extends Module { private final Setting minThreshold = sgGeneral.add(new IntSetting.Builder() .name("min-threshold") - .description("The minimum durability percentage that an item needs to fall to, to be repaired.") .defaultValue(30) .range(1, 100) .sliderRange(1, 100) @@ -67,7 +62,6 @@ public class AutoEXP extends Module { private final Setting maxThreshold = sgGeneral.add(new IntSetting.Builder() .name("max-threshold") - .description("The maximum durability percentage to repair items to.") .defaultValue(80) .range(1, 100) .sliderRange(1, 100) @@ -77,7 +71,7 @@ public class AutoEXP extends Module { private int repairingI; public AutoEXP() { - super(Categories.Combat, "auto-exp", "Automatically repairs your armor and tools in pvp."); + super(Categories.Combat, "auto-exp"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoLog.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoLog.java index a7245f206e..8914571a50 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoLog.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoLog.java @@ -35,11 +35,10 @@ public class AutoLog extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgEntities = settings.createGroup("Entities"); + private final SettingGroup sgEntities = settings.createGroup("entities"); private final Setting health = sgGeneral.add(new IntSetting.Builder() .name("health") - .description("Automatically disconnects when health is lower or equal to this value. Set to 0 to disable.") .defaultValue(6) .range(0, 19) .sliderMax(19) @@ -48,14 +47,12 @@ public class AutoLog extends Module { private final Setting smart = sgGeneral.add(new BoolSetting.Builder() .name("predict-incoming-damage") - .description("Disconnects when it detects you're about to take enough damage to set you under the 'health' setting.") .defaultValue(true) .build() ); private final Setting totemPops = sgGeneral.add(new IntSetting.Builder() .name("totem-pops") - .description("Disconnects when you have popped this many totems. Set to 0 to disable.") .defaultValue(0) .min(0) .build() @@ -63,35 +60,30 @@ public class AutoLog extends Module { private final Setting onlyTrusted = sgGeneral.add(new BoolSetting.Builder() .name("only-trusted") - .description("Disconnects when a player not on your friends list appears in render distance.") .defaultValue(false) .build() ); private final Setting instantDeath = sgGeneral.add(new BoolSetting.Builder() .name("32K") - .description("Disconnects when a player near you can instantly kill you.") .defaultValue(false) .build() ); private final Setting smartToggle = sgGeneral.add(new BoolSetting.Builder() .name("smart-toggle") - .description("Disables Auto Log after a low-health logout. WILL re-enable once you heal.") .defaultValue(false) .build() ); private final Setting toggleOff = sgGeneral.add(new BoolSetting.Builder() .name("toggle-off") - .description("Disables Auto Log after usage.") .defaultValue(true) .build() ); private final Setting toggleAutoReconnect = sgGeneral.add(new BoolSetting.Builder() .name("toggle-auto-reconnect") - .description("Whether to disable Auto Reconnect after a logout.") .defaultValue(true) .build() ); @@ -100,21 +92,18 @@ public class AutoLog extends Module { private final Setting>> entities = sgEntities.add(new EntityTypeListSetting.Builder() .name("entities") - .description("Disconnects when a specified entity is present within a specified range.") .defaultValue(EntityType.END_CRYSTAL) .build() ); private final Setting useTotalCount = sgEntities.add(new BoolSetting.Builder() .name("use-total-count") - .description("Toggle between counting the total number of all selected entities or each entity individually.") .defaultValue(true) .visible(() -> !entities.get().isEmpty()) .build()); private final Setting combinedEntityThreshold = sgEntities.add(new IntSetting.Builder() .name("combined-entity-threshold") - .description("The minimum total number of selected entities that must be near you before disconnection occurs.") .defaultValue(10) .min(1) .sliderMax(32) @@ -124,7 +113,6 @@ public class AutoLog extends Module { private final Setting individualEntityThreshold = sgEntities.add(new IntSetting.Builder() .name("individual-entity-threshold") - .description("The minimum number of entities individually that must be near you before disconnection occurs.") .defaultValue(2) .min(1) .sliderMax(16) @@ -134,7 +122,6 @@ public class AutoLog extends Module { private final Setting range = sgEntities.add(new IntSetting.Builder() .name("range") - .description("How close an entity has to be to you before you disconnect.") .defaultValue(5) .min(1) .sliderMax(16) @@ -148,7 +135,7 @@ public class AutoLog extends Module { private int pops; public AutoLog() { - super(Categories.Combat, "auto-log", "Automatically disconnects you when certain requirements are met."); + super(Categories.Combat, "auto-log"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoTotem.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoTotem.java index 9682a1f166..2df546f202 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoTotem.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoTotem.java @@ -26,14 +26,12 @@ public class AutoTotem extends Module { private final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("Determines when to hold a totem, strict will always hold.") .defaultValue(Mode.Smart) .build() ); private final Setting delay = sgGeneral.add(new IntSetting.Builder() .name("delay") - .description("The ticks between slot movements.") .defaultValue(0) .min(0) .build() @@ -41,7 +39,6 @@ public class AutoTotem extends Module { private final Setting health = sgGeneral.add(new IntSetting.Builder() .name("health") - .description("The health to hold a totem at.") .defaultValue(10) .range(0, 36) .sliderMax(36) @@ -51,7 +48,6 @@ public class AutoTotem extends Module { private final Setting elytra = sgGeneral.add(new BoolSetting.Builder() .name("elytra") - .description("Will always hold a totem when flying with elytra.") .defaultValue(true) .visible(() -> mode.get() == Mode.Smart) .build() @@ -59,7 +55,6 @@ public class AutoTotem extends Module { private final Setting fall = sgGeneral.add(new BoolSetting.Builder() .name("fall") - .description("Will hold a totem when fall damage could kill you.") .defaultValue(true) .visible(() -> mode.get() == Mode.Smart) .build() @@ -67,7 +62,6 @@ public class AutoTotem extends Module { private final Setting explosion = sgGeneral.add(new BoolSetting.Builder() .name("explosion") - .description("Will hold a totem when explosion damage could kill you.") .defaultValue(true) .visible(() -> mode.get() == Mode.Smart) .build() @@ -77,7 +71,7 @@ public class AutoTotem extends Module { private int totems, ticks; public AutoTotem() { - super(Categories.Combat, "auto-totem", "Automatically equips a totem in your offhand."); + super(Categories.Combat, "auto-totem"); } @EventHandler(priority = EventPriority.HIGHEST) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoTrap.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoTrap.java index d22367c277..1a4c69071d 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoTrap.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoTrap.java @@ -39,20 +39,18 @@ public class AutoTrap extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgRender = settings.createGroup("render"); // General private final Setting> blocks = sgGeneral.add(new BlockListSetting.Builder() .name("whitelist") - .description("Which blocks to use.") .defaultValue(Blocks.OBSIDIAN, Blocks.CRYING_OBSIDIAN) .build() ); private final Setting placeRange = sgGeneral.add(new DoubleSetting.Builder() .name("place-range") - .description("The range at which blocks can be placed.") .defaultValue(4) .min(0) .sliderMax(6) @@ -61,7 +59,6 @@ public class AutoTrap extends Module { private final Setting placeWallsRange = sgGeneral.add(new DoubleSetting.Builder() .name("walls-range") - .description("Range in which to place when behind blocks.") .defaultValue(4) .min(0) .sliderMax(6) @@ -70,14 +67,12 @@ public class AutoTrap extends Module { private final Setting priority = sgGeneral.add(new EnumSetting.Builder() .name("target-priority") - .description("How to select the player to target.") .defaultValue(SortPriority.LowestHealth) .build() ); private final Setting targetRange = sgGeneral.add(new DoubleSetting.Builder() .name("target-range") - .description("The maximum distance to target players.") .defaultValue(3) .min(0) .sliderMax(10) @@ -86,14 +81,12 @@ public class AutoTrap extends Module { private final Setting delay = sgGeneral.add(new IntSetting.Builder() .name("place-delay") - .description("How many ticks between block placements.") .defaultValue(1) .build() ); private final Setting blocksPerTick = sgGeneral.add(new IntSetting.Builder() .name("blocks-per-tick") - .description("How many blocks to place in one tick.") .defaultValue(1) .min(1) .build() @@ -101,28 +94,24 @@ public class AutoTrap extends Module { private final Setting topPlacement = sgGeneral.add(new EnumSetting.Builder() .name("top-blocks") - .description("Which blocks to place on the top half of the target.") .defaultValue(TopMode.Full) .build() ); private final Setting bottomPlacement = sgGeneral.add(new EnumSetting.Builder() .name("bottom-blocks") - .description("Which blocks to place on the bottom half of the target.") .defaultValue(BottomMode.Platform) .build() ); private final Setting selfToggle = sgGeneral.add(new BoolSetting.Builder() .name("self-toggle") - .description("Turns off after placing all blocks.") .defaultValue(true) .build() ); private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() .name("rotate") - .description("Rotates towards blocks when placing.") .defaultValue(true) .build() ); @@ -131,14 +120,12 @@ public class AutoTrap extends Module { private final Setting render = sgRender.add(new BoolSetting.Builder() .name("render") - .description("Renders an overlay where blocks will be placed.") .defaultValue(true) .build() ); private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .visible(render::get) .build() @@ -146,7 +133,6 @@ public class AutoTrap extends Module { private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") - .description("The side color of the target block rendering.") .defaultValue(new SettingColor(197, 137, 232, 10)) .visible(() -> render.get() && shapeMode.get().sides()) .build() @@ -154,7 +140,6 @@ public class AutoTrap extends Module { private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") - .description("The line color of the target block rendering.") .defaultValue(new SettingColor(197, 137, 232)) .visible(() -> render.get() && shapeMode.get().lines()) .build() @@ -162,7 +147,6 @@ public class AutoTrap extends Module { private final Setting nextSideColor = sgRender.add(new ColorSetting.Builder() .name("next-side-color") - .description("The side color of the next block to be placed.") .defaultValue(new SettingColor(227, 196, 245, 10)) .visible(() -> render.get() && shapeMode.get().sides()) .build() @@ -170,7 +154,6 @@ public class AutoTrap extends Module { private final Setting nextLineColor = sgRender.add(new ColorSetting.Builder() .name("next-line-color") - .description("The line color of the next block to be placed.") .defaultValue(new SettingColor(5, 139, 221)) .visible(() -> render.get() && shapeMode.get().lines()) .build() @@ -182,7 +165,7 @@ public class AutoTrap extends Module { private int timer; public AutoTrap() { - super(Categories.Combat, "auto-trap", "Traps people in a box to prevent them from moving."); + super(Categories.Combat, "auto-trap"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoWeapon.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoWeapon.java index 3285e112f1..3ac0399e38 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoWeapon.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoWeapon.java @@ -22,27 +22,24 @@ public class AutoWeapon extends Module { private final Setting weapon = sgGeneral.add(new EnumSetting.Builder() .name("weapon") - .description("What type of weapon to use.") .defaultValue(Weapon.Sword) .build() ); private final Setting threshold = sgGeneral.add(new IntSetting.Builder() .name("threshold") - .description("If the non-preferred weapon produces this much damage this will favor it over your preferred weapon.") .defaultValue(4) .build() ); private final Setting antiBreak = sgGeneral.add(new BoolSetting.Builder() .name("anti-break") - .description("Prevents you from breaking your weapon.") .defaultValue(false) .build() ); public AutoWeapon() { - super(Categories.Combat, "auto-weapon", "Finds the best weapon to use in your hotbar."); + super(Categories.Combat, "auto-weapon"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoWeb.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoWeb.java index 0199240000..735f598989 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoWeb.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoWeb.java @@ -31,11 +31,10 @@ public class AutoWeb extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgRender = settings.createGroup("render"); private final Setting placeRange = sgGeneral.add(new DoubleSetting.Builder() .name("place-range") - .description("The range at which webs can be placed.") .defaultValue(4) .min(0) .sliderMax(6) @@ -44,7 +43,6 @@ public class AutoWeb extends Module { private final Setting placeWallsRange = sgGeneral.add(new DoubleSetting.Builder() .name("walls-range") - .description("Range in which to place webs when behind blocks.") .defaultValue(4) .min(0) .sliderMax(6) @@ -53,14 +51,12 @@ public class AutoWeb extends Module { private final Setting priority = sgGeneral.add(new EnumSetting.Builder() .name("target-priority") - .description("How to filter targets within range.") .defaultValue(SortPriority.LowestDistance) .build() ); private final Setting targetRange = sgGeneral.add(new DoubleSetting.Builder() .name("target-range") - .description("The maximum distance to target players.") .defaultValue(10) .min(0) .sliderMax(30) @@ -69,14 +65,12 @@ public class AutoWeb extends Module { private final Setting predictMovement = sgGeneral.add(new BoolSetting.Builder() .name("predict-movement") - .description("Predict target movement to account for ping.") .defaultValue(true) .build() ); private final Setting ticksToPredict = sgGeneral.add(new DoubleSetting.Builder() .name("ticks-to-predict") - .description("How many ticks ahead we should predict for.") .defaultValue(10) .min(1) .sliderMax(30) @@ -86,14 +80,12 @@ public class AutoWeb extends Module { private final Setting doubles = sgGeneral.add(new BoolSetting.Builder() .name("doubles") - .description("Places webs in the target's upper hitbox as well as the lower hitbox.") .defaultValue(false) .build() ); private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() .name("rotate") - .description("Rotates towards the webs when placing.") .defaultValue(true) .build() ); @@ -102,14 +94,12 @@ public class AutoWeb extends Module { private final Setting render = sgRender.add(new BoolSetting.Builder() .name("render") - .description("Renders an overlay where webs are placed.") .defaultValue(true) .build() ); private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .visible(render::get) .build() @@ -117,7 +107,6 @@ public class AutoWeb extends Module { private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") - .description("The side color of the placed web rendering.") .defaultValue(new SettingColor(239, 231, 244, 31)) .visible(() -> render.get() && shapeMode.get().sides()) .build() @@ -125,7 +114,6 @@ public class AutoWeb extends Module { private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") - .description("The line color of the placed web rendering.") .defaultValue(new SettingColor(255, 255, 255)) .visible(() -> render.get() && shapeMode.get().lines()) .build() @@ -135,7 +123,7 @@ public class AutoWeb extends Module { private PlayerEntity target = null; public AutoWeb() { - super(Categories.Combat, "auto-web", "Automatically places webs on other players."); + super(Categories.Combat, "auto-web"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/BedAura.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/BedAura.java index c0dfa23870..930f1fe5b9 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/BedAura.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/BedAura.java @@ -38,16 +38,15 @@ public class BedAura extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgTargeting = settings.createGroup("Targeting"); - private final SettingGroup sgAutoMove = settings.createGroup("Inventory"); - private final SettingGroup sgPause = settings.createGroup("Pause"); - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgTargeting = settings.createGroup("targeting"); + private final SettingGroup sgAutoMove = settings.createGroup("inventory"); + private final SettingGroup sgPause = settings.createGroup("pause"); + private final SettingGroup sgRender = settings.createGroup("render"); // General private final Setting delay = sgGeneral.add(new IntSetting.Builder() .name("delay") - .description("The delay between placing beds in ticks.") .defaultValue(9) .min(0) .sliderMax(20) @@ -56,7 +55,6 @@ public class BedAura extends Module { private final Setting strictDirection = sgGeneral.add(new BoolSetting.Builder() .name("strict-direction") - .description("Only places beds in the direction you are facing.") .defaultValue(false) .build() ); @@ -65,7 +63,6 @@ public class BedAura extends Module { private final Setting targetRange = sgTargeting.add(new DoubleSetting.Builder() .name("target-range") - .description("The range at which players can be targeted.") .defaultValue(4) .min(0) .sliderMax(5) @@ -74,14 +71,12 @@ public class BedAura extends Module { private final Setting priority = sgTargeting.add(new EnumSetting.Builder() .name("target-priority") - .description("How to filter targets within range.") .defaultValue(SortPriority.LowestHealth) .build() ); private final Setting minDamage = sgTargeting.add(new DoubleSetting.Builder() .name("min-damage") - .description("The minimum damage to inflict on your target.") .defaultValue(7) .range(0, 36) .sliderMax(36) @@ -90,7 +85,6 @@ public class BedAura extends Module { private final Setting maxSelfDamage = sgTargeting.add(new DoubleSetting.Builder() .name("max-self-damage") - .description("The maximum damage to inflict on yourself.") .defaultValue(7) .range(0, 36) .sliderMax(36) @@ -99,7 +93,6 @@ public class BedAura extends Module { private final Setting antiSuicide = sgTargeting.add(new BoolSetting.Builder() .name("anti-suicide") - .description("Will not place and break beds if they will kill you.") .defaultValue(true) .build() ); @@ -108,14 +101,12 @@ public class BedAura extends Module { private final Setting autoMove = sgAutoMove.add(new BoolSetting.Builder() .name("auto-move") - .description("Moves beds into a selected hotbar slot.") .defaultValue(false) .build() ); private final Setting autoMoveSlot = sgAutoMove.add(new IntSetting.Builder() .name("auto-move-slot") - .description("The slot auto move moves beds to.") .defaultValue(9) .range(1, 9) .sliderRange(1, 9) @@ -125,7 +116,6 @@ public class BedAura extends Module { private final Setting autoSwitch = sgAutoMove.add(new BoolSetting.Builder() .name("auto-switch") - .description("Switches to and from beds automatically.") .defaultValue(true) .build() ); @@ -134,21 +124,18 @@ public class BedAura extends Module { private final Setting pauseOnEat = sgPause.add(new BoolSetting.Builder() .name("pause-on-eat") - .description("Pauses while eating.") .defaultValue(true) .build() ); private final Setting pauseOnDrink = sgPause.add(new BoolSetting.Builder() .name("pause-on-drink") - .description("Pauses while drinking.") .defaultValue(true) .build() ); private final Setting pauseOnMine = sgPause.add(new BoolSetting.Builder() .name("pause-on-mine") - .description("Pauses while mining.") .defaultValue(true) .build() ); @@ -157,35 +144,30 @@ public class BedAura extends Module { private final Setting swing = sgRender.add(new BoolSetting.Builder() .name("swing") - .description("Whether to swing hand client-side.") .defaultValue(true) .build() ); private final Setting render = sgRender.add(new BoolSetting.Builder() .name("render") - .description("Renders the block where it is placing a bed.") .defaultValue(true) .build() ); private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") - .description("The side color for positions to be placed.") .defaultValue(new SettingColor(15, 255, 211,75)) .build() ); private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") - .description("The line color for positions to be placed.") .defaultValue(new SettingColor(15, 255, 211)) .build() ); @@ -196,7 +178,7 @@ public class BedAura extends Module { private int timer; public BedAura() { - super(Categories.Combat, "bed-aura", "Automatically places and explodes beds in the Nether and End."); + super(Categories.Combat, "bed-aura"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/BowAimbot.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/BowAimbot.java index f978b420cd..2263596ba5 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/BowAimbot.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/BowAimbot.java @@ -35,7 +35,6 @@ public class BowAimbot extends Module { private final Setting range = sgGeneral.add(new DoubleSetting.Builder() .name("range") - .description("The maximum range the entity can be to aim at it.") .defaultValue(20) .range(0, 100) .sliderMax(100) @@ -44,28 +43,24 @@ public class BowAimbot extends Module { private final Setting>> entities = sgGeneral.add(new EntityTypeListSetting.Builder() .name("entities") - .description("Entities to attack.") .onlyAttackable() .build() ); private final Setting priority = sgGeneral.add(new EnumSetting.Builder() .name("priority") - .description("What type of entities to target.") .defaultValue(SortPriority.LowestHealth) .build() ); private final Setting babies = sgGeneral.add(new BoolSetting.Builder() .name("babies") - .description("Whether or not to attack baby variants of the entity.") .defaultValue(true) .build() ); private final Setting nametagged = sgGeneral.add(new BoolSetting.Builder() .name("nametagged") - .description("Whether or not to attack mobs with a name tag.") .defaultValue(false) .build() ); @@ -73,7 +68,6 @@ public class BowAimbot extends Module { private final Setting pauseOnCombat = sgGeneral.add(new BoolSetting.Builder() .name("pause-on-combat") - .description("Freezes Baritone temporarily until you released the bow.") .defaultValue(false) .build() ); @@ -82,7 +76,7 @@ public class BowAimbot extends Module { private Entity target; public BowAimbot() { - super(Categories.Combat, "bow-aimbot", "Automatically aims your bow for you."); + super(Categories.Combat, "bow-aimbot"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/BowSpam.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/BowSpam.java index d269633452..bb69d55a04 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/BowSpam.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/BowSpam.java @@ -23,11 +23,10 @@ public class BowSpam extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgCrossbows = settings.createGroup("Crossbows"); + private final SettingGroup sgCrossbows = settings.createGroup("crossbows"); private final Setting charge = sgGeneral.add(new IntSetting.Builder() .name("charge") - .description("How long to charge the bow before releasing in ticks.") .defaultValue(5) .range(4, 20) .sliderRange(4, 20) @@ -36,21 +35,18 @@ public class BowSpam extends Module { private final Setting onlyWhenHoldingRightClick = sgGeneral.add(new BoolSetting.Builder() .name("when-holding-right-click") - .description("Works only when holding right click.") .defaultValue(false) .build() ); private final Setting spamCrossbows = sgCrossbows.add(new BoolSetting.Builder() .name("spam-crossbows") - .description("Whether to spam loaded crossbows; takes priority over charging bows.") .defaultValue(true) .build() ); private final Setting crossbowDelay = sgCrossbows.add(new IntSetting.Builder() .name("crossbow-delay") - .description("Delay between shooting crossbows in ticks.") .defaultValue(10) .sliderRange(0, 20) .min(0) @@ -59,7 +55,6 @@ public class BowSpam extends Module { private final Setting searchInventory = sgCrossbows.add(new BoolSetting.Builder() .name("search-inventory") - .description("Whether to search your inventory to find loaded crossbows.") .defaultValue(true) .build() ); @@ -69,7 +64,7 @@ public class BowSpam extends Module { private int ticks = 0; public BowSpam() { - super(Categories.Combat, "bow-spam", "Spams bows and crossbows.", "auto-bow", "crossbow-spam", "auto-crossbow"); + super(Categories.Combat, "bow-spam", "auto-bow", "crossbow-spam", "auto-crossbow"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Burrow.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Burrow.java index 0a052c34c9..f8367b35f0 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Burrow.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Burrow.java @@ -38,28 +38,24 @@ public class Burrow extends Module { private final Setting block = sgGeneral.add(new EnumSetting.Builder() .name("block-to-use") - .description("The block to use for Burrow.") .defaultValue(Block.EChest) .build() ); private final Setting instant = sgGeneral.add(new BoolSetting.Builder() .name("instant") - .description("Jumps with packets rather than vanilla jump.") .defaultValue(true) .build() ); private final Setting automatic = sgGeneral.add(new BoolSetting.Builder() .name("automatic") - .description("Automatically burrows on activate rather than waiting for jump.") .defaultValue(true) .build() ); private final Setting triggerHeight = sgGeneral.add(new DoubleSetting.Builder() .name("trigger-height") - .description("How high you have to jump before a rubberband is triggered.") .defaultValue(1.12) .range(0.01, 1.4) .sliderRange(0.01, 1.4) @@ -68,7 +64,6 @@ public class Burrow extends Module { private final Setting rubberbandHeight = sgGeneral.add(new DoubleSetting.Builder() .name("rubberband-height") - .description("How far to attempt to cause rubberband.") .defaultValue(12) .sliderMin(-30) .sliderMax(30) @@ -77,7 +72,6 @@ public class Burrow extends Module { private final Setting timer = sgGeneral.add(new DoubleSetting.Builder() .name("timer") - .description("Timer override.") .defaultValue(1) .min(0.01) .sliderRange(0.01, 10) @@ -86,21 +80,18 @@ public class Burrow extends Module { private final Setting onlyInHole = sgGeneral.add(new BoolSetting.Builder() .name("only-in-holes") - .description("Stops you from burrowing when not in a hole.") .defaultValue(false) .build() ); private final Setting center = sgGeneral.add(new BoolSetting.Builder() .name("center") - .description("Centers you to the middle of the block before burrowing.") .defaultValue(true) .build() ); private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() .name("rotate") - .description("Faces the block you place server-side.") .defaultValue(true) .build() ); @@ -109,7 +100,7 @@ public class Burrow extends Module { private boolean shouldBurrow; public Burrow() { - super(Categories.Combat, "burrow", "Attempts to clip you into a block."); + super(Categories.Combat, "burrow"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Criticals.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Criticals.java index 02e60af412..239a853704 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Criticals.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Criticals.java @@ -27,18 +27,16 @@ public class Criticals extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgMace = settings.createGroup("Mace"); + private final SettingGroup sgMace = settings.createGroup("mace"); private final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("The mode on how Criticals will function.") .defaultValue(Mode.Packet) .build() ); private final Setting ka = sgGeneral.add(new BoolSetting.Builder() .name("only-killaura") - .description("Only performs crits when using killaura.") .defaultValue(false) .visible(() -> mode.get() != Mode.None) .build() @@ -46,14 +44,12 @@ public class Criticals extends Module { private final Setting mace = sgMace.add(new BoolSetting.Builder() .name("smash-attack") - .description("Will always perform smash attacks when using a mace.") .defaultValue(true) .build() ); private final Setting extraHeight = sgMace.add(new DoubleSetting.Builder() .name("additional-height") - .description("The amount of additional height to spoof. More height means more damage.") .defaultValue(0.0) .min(0) .sliderRange(0, 100) @@ -69,7 +65,7 @@ public class Criticals extends Module { private boolean waitingForPeak; public Criticals() { - super(Categories.Combat, "criticals", "Performs critical attacks when you hit your target."); + super(Categories.Combat, "criticals"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/CrystalAura.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/CrystalAura.java index b3e4461342..5fb24d3c90 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/CrystalAura.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/CrystalAura.java @@ -68,18 +68,17 @@ public class CrystalAura extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgSwitch = settings.createGroup("Switch"); - private final SettingGroup sgPlace = settings.createGroup("Place"); - private final SettingGroup sgFacePlace = settings.createGroup("Face Place"); - private final SettingGroup sgBreak = settings.createGroup("Break"); - private final SettingGroup sgPause = settings.createGroup("Pause"); - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgSwitch = settings.createGroup("switch"); + private final SettingGroup sgPlace = settings.createGroup("place"); + private final SettingGroup sgFacePlace = settings.createGroup("face-place"); + private final SettingGroup sgBreak = settings.createGroup("break"); + private final SettingGroup sgPause = settings.createGroup("pause"); + private final SettingGroup sgRender = settings.createGroup("render"); // General private final Setting targetRange = sgGeneral.add(new DoubleSetting.Builder() .name("target-range") - .description("Range in which to target players.") .defaultValue(10) .min(0) .sliderMax(16) @@ -88,14 +87,12 @@ public class CrystalAura extends Module { private final Setting predictMovement = sgGeneral.add(new BoolSetting.Builder() .name("predict-movement") - .description("Predicts target movement.") .defaultValue(false) .build() ); private final Setting minDamage = sgGeneral.add(new DoubleSetting.Builder() .name("min-damage") - .description("Minimum damage the crystal needs to deal to your target.") .defaultValue(6) .min(0) .build() @@ -103,7 +100,6 @@ public class CrystalAura extends Module { private final Setting maxDamage = sgGeneral.add(new DoubleSetting.Builder() .name("max-damage") - .description("Maximum damage crystals can deal to yourself.") .defaultValue(6) .range(0, 36) .sliderMax(36) @@ -112,28 +108,24 @@ public class CrystalAura extends Module { private final Setting antiSuicide = sgGeneral.add(new BoolSetting.Builder() .name("anti-suicide") - .description("Will not place and break crystals if they will kill you.") .defaultValue(true) .build() ); private final Setting ignoreNakeds = sgGeneral.add(new BoolSetting.Builder() .name("ignore-nakeds") - .description("Ignore players with no items.") .defaultValue(false) .build() ); private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() .name("rotate") - .description("Rotates server-side towards the crystals being hit/placed.") .defaultValue(true) .build() ); private final Setting yawStepMode = sgGeneral.add(new EnumSetting.Builder() .name("yaw-steps-mode") - .description("When to run the yaw steps check.") .defaultValue(YawStepMode.Break) .visible(rotate::get) .build() @@ -141,7 +133,6 @@ public class CrystalAura extends Module { private final Setting yawSteps = sgGeneral.add(new DoubleSetting.Builder() .name("yaw-steps") - .description("Maximum number of degrees its allowed to rotate in one tick.") .defaultValue(180) .range(1, 180) .visible(rotate::get) @@ -150,7 +141,6 @@ public class CrystalAura extends Module { private final Setting>> entities = sgGeneral.add(new EntityTypeListSetting.Builder() .name("entities") - .description("Entities to attack.") .onlyAttackable() .defaultValue(EntityType.PLAYER, EntityType.WARDEN, EntityType.WITHER) .build() @@ -160,14 +150,12 @@ public class CrystalAura extends Module { private final Setting autoSwitch = sgSwitch.add(new EnumSetting.Builder() .name("auto-switch") - .description("Switches to crystals in your hotbar once a target is found.") .defaultValue(AutoSwitchMode.Normal) .build() ); private final Setting switchDelay = sgSwitch.add(new IntSetting.Builder() .name("switch-delay") - .description("The delay in ticks to wait to break a crystal after switching hotbar slot.") .defaultValue(0) .min(0) .build() @@ -175,7 +163,6 @@ public class CrystalAura extends Module { private final Setting noGapSwitch = sgSwitch.add(new BoolSetting.Builder() .name("no-gap-switch") - .description("Won't auto switch if you're holding a gapple.") .defaultValue(true) .visible(() -> autoSwitch.get() == AutoSwitchMode.Normal) .build() @@ -183,14 +170,12 @@ public class CrystalAura extends Module { private final Setting noBowSwitch = sgSwitch.add(new BoolSetting.Builder() .name("no-bow-switch") - .description("Won't auto switch if you're holding a bow.") .defaultValue(true) .build() ); private final Setting antiWeakness = sgSwitch.add(new BoolSetting.Builder() .name("anti-weakness") - .description("Switches to tools with so you can break crystals with the weakness effect.") .defaultValue(true) .build() ); @@ -199,14 +184,12 @@ public class CrystalAura extends Module { private final Setting doPlace = sgPlace.add(new BoolSetting.Builder() .name("place") - .description("If the CA should place crystals.") .defaultValue(true) .build() ); public final Setting placeDelay = sgPlace.add(new IntSetting.Builder() .name("place-delay") - .description("The delay in ticks to wait to place a crystal after it's exploded.") .defaultValue(0) .min(0) .sliderMax(20) @@ -215,7 +198,6 @@ public class CrystalAura extends Module { private final Setting placeRange = sgPlace.add(new DoubleSetting.Builder() .name("place-range") - .description("Range in which to place crystals.") .defaultValue(4.5) .min(0) .sliderMax(6) @@ -224,7 +206,6 @@ public class CrystalAura extends Module { private final Setting placeWallsRange = sgPlace.add(new DoubleSetting.Builder() .name("walls-range") - .description("Range in which to place crystals when behind blocks.") .defaultValue(4.5) .min(0) .sliderMax(6) @@ -233,21 +214,18 @@ public class CrystalAura extends Module { private final Setting placement112 = sgPlace.add(new BoolSetting.Builder() .name("1.12-placement") - .description("Uses 1.12 crystal placement.") .defaultValue(false) .build() ); private final Setting support = sgPlace.add(new EnumSetting.Builder() .name("support") - .description("Places a support block in air if no other position have been found.") .defaultValue(SupportMode.Disabled) .build() ); private final Setting supportDelay = sgPlace.add(new IntSetting.Builder() .name("support-delay") - .description("Delay in ticks after placing support block.") .defaultValue(1) .min(0) .visible(() -> support.get() != SupportMode.Disabled) @@ -258,14 +236,12 @@ public class CrystalAura extends Module { private final Setting facePlace = sgFacePlace.add(new BoolSetting.Builder() .name("face-place") - .description("Will face-place when target is below a certain health or armor durability threshold.") .defaultValue(true) .build() ); private final Setting facePlaceHealth = sgFacePlace.add(new DoubleSetting.Builder() .name("face-place-health") - .description("The health the target has to be at to start face placing.") .defaultValue(8) .min(1) .sliderMin(1) @@ -276,7 +252,6 @@ public class CrystalAura extends Module { private final Setting facePlaceDurability = sgFacePlace.add(new DoubleSetting.Builder() .name("face-place-durability") - .description("The durability threshold percentage to be able to face-place.") .defaultValue(2) .min(1) .sliderMin(1) @@ -287,7 +262,6 @@ public class CrystalAura extends Module { private final Setting facePlaceArmor = sgFacePlace.add(new BoolSetting.Builder() .name("face-place-missing-armor") - .description("Automatically starts face placing when a target misses a piece of armor.") .defaultValue(false) .visible(facePlace::get) .build() @@ -295,7 +269,6 @@ public class CrystalAura extends Module { private final Setting forceFacePlace = sgFacePlace.add(new KeybindSetting.Builder() .name("force-face-place") - .description("Starts face place when this button is pressed.") .defaultValue(Keybind.none()) .build() ); @@ -304,14 +277,12 @@ public class CrystalAura extends Module { private final Setting doBreak = sgBreak.add(new BoolSetting.Builder() .name("break") - .description("If the CA should break crystals.") .defaultValue(true) .build() ); private final Setting breakDelay = sgBreak.add(new IntSetting.Builder() .name("break-delay") - .description("The delay in ticks to wait to break a crystal after it's placed.") .defaultValue(0) .min(0) .sliderMax(20) @@ -320,14 +291,12 @@ public class CrystalAura extends Module { private final Setting smartDelay = sgBreak.add(new BoolSetting.Builder() .name("smart-delay") - .description("Only breaks crystals when the target can receive damage.") .defaultValue(false) .build() ); private final Setting breakRange = sgBreak.add(new DoubleSetting.Builder() .name("break-range") - .description("Range in which to break crystals.") .defaultValue(4.5) .min(0) .sliderMax(6) @@ -336,7 +305,6 @@ public class CrystalAura extends Module { private final Setting breakWallsRange = sgBreak.add(new DoubleSetting.Builder() .name("walls-range") - .description("Range in which to break crystals when behind blocks.") .defaultValue(4.5) .min(0) .sliderMax(6) @@ -345,14 +313,12 @@ public class CrystalAura extends Module { private final Setting onlyBreakOwn = sgBreak.add(new BoolSetting.Builder() .name("only-own") - .description("Only breaks own crystals.") .defaultValue(false) .build() ); private final Setting breakAttempts = sgBreak.add(new IntSetting.Builder() .name("break-attempts") - .description("How many times to hit a crystal before stopping to target it.") .defaultValue(2) .sliderMin(1) .sliderMax(5) @@ -361,7 +327,6 @@ public class CrystalAura extends Module { private final Setting ticksExisted = sgBreak.add(new IntSetting.Builder() .name("ticks-existed") - .description("Amount of ticks a crystal needs to have lived for it to be attacked by CrystalAura.") .defaultValue(0) .min(0) .build() @@ -369,7 +334,6 @@ public class CrystalAura extends Module { private final Setting attackFrequency = sgBreak.add(new IntSetting.Builder() .name("attack-frequency") - .description("Maximum hits to do per second.") .defaultValue(25) .min(1) .sliderRange(1, 30) @@ -378,7 +342,6 @@ public class CrystalAura extends Module { private final Setting fastBreak = sgBreak.add(new BoolSetting.Builder() .name("fast-break") - .description("Ignores break delay and tries to break the crystal as soon as it's spawned in the world.") .defaultValue(true) .build() ); @@ -387,35 +350,30 @@ public class CrystalAura extends Module { public final Setting pauseOnUse = sgPause.add(new EnumSetting.Builder() .name("pause-on-use") - .description("Which processes should be paused while using an item.") .defaultValue(PauseMode.Place) .build() ); public final Setting pauseOnMine = sgPause.add(new EnumSetting.Builder() .name("pause-on-mine") - .description("Which processes should be paused while mining a block.") .defaultValue(PauseMode.None) .build() ); private final Setting pauseOnLag = sgPause.add(new BoolSetting.Builder() .name("pause-on-lag") - .description("Whether to pause if the server is not responding.") .defaultValue(true) .build() ); public final Setting> pauseModules = sgPause.add(new ModuleListSetting.Builder() .name("pause-modules") - .description("Pauses while any of the selected modules are active.") .defaultValue(BedAura.class) .build() ); public final Setting pauseHealth = sgPause.add(new DoubleSetting.Builder() .name("pause-health") - .description("Pauses when you go below a certain health.") .defaultValue(5) .range(0,36) .sliderRange(0,36) @@ -426,21 +384,18 @@ public class CrystalAura extends Module { public final Setting swingMode = sgRender.add(new EnumSetting.Builder() .name("swing-mode") - .description("How to swing when placing.") .defaultValue(SwingMode.Both) .build() ); private final Setting renderMode = sgRender.add(new EnumSetting.Builder() .name("render-mode") - .description("The mode to render in.") .defaultValue(RenderMode.Normal) .build() ); private final Setting renderPlace = sgRender.add(new BoolSetting.Builder() .name("render-place") - .description("Renders a block overlay over the block the crystals are being placed on.") .defaultValue(true) .visible(() -> renderMode.get() == RenderMode.Normal) .build() @@ -448,7 +403,6 @@ public class CrystalAura extends Module { private final Setting placeRenderTime = sgRender.add(new IntSetting.Builder() .name("place-time") - .description("How long to render placements.") .defaultValue(10) .min(0) .sliderMax(20) @@ -458,7 +412,6 @@ public class CrystalAura extends Module { private final Setting renderBreak = sgRender.add(new BoolSetting.Builder() .name("render-break") - .description("Renders a block overlay over the block the crystals are broken on.") .defaultValue(false) .visible(() -> renderMode.get() == RenderMode.Normal) .build() @@ -466,7 +419,6 @@ public class CrystalAura extends Module { private final Setting breakRenderTime = sgRender.add(new IntSetting.Builder() .name("break-time") - .description("How long to render breaking for.") .defaultValue(13) .min(0) .sliderMax(20) @@ -476,7 +428,6 @@ public class CrystalAura extends Module { private final Setting smoothness = sgRender.add(new IntSetting.Builder() .name("smoothness") - .description("How smoothly the render should move around.") .defaultValue(10) .min(0) .sliderMax(20) @@ -486,7 +437,6 @@ public class CrystalAura extends Module { private final Setting height = sgRender.add(new DoubleSetting.Builder() .name("height") - .description("How tall the gradient should be.") .defaultValue(0.7) .min(0) .sliderMax(1) @@ -496,7 +446,6 @@ public class CrystalAura extends Module { private final Setting renderTime = sgRender.add(new IntSetting.Builder() .name("render-time") - .description("How long to render placements.") .defaultValue(10) .min(0) .sliderMax(20) @@ -506,7 +455,6 @@ public class CrystalAura extends Module { private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .visible(() -> renderMode.get() != RenderMode.None) .build() @@ -514,7 +462,6 @@ public class CrystalAura extends Module { private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") - .description("The side color of the block overlay.") .defaultValue(new SettingColor(255, 255, 255, 45)) .visible(() -> shapeMode.get().sides() && renderMode.get() != RenderMode.None) .build() @@ -522,7 +469,6 @@ public class CrystalAura extends Module { private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") - .description("The line color of the block overlay.") .defaultValue(new SettingColor(255, 255, 255)) .visible(() -> shapeMode.get().lines() && renderMode.get() != RenderMode.None) .build() @@ -530,7 +476,6 @@ public class CrystalAura extends Module { private final Setting renderDamageText = sgRender.add(new BoolSetting.Builder() .name("damage") - .description("Renders crystal damage text in the block overlay.") .defaultValue(true) .visible(() -> renderMode.get() != RenderMode.None) .build() @@ -538,7 +483,6 @@ public class CrystalAura extends Module { private final Setting damageColor = sgRender.add(new ColorSetting.Builder() .name("damage-color") - .description("The color of the damage text.") .defaultValue(new SettingColor(255, 255, 255)) .visible(() -> renderMode.get() != RenderMode.None && renderDamageText.get()) .build() @@ -546,7 +490,6 @@ public class CrystalAura extends Module { private final Setting damageTextScale = sgRender.add(new DoubleSetting.Builder() .name("damage-scale") - .description("How big the damage text should be.") .defaultValue(1.25) .min(1) .sliderMax(4) @@ -601,7 +544,7 @@ public class CrystalAura extends Module { private double renderDamage; public CrystalAura() { - super(Categories.Combat, "crystal-aura", "Automatically places and attacks crystals."); + super(Categories.Combat, "crystal-aura"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Hitboxes.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Hitboxes.java index 8f8f469066..e7e493c8e1 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Hitboxes.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Hitboxes.java @@ -21,39 +21,34 @@ public class Hitboxes extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgWeapon = settings.createGroup("Weapon Options"); + private final SettingGroup sgWeapon = settings.createGroup("weapon-options"); private final Setting>> entities = sgGeneral.add(new EntityTypeListSetting.Builder() .name("entities") - .description("Which entities to target.") .defaultValue(EntityType.PLAYER) .build() ); private final Setting value = sgGeneral.add(new DoubleSetting.Builder() .name("expand") - .description("How much to expand the hitbox of the entity.") .defaultValue(0.5) .build() ); private final Setting ignoreFriends = sgGeneral.add(new BoolSetting.Builder() .name("ignore-friends") - .description("Doesn't expand the hitboxes of friends.") .defaultValue(true) .build() ); private final Setting onlyOnWeapon = sgWeapon.add(new BoolSetting.Builder() .name("only-on-weapon") - .description("Only modifies hitbox when holding a weapon in hand.") .defaultValue(false) .build() ); private final Setting sword = sgWeapon.add(new BoolSetting.Builder() .name("sword") - .description("Enable when holding a sword.") .defaultValue(true) .visible(onlyOnWeapon::get) .build() @@ -61,7 +56,6 @@ public class Hitboxes extends Module { private final Setting axe = sgWeapon.add(new BoolSetting.Builder() .name("axe") - .description("Enable when holding an axe.") .defaultValue(true) .visible(onlyOnWeapon::get) .build() @@ -69,7 +63,6 @@ public class Hitboxes extends Module { private final Setting pickaxe = sgWeapon.add(new BoolSetting.Builder() .name("pickaxe") - .description("Enable when holding a pickaxe.") .defaultValue(true) .visible(onlyOnWeapon::get) .build() @@ -77,7 +70,6 @@ public class Hitboxes extends Module { private final Setting shovel = sgWeapon.add(new BoolSetting.Builder() .name("shovel") - .description("Enable when holding a shovel.") .defaultValue(true) .visible(onlyOnWeapon::get) .build() @@ -85,7 +77,6 @@ public class Hitboxes extends Module { private final Setting hoe = sgWeapon.add(new BoolSetting.Builder() .name("hoe") - .description("Enable when holding a hoe.") .defaultValue(true) .visible(onlyOnWeapon::get) .build() @@ -93,7 +84,6 @@ public class Hitboxes extends Module { private final Setting mace = sgWeapon.add(new BoolSetting.Builder() .name("mace") - .description("Enable when holding a mace.") .defaultValue(true) .visible(onlyOnWeapon::get) .build() @@ -101,7 +91,6 @@ public class Hitboxes extends Module { private final Setting spear = sgWeapon.add(new BoolSetting.Builder() .name("spear") - .description("Enable when holding a spear.") .defaultValue(true) .visible(onlyOnWeapon::get) .build() @@ -109,14 +98,13 @@ public class Hitboxes extends Module { private final Setting trident = sgWeapon.add(new BoolSetting.Builder() .name("trident") - .description("Enable when holding a trident.") .defaultValue(true) .visible(onlyOnWeapon::get) .build() ); public Hitboxes() { - super(Categories.Combat, "hitboxes", "Expands an entity's hitboxes."); + super(Categories.Combat, "hitboxes"); } public double getEntityValue(Entity entity) { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/HoleFiller.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/HoleFiller.java index 25ea0b41cf..987be62c9d 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/HoleFiller.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/HoleFiller.java @@ -39,12 +39,11 @@ public class HoleFiller extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgSmart = settings.createGroup("Smart"); - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgSmart = settings.createGroup("smart"); + private final SettingGroup sgRender = settings.createGroup("render"); private final Setting> blocks = sgGeneral.add(new BlockListSetting.Builder() .name("blocks") - .description("Which blocks can be used to fill holes.") .defaultValue( Blocks.OBSIDIAN, Blocks.CRYING_OBSIDIAN, @@ -57,7 +56,6 @@ public class HoleFiller extends Module { private final Setting searchRadius = sgGeneral.add(new IntSetting.Builder() .name("search-radius") - .description("Horizontal radius in which to search for holes.") .defaultValue(5) .min(0) .sliderMax(6) @@ -66,7 +64,6 @@ public class HoleFiller extends Module { private final Setting placeRange = sgGeneral.add(new DoubleSetting.Builder() .name("place-range") - .description("How far away from the player you can place a block.") .defaultValue(4.5) .min(0) .sliderMax(6) @@ -75,7 +72,6 @@ public class HoleFiller extends Module { private final Setting placeWallsRange = sgGeneral.add(new DoubleSetting.Builder() .name("walls-range") - .description("How far away from the player you can place a block behind walls.") .defaultValue(4.5) .min(0) .sliderMax(6) @@ -84,21 +80,18 @@ public class HoleFiller extends Module { private final Setting doubles = sgGeneral.add(new BoolSetting.Builder() .name("doubles") - .description("Fills double holes.") .defaultValue(true) .build() ); private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() .name("rotate") - .description("Automatically rotates towards the holes being filled.") .defaultValue(false) .build() ); private final Setting placeDelay = sgGeneral.add(new IntSetting.Builder() .name("place-delay") - .description("The ticks delay between placement.") .defaultValue(1) .min(0) .build() @@ -106,7 +99,6 @@ public class HoleFiller extends Module { private final Setting blocksPerTick = sgGeneral.add(new IntSetting.Builder() .name("blocks-per-tick") - .description("How many blocks to place in one tick.") .defaultValue(3) .min(1) .build() @@ -116,14 +108,12 @@ public class HoleFiller extends Module { private final Setting smart = sgSmart.add(new BoolSetting.Builder() .name("smart") - .description("Take more factors into account before filling a hole.") .defaultValue(true) .build() ); public final Setting forceFill = sgSmart.add(new KeybindSetting.Builder() .name("force-fill") - .description("Fills all holes around you regardless of target checks.") .defaultValue(Keybind.none()) .visible(smart::get) .build() @@ -131,7 +121,6 @@ public class HoleFiller extends Module { private final Setting predictMovement = sgSmart.add(new BoolSetting.Builder() .name("predict-movement") - .description("Predict target movement to account for ping.") .defaultValue(true) .visible(smart::get) .build() @@ -139,7 +128,6 @@ public class HoleFiller extends Module { private final Setting ticksToPredict = sgSmart.add(new DoubleSetting.Builder() .name("ticks-to-predict") - .description("How many ticks ahead we should predict for.") .defaultValue(10) .min(1) .sliderMax(30) @@ -149,7 +137,6 @@ public class HoleFiller extends Module { private final Setting ignoreSafe = sgSmart.add(new BoolSetting.Builder() .name("ignore-safe") - .description("Ignore players in safe holes.") .defaultValue(true) .visible(smart::get) .build() @@ -157,7 +144,6 @@ public class HoleFiller extends Module { private final Setting onlyMoving = sgSmart.add(new BoolSetting.Builder() .name("only-moving") - .description("Ignore players if they're standing still.") .defaultValue(true) .visible(smart::get) .build() @@ -165,7 +151,6 @@ public class HoleFiller extends Module { private final Setting targetRange = sgSmart.add(new DoubleSetting.Builder() .name("target-range") - .description("How far away to target players.") .defaultValue(7) .min(0) .sliderMin(1) @@ -176,7 +161,6 @@ public class HoleFiller extends Module { private final Setting feetRange = sgSmart.add(new DoubleSetting.Builder() .name("feet-range") - .description("How far from a hole a player's feet must be to fill it.") .defaultValue(1.5) .min(0) .sliderMax(4) @@ -188,21 +172,18 @@ public class HoleFiller extends Module { private final Setting swing = sgRender.add(new BoolSetting.Builder() .name("swing") - .description("Swing the player's hand when placing.") .defaultValue(true) .build() ); private final Setting render = sgRender.add(new BoolSetting.Builder() .name("render") - .description("Renders an overlay where blocks will be placed.") .defaultValue(true) .build() ); private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .visible(render::get) .build() @@ -210,7 +191,6 @@ public class HoleFiller extends Module { private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") - .description("The side color of the target block rendering.") .defaultValue(new SettingColor(197, 137, 232, 10)) .visible(() -> render.get() && shapeMode.get().sides()) .build() @@ -218,7 +198,6 @@ public class HoleFiller extends Module { private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") - .description("The line color of the target block rendering.") .defaultValue(new SettingColor(197, 137, 232)) .visible(() -> render.get() && shapeMode.get().lines()) .build() @@ -226,7 +205,6 @@ public class HoleFiller extends Module { private final Setting nextSideColor = sgRender.add(new ColorSetting.Builder() .name("next-side-color") - .description("The side color of the next block to be placed.") .defaultValue(new SettingColor(227, 196, 245, 10)) .visible(() -> render.get() && shapeMode.get().sides()) .build() @@ -234,7 +212,6 @@ public class HoleFiller extends Module { private final Setting nextLineColor = sgRender.add(new ColorSetting.Builder() .name("next-line-color") - .description("The line color of the next block to be placed.") .defaultValue(new SettingColor(5, 139, 221)) .visible(() -> render.get() && shapeMode.get().lines()) .build() @@ -245,7 +222,7 @@ public class HoleFiller extends Module { private int timer; public HoleFiller() { - super(Categories.Combat, "hole-filler", "Fills holes with specified blocks."); + super(Categories.Combat, "hole-filler"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/KillAura.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/KillAura.java index 769dff7ea8..edc6f48e82 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/KillAura.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/KillAura.java @@ -47,21 +47,19 @@ public class KillAura extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgTargeting = settings.createGroup("Targeting"); - private final SettingGroup sgTiming = settings.createGroup("Timing"); + private final SettingGroup sgTargeting = settings.createGroup("targeting"); + private final SettingGroup sgTiming = settings.createGroup("timing"); // General private final Setting attackWhenHolding = sgGeneral.add(new EnumSetting.Builder() .name("attack-when-holding") - .description("Only attacks an entity when a specified item is in your hand.") .defaultValue(AttackItems.Weapons) .build() ); private final Setting> weapons = sgGeneral.add(new ItemListSetting.Builder() .name("selected-weapon-types") - .description("Which types of weapons to attack with (if you select the diamond sword, any type of sword may be used to attack).") .defaultValue(Items.DIAMOND_SWORD, Items.DIAMOND_AXE, Items.TRIDENT) .filter(FILTER::contains) .visible(() -> attackWhenHolding.get() == AttackItems.Weapons) @@ -70,21 +68,18 @@ public class KillAura extends Module { private final Setting rotation = sgGeneral.add(new EnumSetting.Builder() .name("rotate") - .description("Determines when you should rotate towards the target.") .defaultValue(RotationMode.Always) .build() ); private final Setting autoSwitch = sgGeneral.add(new BoolSetting.Builder() .name("auto-switch") - .description("Switches to an acceptable weapon when attacking the target.") .defaultValue(false) .build() ); private final Setting swapBack = sgGeneral.add(new BoolSetting.Builder() .name("swap-back") - .description("Switches to your previous slot when done attacking the target.") .defaultValue(false) .visible(autoSwitch::get) .build() @@ -92,7 +87,6 @@ public class KillAura extends Module { private final Setting shieldMode = sgGeneral.add(new EnumSetting.Builder() .name("shield-mode") - .description("Will try and use an axe to break target shields.") .defaultValue(ShieldMode.Break) .visible(autoSwitch::get) .build() @@ -100,21 +94,18 @@ public class KillAura extends Module { private final Setting onlyOnClick = sgGeneral.add(new BoolSetting.Builder() .name("only-on-click") - .description("Only attacks when holding left click.") .defaultValue(false) .build() ); private final Setting onlyOnLook = sgGeneral.add(new BoolSetting.Builder() .name("only-on-look") - .description("Only attacks when looking at an entity.") .defaultValue(false) .build() ); private final Setting pauseOnCombat = sgGeneral.add(new BoolSetting.Builder() .name("pause-baritone") - .description("Freezes Baritone temporarily until you are finished attacking the entity.") .defaultValue(true) .build() ); @@ -123,7 +114,6 @@ public class KillAura extends Module { private final Setting>> entities = sgTargeting.add(new EntityTypeListSetting.Builder() .name("entities") - .description("Entities to attack.") .onlyAttackable() .defaultValue(EntityType.PLAYER) .build() @@ -131,14 +121,12 @@ public class KillAura extends Module { private final Setting priority = sgTargeting.add(new EnumSetting.Builder() .name("priority") - .description("How to filter targets within range.") .defaultValue(SortPriority.ClosestAngle) .build() ); private final Setting maxTargets = sgTargeting.add(new IntSetting.Builder() .name("max-targets") - .description("How many entities to target at once.") .defaultValue(1) .min(1) .sliderRange(1, 5) @@ -148,7 +136,6 @@ public class KillAura extends Module { private final Setting range = sgTargeting.add(new DoubleSetting.Builder() .name("range") - .description("The maximum range the entity can be to attack it.") .defaultValue(4.5) .min(0) .sliderMax(6) @@ -157,7 +144,6 @@ public class KillAura extends Module { private final Setting wallsRange = sgTargeting.add(new DoubleSetting.Builder() .name("walls-range") - .description("The maximum range the entity can be attacked through walls.") .defaultValue(3.5) .min(0) .sliderMax(6) @@ -166,28 +152,24 @@ public class KillAura extends Module { private final Setting mobAgeFilter = sgTargeting.add(new EnumSetting.Builder() .name("mob-age-filter") - .description("Determines the age of the mobs to target (baby, adult, or both).") .defaultValue(EntityAge.Adult) .build() ); private final Setting ignoreNamed = sgTargeting.add(new BoolSetting.Builder() .name("ignore-named") - .description("Whether or not to attack mobs with a name.") .defaultValue(false) .build() ); private final Setting ignorePassive = sgTargeting.add(new BoolSetting.Builder() .name("ignore-passive") - .description("Will only attack sometimes passive mobs if they are targeting you.") .defaultValue(true) .build() ); private final Setting ignoreTamed = sgTargeting.add(new BoolSetting.Builder() .name("ignore-tamed") - .description("Will avoid attacking mobs you tamed.") .defaultValue(false) .build() ); @@ -196,42 +178,36 @@ public class KillAura extends Module { private final Setting pauseOnLag = sgTiming.add(new BoolSetting.Builder() .name("pause-on-lag") - .description("Pauses if the server is lagging.") .defaultValue(true) .build() ); private final Setting pauseOnUse = sgTiming.add(new BoolSetting.Builder() .name("pause-on-use") - .description("Does not attack while using an item.") .defaultValue(false) .build() ); private final Setting pauseOnCA = sgTiming.add(new BoolSetting.Builder() .name("pause-on-CA") - .description("Does not attack while CA is placing.") .defaultValue(true) .build() ); private final Setting tpsSync = sgTiming.add(new BoolSetting.Builder() .name("TPS-sync") - .description("Tries to sync attack delay with the server's TPS.") .defaultValue(true) .build() ); private final Setting customDelay = sgTiming.add(new BoolSetting.Builder() .name("custom-delay") - .description("Use a custom delay instead of the vanilla cooldown.") .defaultValue(false) .build() ); private final Setting hitDelay = sgTiming.add(new IntSetting.Builder() .name("hit-delay") - .description("How fast you hit the entity in ticks.") .defaultValue(11) .min(0) .sliderMax(60) @@ -241,7 +217,6 @@ public class KillAura extends Module { private final Setting switchDelay = sgTiming.add(new IntSetting.Builder() .name("switch-delay") - .description("How many ticks to wait before hitting an entity after switching hotbar slots.") .defaultValue(0) .min(0) .sliderMax(10) @@ -256,7 +231,7 @@ public class KillAura extends Module { public static int previousSlot; public KillAura() { - super(Categories.Combat, "kill-aura", "Attacks specified entities around you."); + super(Categories.Combat, "kill-aura"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Offhand.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Offhand.java index 2e4609ea49..bf04fcf6db 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Offhand.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Offhand.java @@ -26,14 +26,13 @@ import static org.lwjgl.glfw.GLFW.GLFW_MOUSE_BUTTON_RIGHT; public class Offhand extends Module { - private final SettingGroup sgCombat = settings.createGroup("Combat"); - private final SettingGroup sgTotem = settings.createGroup("Totem"); + private final SettingGroup sgCombat = settings.createGroup("combat"); + private final SettingGroup sgTotem = settings.createGroup("totem"); //Combat private final Setting delayTicks = sgCombat.add(new IntSetting.Builder() .name("item-switch-delay") - .description("The delay in ticks between slot movements.") .defaultValue(0) .min(0) .sliderMax(20) @@ -41,21 +40,18 @@ public class Offhand extends Module { ); private final Setting preferreditem = sgCombat.add(new EnumSetting.Builder() .name("item") - .description("Which item to hold in your offhand.") .defaultValue(Item.Crystal) .build() ); private final Setting hotbar = sgCombat.add(new BoolSetting.Builder() .name("hotbar") - .description("Whether to use items from your hotbar.") .defaultValue(false) .build() ); private final Setting rightgapple = sgCombat.add(new BoolSetting.Builder() .name("right-gapple") - .description("Will switch to a gapple when holding right click.(DO NOT USE WITH POTION ON)") .defaultValue(false) .build() ); @@ -63,7 +59,6 @@ public class Offhand extends Module { private final Setting SwordGap = sgCombat.add(new BoolSetting.Builder() .name("sword-gapple") - .description("Will switch to a gapple when holding a sword and right click.") .defaultValue(false) .visible(rightgapple::get) .build() @@ -71,7 +66,6 @@ public class Offhand extends Module { private final Setting alwaysSwordGap = sgCombat.add(new BoolSetting.Builder() .name("always-gap-on-sword") - .description("Holds an Enchanted Golden Apple when you are holding a sword.") .defaultValue(false) .visible(() -> !rightgapple.get()) .build() @@ -80,14 +74,12 @@ public class Offhand extends Module { private final Setting alwaysPot = sgCombat.add(new BoolSetting.Builder() .name("always-pot-on-sword") - .description("Will switch to a potion when holding a sword") .defaultValue(false) .visible(() -> !rightgapple.get() && !alwaysSwordGap.get()) .build() ); private final Setting potionClick = sgCombat.add(new BoolSetting.Builder() .name("sword-pot") - .description("Will switch to a potion when holding a sword and right click.") .defaultValue(false) .visible(() -> !rightgapple.get() && !alwaysPot.get() && !alwaysSwordGap.get() ) .build() @@ -97,7 +89,6 @@ public class Offhand extends Module { private final Setting minHealth = sgTotem.add(new DoubleSetting.Builder() .name("min-health") - .description("Will hold a totem when below this amount of health.") .defaultValue(10) .range(0,36) .sliderRange(0,36) @@ -106,21 +97,18 @@ public class Offhand extends Module { private final Setting elytra = sgTotem.add(new BoolSetting.Builder() .name("elytra") - .description("Will always hold a totem while flying with an elytra.") .defaultValue(false) .build() ); private final Setting falling = sgTotem.add(new BoolSetting.Builder() .name("falling") - .description("Will hold a totem if fall damage could kill you.") .defaultValue(false) .build() ); private final Setting explosion = sgTotem.add(new BoolSetting.Builder() .name("explosion") - .description("Will hold a totem when explosion damage could kill you.") .defaultValue(true) .build() ); @@ -135,7 +123,7 @@ public class Offhand extends Module { private int totems, ticks; public Offhand() { - super(Categories.Combat, "offhand", "Allows you to hold specified items in your offhand."); + super(Categories.Combat, "offhand"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Quiver.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Quiver.java index 62e5fc0dec..26a8c6ee5d 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Quiver.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Quiver.java @@ -35,19 +35,17 @@ public class Quiver extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgSafety = settings.createGroup("Safety"); + private final SettingGroup sgSafety = settings.createGroup("safety"); private final Setting> effects = sgGeneral.add(new StatusEffectListSetting.Builder() .name("effects") - .description("Which effects to shoot you with.") .defaultValue(StatusEffects.STRENGTH.value()) .build() ); private final Setting cooldown = sgGeneral.add(new IntSetting.Builder() .name("cooldown") - .description("How many ticks between shooting effects (19 minimum for NCP).") .defaultValue(10) .range(0,40) .sliderRange(0,40) @@ -56,21 +54,18 @@ public class Quiver extends Module { private final Setting checkEffects = sgGeneral.add(new BoolSetting.Builder() .name("check-effects") - .description("Won't shoot you with effects you already have.") .defaultValue(true) .build() ); private final Setting silentBow = sgGeneral.add(new BoolSetting.Builder() .name("silent-bow") - .description("Takes a bow from your inventory to quiver.") .defaultValue(true) .build() ); private final Setting chatInfo = sgGeneral.add(new BoolSetting.Builder() .name("chat-info") - .description("Sends info about quiver checks in chat.") .defaultValue(false) .build() ); @@ -79,21 +74,18 @@ public class Quiver extends Module { private final Setting onlyInHoles = sgSafety.add(new BoolSetting.Builder() .name("only-in-holes") - .description("Only quiver when you're in a hole.") .defaultValue(true) .build() ); private final Setting onlyOnGround = sgSafety.add(new BoolSetting.Builder() .name("only-on-ground") - .description("Only quiver when you're on the ground.") .defaultValue(true) .build() ); private final Setting minHealth = sgSafety.add(new DoubleSetting.Builder() .name("min-health") - .description("How much health you must have to quiver.") .defaultValue(10) .range(0,36) .sliderRange(0,36) @@ -107,7 +99,7 @@ public class Quiver extends Module { private final BlockPos.Mutable testPos = new BlockPos.Mutable(); public Quiver() { - super(Categories.Combat, "quiver", "Shoots arrows at yourself."); + super(Categories.Combat, "quiver"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/SelfAnvil.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/SelfAnvil.java index ee1b0a2754..0f074589a8 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/SelfAnvil.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/SelfAnvil.java @@ -18,7 +18,7 @@ public class SelfAnvil extends Module { public SelfAnvil() { - super(Categories.Combat, "self-anvil", "Automatically places an anvil on you to prevent other players from going into your hole."); + super(Categories.Combat, "self-anvil"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/SelfTrap.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/SelfTrap.java index d1706de6b9..f1affec325 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/SelfTrap.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/SelfTrap.java @@ -39,55 +39,48 @@ public enum BottomMode { } private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgRender = settings.createGroup("render"); // General private final Setting> blocks = sgGeneral.add(new BlockListSetting.Builder() .name("whitelist") - .description("Which blocks to use.") .defaultValue(Blocks.OBSIDIAN, Blocks.NETHERITE_BLOCK) .build() ); private final Setting topPlacement = sgGeneral.add(new EnumSetting.Builder() .name("top-mode") - .description("Which positions to place on your top half.") .defaultValue(TopMode.Top) .build() ); private final Setting bottomPlacement = sgGeneral.add(new EnumSetting.Builder() .name("bottom-mode") - .description("Which positions to place on your bottom half.") .defaultValue(BottomMode.None) .build() ); private final Setting delaySetting = sgGeneral.add(new IntSetting.Builder() .name("place-delay") - .description("How many ticks between block placements.") .defaultValue(1) .build() ); private final Setting center = sgGeneral.add(new BoolSetting.Builder() .name("center") - .description("Centers you on the block you are standing on before placing.") .defaultValue(true) .build() ); private final Setting turnOff = sgGeneral.add(new BoolSetting.Builder() .name("turn-off") - .description("Turns off after placing.") .defaultValue(true) .build() ); private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() .name("rotate") - .description("Sends rotation packets to the server when placing.") .defaultValue(true) .build() ); @@ -96,28 +89,24 @@ public enum BottomMode { private final Setting render = sgRender.add(new BoolSetting.Builder() .name("render") - .description("Renders a block overlay where the blocks will be placed.") .defaultValue(true) .build() ); private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") - .description("The color of the sides of the blocks being rendered.") .defaultValue(new SettingColor(204, 0, 0, 10)) .build() ); private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") - .description("The color of the lines of the blocks being rendered.") .defaultValue(new SettingColor(204, 0, 0, 255)) .build() ); @@ -127,7 +116,7 @@ public enum BottomMode { private int delay; public SelfTrap(){ - super(Categories.Combat, "self-trap", "Places blocks above your head."); + super(Categories.Combat, "self-trap"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/SelfWeb.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/SelfWeb.java index ab3ff3f6bc..da53f86311 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/SelfWeb.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/SelfWeb.java @@ -22,14 +22,12 @@ public class SelfWeb extends Module { private final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("The mode to use for selfweb.") .defaultValue(Mode.Normal) .build() ); private final Setting range = sgGeneral.add(new IntSetting.Builder() .name("range") - .description("How far away the player has to be from you to place webs. Requires Mode to Smart.") .defaultValue(3) .min(1) .sliderRange(1, 7) @@ -39,27 +37,24 @@ public class SelfWeb extends Module { private final Setting doubles = sgGeneral.add(new BoolSetting.Builder() .name("double-place") - .description("Places webs in your upper hitbox as well.") .defaultValue(false) .build() ); private final Setting turnOff = sgGeneral.add(new BoolSetting.Builder() .name("auto-toggle") - .description("Toggles off after placing the webs.") .defaultValue(true) .build() ); private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() .name("rotate") - .description("Forces you to rotate downwards when placing webs.") .defaultValue(true) .build() ); public SelfWeb() { - super(Categories.Combat, "self-web", "Automatically places webs on you."); + super(Categories.Combat, "self-web"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Surround.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Surround.java index e23990d57e..a511033975 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Surround.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Surround.java @@ -44,14 +44,13 @@ public class Surround extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgToggles = settings.createGroup("Toggles"); - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgToggles = settings.createGroup("toggles"); + private final SettingGroup sgRender = settings.createGroup("render"); // General private final Setting> blocks = sgGeneral.add(new BlockListSetting.Builder() .name("blocks") - .description("What blocks to use for surround.") .defaultValue(Blocks.OBSIDIAN, Blocks.CRYING_OBSIDIAN, Blocks.NETHERITE_BLOCK) .filter(this::blockFilter) .build() @@ -59,7 +58,6 @@ public class Surround extends Module { private final Setting delay = sgGeneral.add(new IntSetting.Builder() .name("delay") - .description("Delay, in ticks, between block placements.") .min(0) .defaultValue(0) .build() @@ -67,7 +65,6 @@ public class Surround extends Module { private final Setting blocksPerTick = sgGeneral.add(new IntSetting.Builder() .name("blocks-per-tick") - .description("How many blocks to place in one tick.") .defaultValue(1) .min(1) .build() @@ -75,42 +72,36 @@ public class Surround extends Module { private final Setting
center = sgGeneral.add(new EnumSetting.Builder
() .name("center") - .description("Teleports you to the center of the block.") .defaultValue(Center.Incomplete) .build() ); private final Setting doubleHeight = sgGeneral.add(new BoolSetting.Builder() .name("double-height") - .description("Places obsidian on top of the original surround blocks to prevent people from face-placing you.") .defaultValue(false) .build() ); private final Setting onlyOnGround = sgGeneral.add(new BoolSetting.Builder() .name("only-on-ground") - .description("Works only when you are standing on blocks.") .defaultValue(true) .build() ); private final Setting airPlace = sgGeneral.add(new BoolSetting.Builder() .name("air-place") - .description("Allows Surround to place blocks in the air.") .defaultValue(true) .build() ); private final Setting toggleModules = sgGeneral.add(new BoolSetting.Builder() .name("toggle-modules") - .description("Turn off other modules when surround is activated.") .defaultValue(false) .build() ); private final Setting toggleBack = sgGeneral.add(new BoolSetting.Builder() .name("toggle-back-on") - .description("Turn the other modules back on when surround is deactivated.") .defaultValue(false) .visible(toggleModules::get) .build() @@ -118,21 +109,18 @@ public class Surround extends Module { private final Setting> modules = sgGeneral.add(new ModuleListSetting.Builder() .name("modules") - .description("Which modules to disable on activation.") .visible(toggleModules::get) .build() ); private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() .name("rotate") - .description("Automatically faces towards the obsidian being placed.") .defaultValue(true) .build() ); private final Setting protect = sgGeneral.add(new BoolSetting.Builder() .name("protect") - .description("Attempts to break crystals around surround positions to prevent surround break.") .defaultValue(true) .build() ); @@ -141,21 +129,18 @@ public class Surround extends Module { private final Setting toggleOnYChange = sgToggles.add(new BoolSetting.Builder() .name("toggle-on-y-change") - .description("Automatically disables when your y level changes (step, jumping, etc).") .defaultValue(true) .build() ); private final Setting toggleOnComplete = sgToggles.add(new BoolSetting.Builder() .name("toggle-on-complete") - .description("Toggles off when all blocks are placed.") .defaultValue(false) .build() ); private final Setting toggleOnDeath = sgToggles.add(new BoolSetting.Builder() .name("toggle-on-death") - .description("Toggles off when you die.") .defaultValue(true) .build() ); @@ -164,35 +149,30 @@ public class Surround extends Module { private final Setting swing = sgRender.add(new BoolSetting.Builder() .name("swing") - .description("Render your hand swinging when placing surround blocks.") .defaultValue(true) .build() ); private final Setting render = sgRender.add(new BoolSetting.Builder() .name("render") - .description("Renders a block overlay where the obsidian will be placed.") .defaultValue(true) .build() ); private final Setting renderBelow = sgRender.add(new BoolSetting.Builder() .name("below") - .description("Renders the block below you.") .defaultValue(false) .build() ); private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); private final Setting safeSideColor = sgRender.add(new ColorSetting.Builder() .name("safe-side-color") - .description("The side color for safe blocks.") .defaultValue(new SettingColor(13, 255, 0, 0)) .visible(() -> render.get() && shapeMode.get() != ShapeMode.Lines) .build() @@ -200,7 +180,6 @@ public class Surround extends Module { private final Setting safeLineColor = sgRender.add(new ColorSetting.Builder() .name("safe-line-color") - .description("The line color for safe blocks.") .defaultValue(new SettingColor(13, 255, 0, 0)) .visible(() -> render.get() && shapeMode.get() != ShapeMode.Sides) .build() @@ -208,7 +187,6 @@ public class Surround extends Module { private final Setting normalSideColor = sgRender.add(new ColorSetting.Builder() .name("normal-side-color") - .description("The side color for normal blocks.") .defaultValue(new SettingColor(0, 255, 238, 12)) .visible(() -> render.get() && shapeMode.get() != ShapeMode.Lines) .build() @@ -216,7 +194,6 @@ public class Surround extends Module { private final Setting normalLineColor = sgRender.add(new ColorSetting.Builder() .name("normal-line-color") - .description("The line color for normal blocks.") .defaultValue(new SettingColor(0, 255, 238, 100)) .visible(() -> render.get() && shapeMode.get() != ShapeMode.Sides) .build() @@ -224,7 +201,6 @@ public class Surround extends Module { private final Setting unsafeSideColor = sgRender.add(new ColorSetting.Builder() .name("unsafe-side-color") - .description("The side color for unsafe blocks.") .defaultValue(new SettingColor(204, 0, 0, 12)) .visible(() -> render.get() && shapeMode.get() != ShapeMode.Lines) .build() @@ -232,7 +208,6 @@ public class Surround extends Module { private final Setting unsafeLineColor = sgRender.add(new ColorSetting.Builder() .name("unsafe-line-color") - .description("The line color for unsafe blocks.") .defaultValue(new SettingColor(204, 0, 0, 100)) .visible(() -> render.get() && shapeMode.get() != ShapeMode.Sides) .build() @@ -242,7 +217,7 @@ public class Surround extends Module { private int timer; public Surround() { - super(Categories.Combat, "surround", "Surrounds you in blocks to prevent massive crystal damage."); + super(Categories.Combat, "surround"); } // Render diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AntiPacketKick.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AntiPacketKick.java index cf23ec9f5d..4df044e706 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AntiPacketKick.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AntiPacketKick.java @@ -16,21 +16,19 @@ public class AntiPacketKick extends Module { public final Setting catchExceptions = sgGeneral.add(new BoolSetting.Builder() .name("catch-exceptions") - .description("Drops corrupted packets.") .defaultValue(false) .build() ); public final Setting logExceptions = sgGeneral.add(new BoolSetting.Builder() .name("log-exceptions") - .description("Logs caught exceptions.") .defaultValue(false) .visible(catchExceptions::get) .build() ); public AntiPacketKick() { - super(Categories.Misc, "anti-packet-kick", "Attempts to prevent you from being disconnected by large packets."); + super(Categories.Misc, "anti-packet-kick"); } public boolean catchExceptions() { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AutoReconnect.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AutoReconnect.java index 997f57d442..d9fae8cbbc 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AutoReconnect.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AutoReconnect.java @@ -24,7 +24,6 @@ public class AutoReconnect extends Module { public final Setting time = sgGeneral.add(new DoubleSetting.Builder() .name("delay") - .description("The amount of seconds to wait before reconnecting to the server.") .defaultValue(3.5) .min(0) .decimalPlaces(1) @@ -33,7 +32,6 @@ public class AutoReconnect extends Module { public final Setting button = sgGeneral.add(new BoolSetting.Builder() .name("hide-buttons") - .description("Will hide the buttons related to Auto Reconnect.") .defaultValue(false) .build() ); @@ -41,7 +39,7 @@ public class AutoReconnect extends Module { public Pair lastServerConnection; public AutoReconnect() { - super(Categories.Misc, "auto-reconnect", "Automatically reconnects when disconnected from a server."); + super(Categories.Misc, "auto-reconnect"); MeteorClient.EVENT_BUS.subscribe(new StaticListener()); } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BetterBeacons.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BetterBeacons.java index de0fbddf72..20ab135611 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BetterBeacons.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BetterBeacons.java @@ -10,6 +10,6 @@ public class BetterBeacons extends Module { public BetterBeacons() { - super(Categories.Misc, "better-beacons", "Select effects unaffected by beacon level."); + super(Categories.Misc, "better-beacons"); } } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BetterChat.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BetterChat.java index fe3757a136..ac4f510c41 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BetterChat.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BetterChat.java @@ -48,35 +48,31 @@ public class BetterChat extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgFilter = settings.createGroup("Filter"); - private final SettingGroup sgLongerChat = settings.createGroup("Longer Chat"); - private final SettingGroup sgPrefix = settings.createGroup("Prefix"); - private final SettingGroup sgSuffix = settings.createGroup("Suffix"); + private final SettingGroup sgFilter = settings.createGroup("filter"); + private final SettingGroup sgLongerChat = settings.createGroup("longer-chat"); + private final SettingGroup sgPrefix = settings.createGroup("prefix"); + private final SettingGroup sgSuffix = settings.createGroup("suffix"); private final Setting annoy = sgGeneral.add(new BoolSetting.Builder() .name("annoy") - .description("Makes your messages aNnOyInG.") .defaultValue(false) .build() ); private final Setting fancy = sgGeneral.add(new BoolSetting.Builder() .name("fancy-chat") - .description("Makes your messages ғᴀɴᴄʏ!") .defaultValue(false) .build() ); private final Setting timestamps = sgGeneral.add(new BoolSetting.Builder() .name("timestamps") - .description("Adds client-side time stamps to the beginning of chat messages.") .defaultValue(false) .build() ); private final Setting showSeconds = sgGeneral.add(new BoolSetting.Builder() .name("show-seconds") - .description("Shows seconds in the chat message timestamps") .defaultValue(false) .visible(timestamps::get) .onChanged(o -> updateDateFormat()) @@ -85,21 +81,18 @@ public class BetterChat extends Module { private final Setting playerHeads = sgGeneral.add(new BoolSetting.Builder() .name("player-heads") - .description("Displays player heads next to their messages.") .defaultValue(true) .build() ); private final Setting coordsProtection = sgGeneral.add(new BoolSetting.Builder() .name("coords-protection") - .description("Prevents you from sending messages in chat that may contain coordinates.") .defaultValue(true) .build() ); private final Setting keepHistory = sgGeneral.add(new BoolSetting.Builder() .name("keep-history") - .description("Prevents the chat history from being cleared when disconnecting.") .defaultValue(true) .build() ); @@ -108,14 +101,12 @@ public class BetterChat extends Module { private final Setting antiSpam = sgFilter.add(new BoolSetting.Builder() .name("anti-spam") - .description("Blocks duplicate messages from filling your chat.") .defaultValue(true) .build() ); private final Setting antiSpamDepth = sgFilter.add(new IntSetting.Builder() .name("depth") - .description("How many messages to filter.") .defaultValue(20) .min(1) .sliderMin(1) @@ -125,21 +116,18 @@ public class BetterChat extends Module { private final Setting antiClear = sgFilter.add(new BoolSetting.Builder() .name("anti-clear") - .description("Prevents servers from clearing chat.") .defaultValue(true) .build() ); private final Setting filterRegex = sgFilter.add(new BoolSetting.Builder() .name("filter-regex") - .description("Filter out chat messages that match the regex filter.") .defaultValue(false) .build() ); private final Setting> regexFilters = sgFilter.add(new StringListSetting.Builder() .name("regex-filter") - .description("Regex filter used for filtering chat messages.") .visible(filterRegex::get) .onChanged(strings -> compileFilterRegexList()) .build() @@ -150,21 +138,18 @@ public class BetterChat extends Module { private final Setting infiniteChatBox = sgLongerChat.add(new BoolSetting.Builder() .name("infinite-chat-box") - .description("Lets you type infinitely long messages.") .defaultValue(true) .build() ); private final Setting longerChatHistory = sgLongerChat.add(new BoolSetting.Builder() .name("longer-chat-history") - .description("Extends chat length.") .defaultValue(true) .build() ); private final Setting longerChatLines = sgLongerChat.add(new IntSetting.Builder() .name("extra-lines") - .description("The amount of extra chat lines.") .defaultValue(1000) .min(0) .sliderRange(0, 1000) @@ -176,21 +161,18 @@ public class BetterChat extends Module { private final Setting prefix = sgPrefix.add(new BoolSetting.Builder() .name("prefix") - .description("Adds a prefix to your chat messages.") .defaultValue(false) .build() ); private final Setting prefixRandom = sgPrefix.add(new BoolSetting.Builder() .name("random") - .description("Uses a random number as your prefix.") .defaultValue(false) .build() ); private final Setting prefixText = sgPrefix.add(new StringSetting.Builder() .name("text") - .description("The text to add as your prefix.") .defaultValue("> ") .visible(() -> !prefixRandom.get()) .build() @@ -198,7 +180,6 @@ public class BetterChat extends Module { private final Setting prefixSmallCaps = sgPrefix.add(new BoolSetting.Builder() .name("small-caps") - .description("Uses small caps in the prefix.") .defaultValue(false) .visible(() -> !prefixRandom.get()) .build() @@ -208,21 +189,18 @@ public class BetterChat extends Module { private final Setting suffix = sgSuffix.add(new BoolSetting.Builder() .name("suffix") - .description("Adds a suffix to your chat messages.") .defaultValue(false) .build() ); private final Setting suffixRandom = sgSuffix.add(new BoolSetting.Builder() .name("random") - .description("Uses a random number as your suffix.") .defaultValue(false) .build() ); private final Setting suffixText = sgSuffix.add(new StringSetting.Builder() .name("text") - .description("The text to add as your suffix.") .defaultValue(" | meteor on crack!") .visible(() -> !suffixRandom.get()) .build() @@ -230,7 +208,6 @@ public class BetterChat extends Module { private final Setting suffixSmallCaps = sgSuffix.add(new BoolSetting.Builder() .name("small-caps") - .description("Uses small caps in the suffix.") .defaultValue(true) .visible(() -> !suffixRandom.get()) .build() @@ -245,7 +222,7 @@ public class BetterChat extends Module { public final IntList lines = new IntArrayList(); public BetterChat() { - super(Categories.Misc, "better-chat", "Improves your chat experience in various ways."); + super(Categories.Misc, "better-chat"); String[] a = "abcdefghijklmnopqrstuvwxyz".split(""); String[] b = "ᴀʙᴄᴅᴇꜰɢʜɪᴊᴋʟᴍɴᴏᴩqʀꜱᴛᴜᴠᴡxyᴢ".split(""); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BookBot.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BookBot.java index dc900275eb..9e8734dc42 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BookBot.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BookBot.java @@ -51,14 +51,12 @@ public class BookBot extends Module { private final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("What kind of text to write.") .defaultValue(Mode.Random) .build() ); private final Setting pages = sgGeneral.add(new IntSetting.Builder() .name("pages") - .description("The number of pages to write per book.") .defaultValue(50) .range(1, 100) .sliderRange(1, 100) @@ -68,7 +66,6 @@ public class BookBot extends Module { private final Setting onlyAscii = sgGeneral.add(new BoolSetting.Builder() .name("ascii-only") - .description("Only uses the characters in the ASCII charset.") .defaultValue(false) .visible(() -> mode.get() == Mode.Random) .build() @@ -76,7 +73,6 @@ public class BookBot extends Module { private final Setting delay = sgGeneral.add(new IntSetting.Builder() .name("delay") - .description("The amount of delay between writing books.") .defaultValue(20) .min(1) .sliderRange(1, 200) @@ -85,14 +81,12 @@ public class BookBot extends Module { private final Setting sign = sgGeneral.add(new BoolSetting.Builder() .name("sign") - .description("Whether to sign the book.") .defaultValue(true) .build() ); private final Setting name = sgGeneral.add(new StringSetting.Builder() .name("name") - .description("The name you want to give your books.") .defaultValue("Meteor on Crack!") .visible(sign::get) .build() @@ -100,7 +94,6 @@ public class BookBot extends Module { private final Setting count = sgGeneral.add(new BoolSetting.Builder() .name("append-count") - .description("Whether to append the number of the book to the title.") .defaultValue(true) .visible(sign::get) .build() @@ -108,7 +101,6 @@ public class BookBot extends Module { private final Setting wordWrap = sgGeneral.add(new BoolSetting.Builder() .name("word-wrap") - .description("Prevents words from being cut in the middle of lines.") .defaultValue(true) .visible(() -> mode.get() == Mode.File) .build() @@ -121,7 +113,7 @@ public class BookBot extends Module { private Random random; public BookBot() { - super(Categories.Misc, "book-bot", "Automatically writes in books."); + super(Categories.Misc, "book-bot"); if (!file.exists()) { file = null; diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/DiscordPresence.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/DiscordPresence.java index 5a36774923..8e130c96c9 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/DiscordPresence.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/DiscordPresence.java @@ -46,14 +46,13 @@ public enum SelectMode { Sequential } - private final SettingGroup sgLine1 = settings.createGroup("Line 1"); - private final SettingGroup sgLine2 = settings.createGroup("Line 2"); + private final SettingGroup sgLine1 = settings.createGroup("line-1"); + private final SettingGroup sgLine2 = settings.createGroup("line-2"); // Line 1 private final Setting> line1Strings = sgLine1.add(new StringListSetting.Builder() .name("line-1-messages") - .description("Messages used for the first line.") .defaultValue("{player}", "{server}") .onChanged(strings -> recompileLine1()) .renderer(StarscriptTextBoxRenderer.class) @@ -62,7 +61,6 @@ public enum SelectMode { private final Setting line1UpdateDelay = sgLine1.add(new IntSetting.Builder() .name("line-1-update-delay") - .description("How fast to update the first line in ticks.") .defaultValue(200) .min(10) .sliderRange(10, 200) @@ -71,7 +69,6 @@ public enum SelectMode { private final Setting line1SelectMode = sgLine1.add(new EnumSetting.Builder() .name("line-1-select-mode") - .description("How to select messages for the first line.") .defaultValue(SelectMode.Sequential) .build() ); @@ -80,7 +77,6 @@ public enum SelectMode { private final Setting> line2Strings = sgLine2.add(new StringListSetting.Builder() .name("line-2-messages") - .description("Messages used for the second line.") .defaultValue("Meteor on Crack!", "{round(server.tps, 1)} TPS", "Playing on {server.difficulty} difficulty.", "{server.player_count} Players online") .onChanged(strings -> recompileLine2()) .renderer(StarscriptTextBoxRenderer.class) @@ -89,7 +85,6 @@ public enum SelectMode { private final Setting line2UpdateDelay = sgLine2.add(new IntSetting.Builder() .name("line-2-update-delay") - .description("How fast to update the second line in ticks.") .defaultValue(60) .min(10) .sliderRange(10, 200) @@ -98,7 +93,6 @@ public enum SelectMode { private final Setting line2SelectMode = sgLine2.add(new EnumSetting.Builder() .name("line-2-select-mode") - .description("How to select messages for the second line.") .defaultValue(SelectMode.Sequential) .build() ); @@ -122,7 +116,7 @@ public enum SelectMode { } public DiscordPresence() { - super(Categories.Misc, "discord-presence", "Displays Meteor as your presence on Discord."); + super(Categories.Misc, "discord-presence"); runInMainMenu = true; } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/InventoryTweaks.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/InventoryTweaks.java index 8a13ebb7f2..6c8e3bd5e9 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/InventoryTweaks.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/InventoryTweaks.java @@ -43,24 +43,22 @@ public class InventoryTweaks extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgSorting = settings.createGroup("Sorting"); - private final SettingGroup sgAntiDrop = settings.createGroup("Anti Drop"); - private final SettingGroup sgAutoDrop = settings.createGroup("Auto Drop"); - private final SettingGroup sgStealDump = settings.createGroup("Steal and Dump"); - private final SettingGroup sgAutoSteal = settings.createGroup("Auto Steal"); + private final SettingGroup sgSorting = settings.createGroup("sorting"); + private final SettingGroup sgAntiDrop = settings.createGroup("anti-drop"); + private final SettingGroup sgAutoDrop = settings.createGroup("auto-drop"); + private final SettingGroup sgStealDump = settings.createGroup("steal-and-dump"); + private final SettingGroup sgAutoSteal = settings.createGroup("auto-steal"); // General private final Setting mouseDragItemMove = sgGeneral.add(new BoolSetting.Builder() .name("mouse-drag-item-move") - .description("Moving mouse over items while holding shift will transfer it to the other container.") .defaultValue(true) .build() ); private final Setting xCarry = sgGeneral.add(new BoolSetting.Builder() .name("xcarry") - .description("Allows you to store four extra item stacks in your crafting grid.") .defaultValue(true) .onChanged(v -> { if (v || !Utils.canUpdate()) return; @@ -74,14 +72,12 @@ public class InventoryTweaks extends Module { private final Setting sortingEnabled = sgSorting.add(new BoolSetting.Builder() .name("sorting-enabled") - .description("Automatically sorts stacks in inventory.") .defaultValue(true) .build() ); private final Setting sortingKey = sgSorting.add(new KeybindSetting.Builder() .name("sorting-key") - .description("Key to trigger the sort.") .visible(sortingEnabled::get) .defaultValue(Keybind.fromButton(GLFW.GLFW_MOUSE_BUTTON_MIDDLE)) .build() @@ -89,7 +85,6 @@ public class InventoryTweaks extends Module { private final Setting sortingDelay = sgSorting.add(new IntSetting.Builder() .name("sorting-delay") - .description("Delay in ticks between moving items when sorting.") .visible(sortingEnabled::get) .defaultValue(1) .min(0) @@ -98,7 +93,6 @@ public class InventoryTweaks extends Module { private final Setting disableInCreative = sgSorting.add(new BoolSetting.Builder() .name("disable-in-creative") - .description("Disables the inventory sorter when in creative mode.") .defaultValue(true) .visible(sortingEnabled::get) .build() @@ -106,7 +100,6 @@ public class InventoryTweaks extends Module { private final Setting uncapBundleScrolling = sgGeneral.add(new BoolSetting.Builder() .name("uncap-bundle-scrolling") - .description("Whether to uncap the bundle scrolling feature to let you select any item.") .defaultValue(true) .build() ); @@ -115,20 +108,17 @@ public class InventoryTweaks extends Module { private final Setting> antiDropItems = sgAntiDrop.add(new ItemListSetting.Builder() .name("anti-drop-items") - .description("Items to prevent dropping. Doesn't work in creative inventory screen.") .build() ); private final Setting antiItemFrame = sgAntiDrop.add(new BoolSetting.Builder() .name("item-frames") - .description("Prevent anti-drop items from being placed in item frames or pots") .defaultValue(true) .build() ); private final Setting antiDropOverrideBind = sgAntiDrop.add(new KeybindSetting.Builder() .name("override-bind") - .description("Hold this bind to temporarily bypass anti-drop") .build() ); @@ -136,27 +126,23 @@ public class InventoryTweaks extends Module { private final Setting> autoDropItems = sgAutoDrop.add(new ItemListSetting.Builder() .name("auto-drop-items") - .description("Items to drop.") .build() ); private final Setting autoDropExcludeEquipped = sgAutoDrop.add(new BoolSetting.Builder() .name("exclude-equipped") - .description("Whether or not to drop items equipped in armor slots.") .defaultValue(true) .build() ); private final Setting autoDropExcludeHotbar = sgAutoDrop.add(new BoolSetting.Builder() .name("exclude-hotbar") - .description("Whether or not to drop items from your hotbar.") .defaultValue(false) .build() ); private final Setting autoDropOnlyFullStacks = sgAutoDrop.add(new BoolSetting.Builder() .name("only-full-stacks") - .description("Only drops the items if the stack is full.") .defaultValue(false) .build() ); @@ -165,28 +151,24 @@ public class InventoryTweaks extends Module { public final Setting>> stealScreens = sgStealDump.add(new ScreenHandlerListSetting.Builder() .name("steal-screens") - .description("Select the screens to display buttons and auto steal.") .defaultValue(List.of(ScreenHandlerType.GENERIC_9X3, ScreenHandlerType.GENERIC_9X6)) .build() ); private final Setting buttons = sgStealDump.add(new BoolSetting.Builder() .name("inventory-buttons") - .description("Shows steal and dump buttons in container guis.") .defaultValue(true) .build() ); private final Setting stealDrop = sgStealDump.add(new BoolSetting.Builder() .name("steal-drop") - .description("Drop items to the ground instead of stealing them.") .defaultValue(false) .build() ); private final Setting dropBackwards = sgStealDump.add(new BoolSetting.Builder() .name("drop-backwards") - .description("Drop items behind you.") .defaultValue(false) .visible(stealDrop::get) .build() @@ -194,27 +176,23 @@ public class InventoryTweaks extends Module { private final Setting dumpFilter = sgStealDump.add(new EnumSetting.Builder() .name("dump-filter") - .description("Dump mode.") .defaultValue(ListMode.None) .build() ); private final Setting> dumpItems = sgStealDump.add(new ItemListSetting.Builder() .name("dump-items") - .description("Items to dump.") .build() ); private final Setting stealFilter = sgStealDump.add(new EnumSetting.Builder() .name("steal-filter") - .description("Steal mode.") .defaultValue(ListMode.None) .build() ); private final Setting> stealItems = sgStealDump.add(new ItemListSetting.Builder() .name("steal-items") - .description("Items to steal.") .build() ); @@ -222,7 +200,6 @@ public class InventoryTweaks extends Module { private final Setting autoSteal = sgAutoSteal.add(new BoolSetting.Builder() .name("auto-steal") - .description("Automatically removes all possible items when you open a container.") .defaultValue(false) .onChanged(val -> checkAutoStealSettings()) .build() @@ -230,7 +207,6 @@ public class InventoryTweaks extends Module { private final Setting autoDump = sgAutoSteal.add(new BoolSetting.Builder() .name("auto-dump") - .description("Automatically dumps all possible items when you open a container.") .defaultValue(false) .onChanged(val -> checkAutoStealSettings()) .build() @@ -238,7 +214,6 @@ public class InventoryTweaks extends Module { private final Setting autoStealDelay = sgAutoSteal.add(new IntSetting.Builder() .name("delay") - .description("The minimum delay between stealing the next stack in milliseconds.") .defaultValue(20) .sliderMax(1000) .build() @@ -246,7 +221,6 @@ public class InventoryTweaks extends Module { private final Setting autoStealInitDelay = sgAutoSteal.add(new IntSetting.Builder() .name("initial-delay") - .description("The initial delay before stealing in milliseconds. 0 to use normal delay instead.") .defaultValue(50) .sliderMax(1000) .build() @@ -254,7 +228,6 @@ public class InventoryTweaks extends Module { private final Setting autoStealRandomDelay = sgAutoSteal.add(new IntSetting.Builder() .name("random") - .description("Randomly adds a delay of up to the specified time in milliseconds.") .min(0) .sliderMax(1000) .defaultValue(50) @@ -265,7 +238,7 @@ public class InventoryTweaks extends Module { private boolean invOpened; public InventoryTweaks() { - super(Categories.Misc, "inventory-tweaks", "Various inventory related utilities."); + super(Categories.Misc, "inventory-tweaks"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/MessageAura.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/MessageAura.java index 23c795b191..2e57211dcb 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/MessageAura.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/MessageAura.java @@ -22,20 +22,18 @@ public class MessageAura extends Module { private final Setting message = sgGeneral.add(new StringSetting.Builder() .name("message") - .description("The specified message sent to the player.") .defaultValue("Meteor on Crack!") .build() ); private final Setting ignoreFriends = sgGeneral.add(new BoolSetting.Builder() .name("ignore-friends") - .description("Will not send any messages to people friended.") .defaultValue(false) .build() ); public MessageAura() { - super(Categories.Misc, "message-aura", "Sends a specified message to any player that enters render distance."); + super(Categories.Misc, "message-aura"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/Notebot.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/Notebot.java index f5a5afea78..bb3b9435d9 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/Notebot.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/Notebot.java @@ -61,12 +61,11 @@ public class Notebot extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgNoteMap = settings.createGroup("Note Map", false); - private final SettingGroup sgRender = settings.createGroup("Render", true); + private final SettingGroup sgNoteMap = settings.createGroup("note-map", false); + private final SettingGroup sgRender = settings.createGroup("render", true); public final Setting tickDelay = sgGeneral.add(new IntSetting.Builder() .name("tick-delay") - .description("The delay when loading a song.") .defaultValue(1) .sliderRange(1, 20) .min(1) @@ -75,7 +74,6 @@ public class Notebot extends Module { public final Setting concurrentTuneBlocks = sgGeneral.add(new IntSetting.Builder() .name("concurrent-tune-blocks") - .description("How many noteblocks can be tuned at the same time. On Paper it is recommended to set it to 1 to avoid bugs.") .defaultValue(1) .min(1) .sliderRange(1, 20) @@ -84,56 +82,48 @@ public class Notebot extends Module { public final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("Select mode of notebot") .defaultValue(NotebotUtils.NotebotMode.ExactInstruments) .build() ); public final Setting instrumentDetectMode = sgGeneral.add(new EnumSetting.Builder() .name("instrument-detect-mode") - .description("Select an instrument detect mode. Can be useful when server has a plugin that modifies noteblock state (e.g ItemsAdder) but noteblock can still play the right note") .defaultValue(InstrumentDetectMode.BlockState) .build() ); public final Setting polyphonic = sgGeneral.add(new BoolSetting.Builder() .name("polyphonic") - .description("Whether or not to allow multiple notes to be played at the same time") .defaultValue(true) .build() ); public final Setting autoRotate = sgGeneral.add(new BoolSetting.Builder() .name("auto-rotate") - .description("Should client look at note block when it wants to hit it") .defaultValue(true) .build() ); public final Setting autoPlay = sgGeneral.add(new BoolSetting.Builder() .name("auto-play") - .description("Auto plays random songs") .defaultValue(false) .build() ); public final Setting roundOutOfRange = sgGeneral.add(new BoolSetting.Builder() .name("round-out-of-range") - .description("Rounds out of range notes") .defaultValue(false) .build() ); public final Setting swingArm = sgGeneral.add(new BoolSetting.Builder() .name("swing-arm") - .description("Should swing arm on hit") .defaultValue(true) .build() ); public final Setting checkNoteblocksAgainDelay = sgGeneral.add(new IntSetting.Builder() .name("check-noteblocks-again-delay") - .description("How much delay should be between end of tuning and checking again") .defaultValue(10) .min(1) .sliderRange(1, 20) @@ -142,84 +132,72 @@ public class Notebot extends Module { public final Setting renderText = sgRender.add(new BoolSetting.Builder() .name("render-text") - .description("Whether or not to render the text above noteblocks.") .defaultValue(true) .build() ); public final Setting renderBoxes = sgRender.add(new BoolSetting.Builder() .name("render-boxes") - .description("Whether or not to render the outline around the noteblocks.") .defaultValue(true) .build() ); public final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); public final Setting untunedSideColor = sgRender.add(new ColorSetting.Builder() .name("untuned-side-color") - .description("The color of the sides of the untuned blocks being rendered.") .defaultValue(new SettingColor(204, 0, 0, 10)) .build() ); public final Setting untunedLineColor = sgRender.add(new ColorSetting.Builder() .name("untuned-line-color") - .description("The color of the lines of the untuned blocks being rendered.") .defaultValue(new SettingColor(204, 0, 0, 255)) .build() ); public final Setting tunedSideColor = sgRender.add(new ColorSetting.Builder() .name("tuned-side-color") - .description("The color of the sides of the tuned blocks being rendered.") .defaultValue(new SettingColor(0, 204, 0, 10)) .build() ); public final Setting tunedLineColor = sgRender.add(new ColorSetting.Builder() .name("tuned-line-color") - .description("The color of the lines of the tuned blocks being rendered.") .defaultValue(new SettingColor(0, 204, 0, 255)) .build() ); public final Setting tuneHitSideColor = sgRender.add(new ColorSetting.Builder() .name("hit-side-color") - .description("The color of the sides being rendered on noteblock tune hit.") .defaultValue(new SettingColor(255, 153, 0, 10)) .build() ); private final Setting tuneHitLineColor = sgRender.add(new ColorSetting.Builder() .name("hit-line-color") - .description("The color of the lines being rendered on noteblock tune hit.") .defaultValue(new SettingColor(255, 153, 0, 255)) .build() ); public final Setting scannedNoteblockSideColor = sgRender.add(new ColorSetting.Builder() .name("scanned-noteblock-side-color") - .description("The color of the sides of the scanned noteblocks being rendered.") .defaultValue(new SettingColor(255, 255, 0, 30)) .build() ); private final Setting scannedNoteblockLineColor = sgRender.add(new ColorSetting.Builder() .name("scanned-noteblock-line-color") - .description("The color of the lines of the scanned noteblocks being rendered.") .defaultValue(new SettingColor(255, 255, 0, 255)) .build() ); public final Setting noteTextScale = sgRender.add(new DoubleSetting.Builder() .name("note-text-scale") - .description("The scale.") .defaultValue(1.5) .min(0) .build() @@ -227,7 +205,6 @@ public class Notebot extends Module { public final Setting showScannedNoteblocks = sgRender.add(new BoolSetting.Builder() .name("show-scanned-noteblocks") - .description("Show scanned Noteblocks") .defaultValue(false) .build() ); @@ -252,7 +229,7 @@ public class Notebot extends Module { public Notebot() { - super(Categories.Misc, "notebot", "Plays noteblock nicely"); + super(Categories.Misc, "notebot"); for (NoteBlockInstrument inst : NoteBlockInstrument.values()) { NotebotUtils.OptionalInstrument optionalInstrument = NotebotUtils.OptionalInstrument.fromMinecraftInstrument(inst); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/Notifier.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/Notifier.java index aee4004eef..a5dcf327c1 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/Notifier.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/Notifier.java @@ -43,23 +43,21 @@ import static meteordevelopment.meteorclient.utils.player.ChatUtils.formatCoords; public class Notifier extends Module { - private final SettingGroup sgTotemPops = settings.createGroup("Totem Pops"); - private final SettingGroup sgVisualRange = settings.createGroup("Visual Range"); - private final SettingGroup sgPearl = settings.createGroup("Pearl"); - private final SettingGroup sgJoinsLeaves = settings.createGroup("Joins/Leaves"); + private final SettingGroup sgTotemPops = settings.createGroup("totem-pops"); + private final SettingGroup sgVisualRange = settings.createGroup("visual-range"); + private final SettingGroup sgPearl = settings.createGroup("pearl"); + private final SettingGroup sgJoinsLeaves = settings.createGroup("joins/leaves"); // Totem Pops private final Setting totemPops = sgTotemPops.add(new BoolSetting.Builder() .name("totem-pops") - .description("Notifies you when a player pops a totem.") .defaultValue(true) .build() ); private final Setting totemsDistanceCheck = sgTotemPops.add(new BoolSetting.Builder() .name("distance-check") - .description("Limits the distance in which the pops are recognized.") .defaultValue(false) .visible(totemPops::get) .build() @@ -67,7 +65,6 @@ public class Notifier extends Module { private final Setting totemsDistance = sgTotemPops.add(new IntSetting.Builder() .name("player-radius") - .description("The radius in which to log totem pops.") .defaultValue(30) .sliderRange(1, 50) .range(1, 100) @@ -77,21 +74,18 @@ public class Notifier extends Module { private final Setting totemsIgnoreOwn = sgTotemPops.add(new BoolSetting.Builder() .name("ignore-own") - .description("Ignores your own totem pops.") .defaultValue(false) .build() ); private final Setting totemsIgnoreFriends = sgTotemPops.add(new BoolSetting.Builder() .name("ignore-friends") - .description("Ignores friends totem pops.") .defaultValue(false) .build() ); private final Setting totemsIgnoreOthers = sgTotemPops.add(new BoolSetting.Builder() .name("ignore-others") - .description("Ignores other players totem pops.") .defaultValue(false) .build() ); @@ -100,42 +94,36 @@ public class Notifier extends Module { private final Setting visualRange = sgVisualRange.add(new BoolSetting.Builder() .name("visual-range") - .description("Notifies you when an entity enters your render distance.") .defaultValue(false) .build() ); private final Setting event = sgVisualRange.add(new EnumSetting.Builder() .name("event") - .description("When to log the entities.") .defaultValue(Event.Both) .build() ); private final Setting>> entities = sgVisualRange.add(new EntityTypeListSetting.Builder() .name("entities") - .description("Which entities to notify about.") .defaultValue(EntityType.PLAYER) .build() ); private final Setting visualRangeIgnoreFriends = sgVisualRange.add(new BoolSetting.Builder() .name("ignore-friends") - .description("Ignores friends.") .defaultValue(true) .build() ); private final Setting visualRangeIgnoreFakes = sgVisualRange.add(new BoolSetting.Builder() .name("ignore-fake-players") - .description("Ignores fake players.") .defaultValue(true) .build() ); private final Setting visualMakeSound = sgVisualRange.add(new BoolSetting.Builder() .name("sound") - .description("Emits a sound effect on enter / leave") .defaultValue(true) .build() ); @@ -144,21 +132,18 @@ public class Notifier extends Module { private final Setting pearl = sgPearl.add(new BoolSetting.Builder() .name("pearl") - .description("Notifies you when a player is teleported using an ender pearl.") .defaultValue(true) .build() ); private final Setting pearlIgnoreOwn = sgPearl.add(new BoolSetting.Builder() .name("ignore-own") - .description("Ignores your own pearls.") .defaultValue(false) .build() ); private final Setting pearlIgnoreFriends = sgPearl.add(new BoolSetting.Builder() .name("ignore-friends") - .description("Ignores friends pearls.") .defaultValue(false) .build() ); @@ -167,14 +152,12 @@ public class Notifier extends Module { private final Setting joinsLeavesMode = sgJoinsLeaves.add(new EnumSetting.Builder() .name("player-joins-leaves") - .description("How to handle player join/leave notifications.") .defaultValue(JoinLeaveModes.None) .build() ); private final Setting notificationDelay = sgJoinsLeaves.add(new IntSetting.Builder() .name("notification-delay") - .description("How long to wait in ticks before posting the next join/leave notification in your chat.") .range(0, 1000) .sliderRange(0, 100) .defaultValue(0) @@ -183,7 +166,6 @@ public class Notifier extends Module { private final Setting simpleNotifications = sgJoinsLeaves.add(new BoolSetting.Builder() .name("simple-notifications") - .description("Display join/leave notifications without a prefix, to reduce chat clutter.") .defaultValue(true) .build() ); @@ -198,7 +180,7 @@ public class Notifier extends Module { private final Random random = new Random(); public Notifier() { - super(Categories.Misc, "notifier", "Notifies you of different events."); + super(Categories.Misc, "notifier"); } // Visual Range diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/PacketCanceller.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/PacketCanceller.java index ba7a2c1f15..7f84cd8321 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/PacketCanceller.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/PacketCanceller.java @@ -23,20 +23,18 @@ public class PacketCanceller extends Module { private final Setting>>> s2cPackets = sgGeneral.add(new PacketListSetting.Builder() .name("S2C-packets") - .description("Server-to-client packets to cancel.") .filter(aClass -> PacketUtils.getS2CPackets().contains(aClass)) .build() ); private final Setting>>> c2sPackets = sgGeneral.add(new PacketListSetting.Builder() .name("C2S-packets") - .description("Client-to-server packets to cancel.") .filter(aClass -> PacketUtils.getC2SPackets().contains(aClass)) .build() ); public PacketCanceller() { - super(Categories.Misc, "packet-canceller", "Allows you to cancel certain packets."); + super(Categories.Misc, "packet-canceller"); runInMainMenu = true; } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/ServerSpoof.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/ServerSpoof.java index c4000b203e..0ef69798c5 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/ServerSpoof.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/ServerSpoof.java @@ -36,14 +36,12 @@ public class ServerSpoof extends Module { private final Setting spoofBrand = sgGeneral.add(new BoolSetting.Builder() .name("spoof-brand") - .description("Whether or not to spoof the brand.") .defaultValue(true) .build() ); private final Setting brand = sgGeneral.add(new StringSetting.Builder() .name("brand") - .description("Specify the brand that will be send to the server.") .defaultValue("vanilla") .visible(spoofBrand::get) .build() @@ -51,21 +49,18 @@ public class ServerSpoof extends Module { private final Setting resourcePack = sgGeneral.add(new BoolSetting.Builder() .name("resource-pack") - .description("Spoof accepting server resource pack.") .defaultValue(false) .build() ); private final Setting blockChannels = sgGeneral.add(new BoolSetting.Builder() .name("block-channels") - .description("Whether or not to block some channels.") .defaultValue(true) .build() ); private final Setting> channels = sgGeneral.add(new StringListSetting.Builder() .name("channels") - .description("If the channel contains the keyword, this outgoing channel will be blocked.") .defaultValue("fabric", "minecraft:register") .visible(blockChannels::get) .build() @@ -75,7 +70,7 @@ public class ServerSpoof extends Module { public boolean silentAcceptResourcePack = false; public ServerSpoof() { - super(Categories.Misc, "server-spoof", "Spoof client brand, resource pack and channels."); + super(Categories.Misc, "server-spoof"); runInMainMenu = true; } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/SoundBlocker.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/SoundBlocker.java index 7b2ff09a72..1a0c636f20 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/SoundBlocker.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/SoundBlocker.java @@ -23,12 +23,11 @@ public class SoundBlocker extends Module { private final Setting> sounds = sgGeneral.add(new SoundEventListSetting.Builder() .name("sounds") - .description("Sounds to block.") .build() ); public SoundBlocker() { - super(Categories.Misc, "sound-blocker", "Cancels out selected sounds."); + super(Categories.Misc, "sound-blocker"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/Spam.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/Spam.java index 5315c3e448..c27dee6643 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/Spam.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/Spam.java @@ -24,14 +24,12 @@ public class Spam extends Module { private final Setting> messages = sgGeneral.add(new StringListSetting.Builder() .name("messages") - .description("Messages to use for spam.") .defaultValue(List.of("Meteor on Crack!")) .build() ); private final Setting delay = sgGeneral.add(new IntSetting.Builder() .name("delay") - .description("The delay between specified messages in ticks.") .defaultValue(20) .min(0) .sliderMax(200) @@ -40,35 +38,30 @@ public class Spam extends Module { private final Setting disableOnLeave = sgGeneral.add(new BoolSetting.Builder() .name("disable-on-leave") - .description("Disables spam when you leave a server.") .defaultValue(true) .build() ); private final Setting disableOnDisconnect = sgGeneral.add(new BoolSetting.Builder() .name("disable-on-disconnect") - .description("Disables spam when you are disconnected from a server.") .defaultValue(true) .build() ); private final Setting random = sgGeneral.add(new BoolSetting.Builder() .name("randomise") - .description("Selects a random message from your spam message list.") .defaultValue(false) .build() ); private final Setting autoSplitMessages = sgGeneral.add(new BoolSetting.Builder() .name("auto-split-messages") - .description("Automatically split up large messages after a certain length") .defaultValue(false) .build() ); private final Setting splitLength = sgGeneral.add(new IntSetting.Builder() .name("split-length") - .description("The length after which to split messages in chat") .visible(autoSplitMessages::get) .defaultValue(256) .min(1) @@ -78,7 +71,6 @@ public class Spam extends Module { private final Setting autoSplitDelay = sgGeneral.add(new IntSetting.Builder() .name("split-delay") - .description("The delay between split messages in ticks.") .visible(autoSplitMessages::get) .defaultValue(20) .min(0) @@ -88,14 +80,12 @@ public class Spam extends Module { private final Setting bypass = sgGeneral.add(new BoolSetting.Builder() .name("bypass") - .description("Add random text at the end of the message to try to bypass anti spams.") .defaultValue(false) .build() ); private final Setting uppercase = sgGeneral.add(new BoolSetting.Builder() .name("include-uppercase-characters") - .description("Whether the bypass text should include uppercase characters.") .visible(bypass::get) .defaultValue(true) .build() @@ -103,7 +93,6 @@ public class Spam extends Module { private final Setting length = sgGeneral.add(new IntSetting.Builder() .name("length") - .description("Number of characters used to bypass anti spam.") .visible(bypass::get) .defaultValue(16) .sliderRange(1, 256) @@ -114,7 +103,7 @@ public class Spam extends Module { private String text; public Spam() { - super(Categories.Misc, "spam", "Spams specified messages in chat."); + super(Categories.Misc, "spam"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/swarm/Swarm.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/swarm/Swarm.java index ce046432e4..43338c84a5 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/swarm/Swarm.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/swarm/Swarm.java @@ -24,14 +24,12 @@ public class Swarm extends Module { public final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("What type of client to run.") .defaultValue(Mode.Host) .build() ); private final Setting ipAddress = sgGeneral.add(new StringSetting.Builder() .name("ip") - .description("The IP address of the host server.") .defaultValue("localhost") .visible(() -> mode.get() == Mode.Worker) .build() @@ -39,7 +37,6 @@ public class Swarm extends Module { private final Setting serverPort = sgGeneral.add(new IntSetting.Builder() .name("port") - .description("The port used for connections.") .defaultValue(6969) .range(1, 65535) .noSlider() @@ -50,7 +47,7 @@ public class Swarm extends Module { public SwarmWorker worker; public Swarm() { - super(Categories.Misc, "swarm", "Allows you to control multiple instances of Meteor from one central host."); + super(Categories.Misc, "swarm"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/AirJump.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/AirJump.java index a078d0323f..a80be53858 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/AirJump.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/AirJump.java @@ -22,7 +22,6 @@ public class AirJump extends Module { private final Setting maintainLevel = sgGeneral.add(new BoolSetting.Builder() .name("maintain-level") - .description("Maintains your current Y level when holding the jump key.") .defaultValue(false) .build() ); @@ -30,7 +29,7 @@ public class AirJump extends Module { private int level; public AirJump() { - super(Categories.Movement, "air-jump", "Lets you jump in the air."); + super(Categories.Movement, "air-jump"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Anchor.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Anchor.java index 4005727fae..e717392f4b 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Anchor.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Anchor.java @@ -22,7 +22,6 @@ public class Anchor extends Module { private final Setting maxHeight = sgGeneral.add(new IntSetting.Builder() .name("max-height") - .description("The maximum height Anchor will work at.") .defaultValue(10) .range(0, 255) .sliderMax(20) @@ -31,7 +30,6 @@ public class Anchor extends Module { private final Setting minPitch = sgGeneral.add(new IntSetting.Builder() .name("min-pitch") - .description("The minimum pitch at which anchor will work.") .defaultValue(0) .range(-90, 90) .sliderRange(-90, 90) @@ -40,21 +38,18 @@ public class Anchor extends Module { private final Setting cancelMove = sgGeneral.add(new BoolSetting.Builder() .name("cancel-jump-in-hole") - .description("Prevents you from jumping when Anchor is active and Min Pitch is met.") .defaultValue(false) .build() ); private final Setting pull = sgGeneral.add(new BoolSetting.Builder() .name("pull") - .description("The pull strength of Anchor.") .defaultValue(false) .build() ); private final Setting pullSpeed = sgGeneral.add(new DoubleSetting.Builder() .name("pull-speed") - .description("How fast to pull towards the hole in blocks per second.") .defaultValue(0.3) .min(0) .sliderMax(5) @@ -72,7 +67,7 @@ public class Anchor extends Module { public double deltaX, deltaZ; public Anchor() { - super(Categories.Movement, "anchor", "Helps you get into holes by stopping your movement completely over a hole."); + super(Categories.Movement, "anchor"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/AntiVoid.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/AntiVoid.java index 6a697bdb25..5a1023e08c 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/AntiVoid.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/AntiVoid.java @@ -20,7 +20,6 @@ public class AntiVoid extends Module { private final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("The method to prevent you from falling into the void.") .defaultValue(Mode.Jump) .onChanged(a -> onActivate()) .build() @@ -29,7 +28,7 @@ public class AntiVoid extends Module { private boolean wasFlightEnabled, hasRun; public AntiVoid() { - super(Categories.Movement, "anti-void", "Attempts to prevent you from falling into the void."); + super(Categories.Movement, "anti-void"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/AutoJump.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/AutoJump.java index 3277d74f90..1e12312268 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/AutoJump.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/AutoJump.java @@ -20,21 +20,18 @@ public class AutoJump extends Module { private final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("The method of jumping.") .defaultValue(Mode.Jump) .build() ); private final Setting jumpIf = sgGeneral.add(new EnumSetting.Builder() .name("jump-if") - .description("Jump if.") .defaultValue(JumpWhen.Always) .build() ); private final Setting velocityHeight = sgGeneral.add(new DoubleSetting.Builder() .name("velocity-height") - .description("The distance that velocity mode moves you.") .defaultValue(0.25) .min(0) .sliderMax(2) @@ -42,7 +39,7 @@ public class AutoJump extends Module { ); public AutoJump() { - super(Categories.Movement, "auto-jump", "Automatically jumps."); + super(Categories.Movement, "auto-jump"); } private boolean jump() { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/AutoWalk.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/AutoWalk.java index aa839a3795..d820efb792 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/AutoWalk.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/AutoWalk.java @@ -31,7 +31,6 @@ public class AutoWalk extends Module { private final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("Walking mode.") .defaultValue(Mode.Smart) .onChanged(mode1 -> { if (isActive() && Utils.canUpdate()) { @@ -49,7 +48,6 @@ public class AutoWalk extends Module { private final Setting direction = sgGeneral.add(new EnumSetting.Builder() .name("simple-direction") - .description("The direction to walk in simple mode.") .defaultValue(Direction.Forwards) .onChanged(direction1 -> { if (isActive()) unpress(); @@ -60,14 +58,12 @@ public class AutoWalk extends Module { private final Setting disableOnInput = sgGeneral.add(new BoolSetting.Builder() .name("disable-on-input") - .description("Disable module on manual movement input") .defaultValue(false) .build() ); private final Setting disableOnY = sgGeneral.add(new BoolSetting.Builder() .name("disable-on-y-change") - .description("Disable module if player moves vertically") .defaultValue(false) .visible(() -> mode.get() == Mode.Simple) .build() @@ -75,14 +71,13 @@ public class AutoWalk extends Module { private final Setting waitForChunks = sgGeneral.add(new BoolSetting.Builder() .name("no-unloaded-chunks") - .description("Do not allow movement into unloaded chunks") .defaultValue(true) .visible(() -> mode.get() == Mode.Simple) .build() ); public AutoWalk() { - super(Categories.Movement, "auto-walk", "Automatically walks forward."); + super(Categories.Movement, "auto-walk"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/AutoWasp.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/AutoWasp.java index 34921e0a4b..5a4f7cc852 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/AutoWasp.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/AutoWasp.java @@ -34,49 +34,42 @@ public class AutoWasp extends Module { private final Setting horizontalSpeed = sgGeneral.add(new DoubleSetting.Builder() .name("horizontal-speed") - .description("Horizontal elytra speed.") .defaultValue(2.0) .build() ); private final Setting verticalSpeed = sgGeneral.add(new DoubleSetting.Builder() .name("vertical-speed") - .description("Vertical elytra speed.") .defaultValue(3.0) .build() ); private final Setting avoidLanding = sgGeneral.add(new BoolSetting.Builder() .name("avoid-landing") - .description("Will try to avoid landing if your target is on the ground.") .defaultValue(true) .build() ); private final Setting predictMovement = sgGeneral.add(new BoolSetting.Builder() .name("predict-movement") - .description("Tries to predict the targets position according to their movement.") .defaultValue(true) .build() ); private final Setting onlyFriends = sgGeneral.add(new BoolSetting.Builder() .name("only-friends") - .description("Will only follow friends.") .defaultValue(false) .build() ); private final Setting action = sgGeneral.add(new EnumSetting.Builder() .name("action-on-target-loss") - .description("What to do if you lose the target.") .defaultValue(Action.TOGGLE) .build() ); private final Setting offset = sgGeneral.add(new Vector3dSetting.Builder() .name("offset") - .description("How many blocks offset to wasp at from the target.") .defaultValue(0, 0, 0) .build() ); @@ -86,7 +79,7 @@ public class AutoWasp extends Module { private boolean incrementJumpTimer = false; public AutoWasp() { - super(Categories.Movement, "auto-wasp", "Wasps for you. Unable to traverse around blocks, assumes a clear straight line to the target."); + super(Categories.Movement, "auto-wasp"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Blink.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Blink.java index 91e529faaf..809568f23b 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Blink.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Blink.java @@ -28,14 +28,12 @@ public class Blink extends Module { private final Setting renderOriginal = sgGeneral.add(new BoolSetting.Builder() .name("render-original") - .description("Renders your player model at the original position.") .defaultValue(true) .build() ); private final Setting delay = sgGeneral.add(new IntSetting.Builder() .name("pulse-delay") - .description("After the duration in ticks has elapsed, send all packets and start blinking again. 0 to disable.") .defaultValue(0) .min(0) .sliderMax(60) @@ -45,7 +43,6 @@ public class Blink extends Module { @SuppressWarnings("unused") private final Setting cancelBlink = sgGeneral.add(new KeybindSetting.Builder() .name("cancel-blink") - .description("Cancels sending packets and sends you back to your original position.") .defaultValue(Keybind.none()) .action(() -> { cancelled = true; @@ -62,7 +59,7 @@ public class Blink extends Module { private int timer = 0; public Blink() { - super(Categories.Movement, "blink", "Allows you to essentially teleport while suspending motion updates."); + super(Categories.Movement, "blink"); runInMainMenu = true; } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/ClickTP.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/ClickTP.java index efd47f775b..fc6bdd5a18 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/ClickTP.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/ClickTP.java @@ -28,7 +28,7 @@ public class ClickTP extends Module { public ClickTP() { - super(Categories.Movement, "click-tp", "Teleports you to the block you click on."); + super(Categories.Movement, "click-tp"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/ElytraBoost.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/ElytraBoost.java index 4f3a123210..1766e9ee0e 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/ElytraBoost.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/ElytraBoost.java @@ -32,14 +32,12 @@ public class ElytraBoost extends Module { private final Setting dontConsumeFirework = sgGeneral.add(new BoolSetting.Builder() .name("anti-consume") - .description("Prevents fireworks from being consumed when using Elytra Boost.") .defaultValue(true) .build() ); private final Setting fireworkLevel = sgGeneral.add(new IntSetting.Builder() .name("firework-duration") - .description("The duration of the firework.") .defaultValue(0) .range(0, 255) .sliderMax(255) @@ -48,7 +46,6 @@ public class ElytraBoost extends Module { private final Setting playSound = sgGeneral.add(new BoolSetting.Builder() .name("play-sound") - .description("Plays the firework sound when a boost is triggered.") .defaultValue(true) .build() ); @@ -56,7 +53,6 @@ public class ElytraBoost extends Module { @SuppressWarnings("unused") private final Setting keybind = sgGeneral.add(new KeybindSetting.Builder() .name("keybind") - .description("The keybind to boost.") .action(this::boost) .build() ); @@ -64,7 +60,7 @@ public class ElytraBoost extends Module { private final List fireworks = new ArrayList<>(); public ElytraBoost() { - super(Categories.Movement, "elytra-boost", "Boosts your elytra as if you used a firework."); + super(Categories.Movement, "elytra-boost"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/EntityControl.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/EntityControl.java index 61b40e941d..e9daec0fb1 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/EntityControl.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/EntityControl.java @@ -29,9 +29,9 @@ import java.util.Set; public class EntityControl extends Module { - private final SettingGroup sgControl = settings.createGroup("Control"); - private final SettingGroup sgSpeed = settings.createGroup("Speed"); - private final SettingGroup sgFlight = settings.createGroup("Flight"); + private final SettingGroup sgControl = settings.createGroup("control"); + private final SettingGroup sgSpeed = settings.createGroup("speed"); + private final SettingGroup sgFlight = settings.createGroup("flight"); List> list = new ArrayList<>(); { @@ -44,7 +44,6 @@ public class EntityControl extends Module { private final Setting>> entities = sgControl.add(new EntityTypeListSetting.Builder() .name("entities") - .description("Target entities.") .filter(entityType -> EntityUtils.isRideable(entityType) && entityType != EntityType.MINECART && entityType != EntityType.LLAMA && entityType != EntityType.TRADER_LLAMA) .defaultValue(list.toArray(new EntityType[0])) .build() @@ -52,42 +51,36 @@ public class EntityControl extends Module { private final Setting spoofSaddle = sgControl.add(new BoolSetting.Builder() .name("spoof-saddle*") - .description("Lets you control rideable entities without them being saddled. Only works on older server versions.") .defaultValue(false) .build() ); private final Setting maxJump = sgControl.add(new BoolSetting.Builder() .name("max-jump") - .description("Sets jump power to maximum.") .defaultValue(true) .build() ); public final Setting lockYaw = sgControl.add(new BoolSetting.Builder() .name("lock-yaw") - .description("Locks the Entity's yaw.") .defaultValue(true) .build() ); private final Setting cancelServerPackets = sgControl.add(new BoolSetting.Builder() .name("cancel-server-packets") - .description("Cancels incoming vehicle move packets. WILL desync you from the server if you make an invalid movement.") .defaultValue(false) .build() ); private final Setting speed = sgSpeed.add(new BoolSetting.Builder() .name("speed") - .description("Makes you go faster horizontally when riding entities.") .defaultValue(false) .build() ); private final Setting horizontalSpeed = sgSpeed.add(new DoubleSetting.Builder() .name("horizontal-speed") - .description("Horizontal speed in blocks per second.") .defaultValue(10) .min(0) .sliderMax(50) @@ -97,7 +90,6 @@ public class EntityControl extends Module { private final Setting onlyOnGround = sgSpeed.add(new BoolSetting.Builder() .name("only-on-ground") - .description("Use speed only when standing on a block.") .defaultValue(false) .visible(speed::get) .build() @@ -105,7 +97,6 @@ public class EntityControl extends Module { private final Setting inWater = sgSpeed.add(new BoolSetting.Builder() .name("in-water") - .description("Use speed when in water.") .defaultValue(true) .visible(speed::get) .build() @@ -113,14 +104,12 @@ public class EntityControl extends Module { private final Setting flight = sgFlight.add(new BoolSetting.Builder() .name("fly") - .description("Allows you to fly with entities.") .defaultValue(false) .build() ); private final Setting verticalSpeed = sgFlight.add(new DoubleSetting.Builder() .name("vertical-speed") - .description("Vertical speed in blocks per second.") .defaultValue(6) .min(0) .sliderMax(20) @@ -130,7 +119,6 @@ public class EntityControl extends Module { private final Setting fallSpeed = sgFlight.add(new DoubleSetting.Builder() .name("fall-speed") - .description("How fast you will fall in blocks per second. Set to a small value to prevent fly kicks.") .defaultValue(0) .min(0) .visible(flight::get) @@ -139,7 +127,6 @@ public class EntityControl extends Module { private final Setting antiKick = sgFlight.add(new BoolSetting.Builder() .name("anti-fly-kick") - .description("Whether to prevent the server from kicking you for flying.") .defaultValue(true) .visible(flight::get) .build() @@ -147,7 +134,6 @@ public class EntityControl extends Module { private final Setting delay = sgFlight.add(new IntSetting.Builder() .name("delay") - .description("The amount of delay, in ticks, between flying down a bit and return to original position") .defaultValue(40) .min(1) .sliderMax(80) @@ -156,7 +142,7 @@ public class EntityControl extends Module { ); public EntityControl() { - super(Categories.Movement, "entity-control", "Lets you control rideable entities without a saddle.", "entity-speed", "entity-fly", "boat-fly"); + super(Categories.Movement, "entity-control", "entity-speed", "entity-fly", "boat-fly"); } private int delayLeft; diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/FastClimb.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/FastClimb.java index 21a119b661..edf55b1e98 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/FastClimb.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/FastClimb.java @@ -25,14 +25,12 @@ public class FastClimb extends Module { private final Setting timerMode = sgGeneral.add(new BoolSetting.Builder() .name("timer-mode") - .description("Use timer.") .defaultValue(false) .build() ); private final Setting speed = sgGeneral.add(new DoubleSetting.Builder() .name("climb-speed") - .description("Your climb speed.") .defaultValue(0.2872) .min(0.0) .visible(() -> !timerMode.get()) @@ -41,7 +39,6 @@ public class FastClimb extends Module { private final Setting timer = sgGeneral.add(new DoubleSetting.Builder() .name("timer") - .description("The timer value for Timer.") .defaultValue(1.436) .min(1) .sliderMin(1) @@ -52,7 +49,7 @@ public class FastClimb extends Module { private boolean resetTimer; public FastClimb() { - super(Categories.Movement, "fast-climb", "Allows you to climb faster."); + super(Categories.Movement, "fast-climb"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Flight.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Flight.java index dc52cfae3b..57aa20b4e4 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Flight.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Flight.java @@ -22,11 +22,10 @@ public class Flight extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgAntiKick = settings.createGroup("Anti Kick"); //Pog + private final SettingGroup sgAntiKick = settings.createGroup("anti-kick"); //Pog private final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("The mode for Flight.") .defaultValue(Mode.Abilities) .onChanged(mode -> { if (!isActive() || !Utils.canUpdate()) return; @@ -37,7 +36,6 @@ public class Flight extends Module { private final Setting speed = sgGeneral.add(new DoubleSetting.Builder() .name("speed") - .description("Your speed when flying.") .defaultValue(0.1) .min(0.0) .build() @@ -45,14 +43,12 @@ public class Flight extends Module { private final Setting verticalSpeedMatch = sgGeneral.add(new BoolSetting.Builder() .name("vertical-speed-match") - .description("Matches your vertical speed to your horizontal speed, otherwise uses vanilla ratio.") .defaultValue(false) .build() ); private final Setting noSneak = sgGeneral.add(new BoolSetting.Builder() .name("no-sneak") - .description("Prevents you from sneaking while flying.") .defaultValue(false) .visible(() -> mode.get() == Mode.Velocity) .build() @@ -60,14 +56,12 @@ public class Flight extends Module { private final Setting antiKickMode = sgAntiKick.add(new EnumSetting.Builder() .name("mode") - .description("The mode for anti kick.") .defaultValue(AntiKickMode.Packet) .build() ); private final Setting delay = sgAntiKick.add(new IntSetting.Builder() .name("delay") - .description("The amount of delay, in ticks, between flying down a bit and return to original position") .defaultValue(20) .min(1) .sliderMax(200) @@ -77,7 +71,6 @@ public class Flight extends Module { // Anti Kick private final Setting offTime = sgAntiKick.add(new IntSetting.Builder() .name("off-time") - .description("The amount of delay, in ticks, to fly down a bit to reset floating ticks.") .defaultValue(1) .min(1) .sliderRange(1, 20) @@ -91,7 +84,7 @@ public class Flight extends Module { private double lastPacketY = Double.MAX_VALUE; public Flight() { - super(Categories.Movement, "flight", "FLYYYY! No Fall is recommended with this module."); + super(Categories.Movement, "flight"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/GUIMove.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/GUIMove.java index 4ee40cb9f9..c6b98ccdb7 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/GUIMove.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/GUIMove.java @@ -37,14 +37,12 @@ public enum Screens { private final Setting screens = sgGeneral.add(new EnumSetting.Builder() .name("guis") - .description("Which GUIs to move in.") .defaultValue(Screens.Inventory) .build() ); public final Setting jump = sgGeneral.add(new BoolSetting.Builder() .name("jump") - .description("Allows you to jump while in GUIs.") .defaultValue(true) .onChanged(aBoolean -> { if (isActive() && !aBoolean) mc.options.jumpKey.setPressed(false); @@ -54,7 +52,6 @@ public enum Screens { public final Setting sneak = sgGeneral.add(new BoolSetting.Builder() .name("sneak") - .description("Allows you to sneak while in GUIs.") .defaultValue(true) .onChanged(aBoolean -> { if (isActive() && !aBoolean) mc.options.sneakKey.setPressed(false); @@ -64,7 +61,6 @@ public enum Screens { public final Setting sprint = sgGeneral.add(new BoolSetting.Builder() .name("sprint") - .description("Allows you to sprint while in GUIs.") .defaultValue(true) .onChanged(aBoolean -> { if (isActive() && !aBoolean) mc.options.sprintKey.setPressed(false); @@ -74,21 +70,19 @@ public enum Screens { private final Setting arrowsRotate = sgGeneral.add(new BoolSetting.Builder() .name("arrows-rotate") - .description("Allows you to use your arrow keys to rotate while in GUIs.") .defaultValue(true) .build() ); private final Setting rotateSpeed = sgGeneral.add(new DoubleSetting.Builder() .name("rotate-speed") - .description("Rotation speed while in GUIs.") .defaultValue(4) .min(0) .build() ); public GUIMove() { - super(Categories.Movement, "gui-move", "Allows you to perform various actions while in GUIs."); + super(Categories.Movement, "gui-move"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/HighJump.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/HighJump.java index a56b858c7e..6462f2bee2 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/HighJump.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/HighJump.java @@ -18,14 +18,13 @@ public class HighJump extends Module { private final Setting multiplier = sgGeneral.add(new DoubleSetting.Builder() .name("jump-multiplier") - .description("Jump height multiplier.") .defaultValue(1) .min(0) .build() ); public HighJump() { - super(Categories.Movement, "high-jump", "Makes you jump higher than normal."); + super(Categories.Movement, "high-jump"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Jesus.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Jesus.java index 84118b1dde..52b8126588 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Jesus.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Jesus.java @@ -43,15 +43,14 @@ import java.util.stream.Collectors; public class Jesus extends Module { - private final SettingGroup sgGeneral = settings.createGroup("General"); - private final SettingGroup sgWater = settings.createGroup("Water"); - private final SettingGroup sgLava = settings.createGroup("Lava"); + private final SettingGroup sgGeneral = settings.createGroup("general"); + private final SettingGroup sgWater = settings.createGroup("water"); + private final SettingGroup sgLava = settings.createGroup("lava"); // General private final Setting powderSnow = sgGeneral.add(new BoolSetting.Builder() .name("powder-snow") - .description("Walk on powder snow.") .defaultValue(true) .build() ); @@ -60,14 +59,12 @@ public class Jesus extends Module { private final Setting waterMode = sgWater.add(new EnumSetting.Builder() .name("mode") - .description("How to treat the water.") .defaultValue(Mode.Solid) .build() ); private final Setting dipIfBurning = sgWater.add(new BoolSetting.Builder() .name("dip-if-burning") - .description("Lets you go into the water when you are burning.") .defaultValue(true) .visible(() -> waterMode.get() == Mode.Solid) .build() @@ -75,7 +72,6 @@ public class Jesus extends Module { private final Setting dipOnSneakWater = sgWater.add(new BoolSetting.Builder() .name("dip-on-sneak") - .description("Lets you go into the water when your sneak key is held.") .defaultValue(true) .visible(() -> waterMode.get() == Mode.Solid) .build() @@ -83,7 +79,6 @@ public class Jesus extends Module { private final Setting dipOnFallWater = sgWater.add(new BoolSetting.Builder() .name("dip-on-fall") - .description("Lets you go into the water when you fall over a certain height.") .defaultValue(true) .visible(() -> waterMode.get() == Mode.Solid) .build() @@ -91,7 +86,6 @@ public class Jesus extends Module { private final Setting dipFallHeightWater = sgWater.add(new IntSetting.Builder() .name("dip-fall-height") - .description("The fall height at which you will go into the water.") .defaultValue(4) .range(1, 255) .sliderRange(3, 20) @@ -103,14 +97,12 @@ public class Jesus extends Module { private final Setting lavaMode = sgLava.add(new EnumSetting.Builder() .name("mode") - .description("How to treat the lava.") .defaultValue(Mode.Solid) .build() ); private final Setting dipIfFireResistant = sgLava.add(new BoolSetting.Builder() .name("dip-if-resistant") - .description("Lets you go into the lava if you have Fire Resistance effect.") .defaultValue(true) .visible(() -> lavaMode.get() == Mode.Solid) .build() @@ -118,7 +110,6 @@ public class Jesus extends Module { private final Setting dipOnSneakLava = sgLava.add(new BoolSetting.Builder() .name("dip-on-sneak") - .description("Lets you go into the lava when your sneak key is held.") .defaultValue(true) .visible(() -> lavaMode.get() == Mode.Solid) .build() @@ -126,7 +117,6 @@ public class Jesus extends Module { private final Setting dipOnFallLava = sgLava.add(new BoolSetting.Builder() .name("dip-on-fall") - .description("Lets you go into the lava when you fall over a certain height.") .defaultValue(true) .visible(() -> lavaMode.get() == Mode.Solid) .build() @@ -134,7 +124,6 @@ public class Jesus extends Module { private final Setting dipFallHeightLava = sgLava.add(new IntSetting.Builder() .name("dip-fall-height") - .description("The fall height at which you will go into the lava.") .defaultValue(4) .range(1, 255) .sliderRange(3, 20) @@ -155,7 +144,7 @@ public class Jesus extends Module { public boolean isInBubbleColumn = false; public Jesus() { - super(Categories.Movement, "jesus", "Walk on liquids and powder snow like Jesus."); + super(Categories.Movement, "jesus"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/LongJump.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/LongJump.java index 62f785b422..111c5df1d9 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/LongJump.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/LongJump.java @@ -25,14 +25,12 @@ public class LongJump extends Module { public final Setting jumpMode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("The method of jumping.") .defaultValue(JumpMode.Vanilla) .build() ); private final Setting vanillaBoostFactor = sgGeneral.add(new DoubleSetting.Builder() .name("vanilla-boost-factor") - .description("The amount by which to boost the jump.") .visible(() -> jumpMode.get() == JumpMode.Vanilla) .defaultValue(1.261) .min(0) @@ -42,7 +40,6 @@ public class LongJump extends Module { private final Setting burstInitialSpeed = sgGeneral.add(new DoubleSetting.Builder() .name("burst-initial-speed") - .description("The initial speed of the runup.") .visible(() -> jumpMode.get() == JumpMode.Burst) .defaultValue(6) .min(0) @@ -52,7 +49,6 @@ public class LongJump extends Module { private final Setting burstBoostFactor = sgGeneral.add(new DoubleSetting.Builder() .name("burst-boost-factor") - .description("The amount by which to boost the jump.") .visible(() -> jumpMode.get() == JumpMode.Burst) .defaultValue(2.149) .min(0) @@ -62,7 +58,6 @@ public class LongJump extends Module { private final Setting onlyOnGround = sgGeneral.add(new BoolSetting.Builder() .name("only-on-ground") - .description("Only performs the jump if you are on the ground.") .visible(() -> jumpMode.get() == JumpMode.Burst) .defaultValue(true) .build() @@ -70,7 +65,6 @@ public class LongJump extends Module { private final Setting onJump = sgGeneral.add(new BoolSetting.Builder() .name("on-jump") - .description("Whether the player needs to jump first or not.") .visible(() -> jumpMode.get() == JumpMode.Burst) .defaultValue(false) .build() @@ -78,7 +72,6 @@ public class LongJump extends Module { private final Setting glideMultiplier = sgGeneral.add(new DoubleSetting.Builder() .name("glide-multiplier") - .description("The amount by to multiply the glide velocity.") .visible(() -> jumpMode.get() == JumpMode.Glide) .defaultValue(1) .min(0) @@ -88,7 +81,6 @@ public class LongJump extends Module { public final Setting timer = sgGeneral.add(new DoubleSetting.Builder() .name("timer") - .description("Timer override.") .defaultValue(1) .min(0.01) .sliderMin(0.01) @@ -97,7 +89,6 @@ public class LongJump extends Module { private final Setting autoDisable = sgGeneral.add(new BoolSetting.Builder() .name("auto-disable") - .description("Automatically disabled the module after jumping.") .visible(() -> jumpMode.get() != JumpMode.Vanilla) .defaultValue(true) .build() @@ -105,13 +96,12 @@ public class LongJump extends Module { private final Setting disableOnRubberband = sgGeneral.add(new BoolSetting.Builder() .name("disable-on-rubberband") - .description("Disables the module when you get lagged back.") .defaultValue(true) .build() ); public LongJump() { - super(Categories.Movement, "long-jump", "Allows you to jump further than normal."); + super(Categories.Movement, "long-jump"); } private int stage; diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/NoFall.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/NoFall.java index f9eb17f08f..383478eb7f 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/NoFall.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/NoFall.java @@ -47,14 +47,12 @@ public class NoFall extends Module { private final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("The way you are saved from fall damage.") .defaultValue(Mode.Packet) .build() ); private final Setting placedItem = sgGeneral.add(new EnumSetting.Builder() .name("placed-item") - .description("Which block to place.") .defaultValue(PlacedItem.Bucket) .visible(() -> mode.get() == Mode.Place) .build() @@ -62,7 +60,6 @@ public class NoFall extends Module { private final Setting airPlaceMode = sgGeneral.add(new EnumSetting.Builder() .name("air-place-mode") - .description("Whether place mode places before you die or before you take damage.") .defaultValue(PlaceMode.BeforeDeath) .visible(() -> mode.get() == Mode.AirPlace) .build() @@ -70,7 +67,6 @@ public class NoFall extends Module { private final Setting anchor = sgGeneral.add(new BoolSetting.Builder() .name("anchor") - .description("Centers the player and reduces movement when using bucket or air place mode.") .defaultValue(true) .visible(() -> mode.get() != Mode.Packet) .build() @@ -78,14 +74,12 @@ public class NoFall extends Module { private final Setting antiBounce = sgGeneral.add(new BoolSetting.Builder() .name("anti-bounce") - .description("Disables bouncing on slime-block and bed upon landing.") .defaultValue(true) .build() ); private final Setting pauseOnMace = sgGeneral.add(new BoolSetting.Builder() .name("pause-on-mace") - .description("Pauses NoFall when using a mace.") .defaultValue(true) .build() ); @@ -96,7 +90,7 @@ public class NoFall extends Module { private boolean prePathManagerNoFall; public NoFall() { - super(Categories.Movement, "no-fall", "Attempts to prevent you from taking fall damage."); + super(Categories.Movement, "no-fall"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/NoSlow.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/NoSlow.java index 1651f349d1..8b81449cfc 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/NoSlow.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/NoSlow.java @@ -19,21 +19,18 @@ public class NoSlow extends Module { private final Setting items = sgGeneral.add(new BoolSetting.Builder() .name("items") - .description("Whether or not using items will slow you.") .defaultValue(true) .build() ); private final Setting web = sgGeneral.add(new EnumSetting.Builder() .name("web") - .description("Whether or not cobwebs will not slow you down.") .defaultValue(WebMode.Vanilla) .build() ); private final Setting webTimer = sgGeneral.add(new DoubleSetting.Builder() .name("web-timer") - .description("The timer value for WebMode Timer.") .defaultValue(10) .min(1) .sliderMin(1) @@ -43,63 +40,54 @@ public class NoSlow extends Module { private final Setting honeyBlock = sgGeneral.add(new BoolSetting.Builder() .name("honey-block") - .description("Whether or not honey blocks will not slow you down.") .defaultValue(true) .build() ); private final Setting soulSand = sgGeneral.add(new BoolSetting.Builder() .name("soul-sand") - .description("Whether or not soul sand will not slow you down.") .defaultValue(true) .build() ); private final Setting slimeBlock = sgGeneral.add(new BoolSetting.Builder() .name("slime-block") - .description("Whether or not slime blocks will not slow you down.") .defaultValue(true) .build() ); private final Setting berryBush = sgGeneral.add(new BoolSetting.Builder() .name("berry-bush") - .description("Whether or not berry bushes will not slow you down.") .defaultValue(true) .build() ); private final Setting airStrict = sgGeneral.add(new BoolSetting.Builder() .name("air-strict") - .description("Will attempt to bypass anti-cheats like 2b2t's. Only works while in air.") .defaultValue(false) .build() ); private final Setting fluidDrag = sgGeneral.add(new BoolSetting.Builder() .name("fluid-drag") - .description("Whether or not fluid drag will not slow you down.") .defaultValue(false) .build() ); private final Setting sneaking = sgGeneral.add(new BoolSetting.Builder() .name("sneaking") - .description("Whether or not sneaking will not slow you down.") .defaultValue(false) .build() ); private final Setting hunger = sgGeneral.add(new BoolSetting.Builder() .name("hunger") - .description("Whether or not hunger will not slow you down.") .defaultValue(false) .build() ); private final Setting slowness = sgGeneral.add(new BoolSetting.Builder() .name("slowness") - .description("Whether or not slowness will not slow you down.") .defaultValue(false) .build() ); @@ -107,7 +95,7 @@ public class NoSlow extends Module { private boolean resetTimer; public NoSlow() { - super(Categories.Movement, "no-slow", "Allows you to move normally when using objects that will slow you."); + super(Categories.Movement, "no-slow"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Parkour.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Parkour.java index 5daec23b24..91970ecf94 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Parkour.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Parkour.java @@ -24,14 +24,13 @@ public class Parkour extends Module { private final Setting edgeDistance = sgGeneral.add(new DoubleSetting.Builder() .name("edge-distance") - .description("How far from the edge should you jump.") .range(0.001, 0.1) .defaultValue(0.001) .build() ); public Parkour() { - super(Categories.Movement, "parkour", "Automatically jumps at the edges of blocks."); + super(Categories.Movement, "parkour"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/ReverseStep.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/ReverseStep.java index 0e57822cc5..200659b2b4 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/ReverseStep.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/ReverseStep.java @@ -23,7 +23,6 @@ public class ReverseStep extends Module { private final Setting fallSpeed = sgGeneral.add(new DoubleSetting.Builder() .name("fall-speed") - .description("How fast to fall in blocks per second.") .defaultValue(3) .min(0) .build() @@ -31,7 +30,6 @@ public class ReverseStep extends Module { private final Setting fallDistance = sgGeneral.add(new DoubleSetting.Builder() .name("fall-distance") - .description("The maximum fall distance this setting will activate at.") .defaultValue(3) .min(0) .build() @@ -39,13 +37,12 @@ public class ReverseStep extends Module { private final Setting vehicles = sgGeneral.add(new BoolSetting.Builder() .name("vehicles") - .description("Whether or not reverse step should affect vehicles.") .defaultValue(false) .build() ); public ReverseStep() { - super(Categories.Movement, "reverse-step", "Allows you to fall down blocks at a greater speed."); + super(Categories.Movement, "reverse-step"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/SafeWalk.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/SafeWalk.java index d908103c99..1fd037e96f 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/SafeWalk.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/SafeWalk.java @@ -23,11 +23,10 @@ public class SafeWalk extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgRender = settings.createGroup("render"); private final Setting fallDistance = sgGeneral.add(new IntSetting.Builder() .name("minimum-fall-distance") - .description("The minimum number of blocks you are expected to fall before the module activates.") .defaultValue(1) .min(1) .build() @@ -35,14 +34,12 @@ public class SafeWalk extends Module { private final Setting sneak = sgGeneral.add(new BoolSetting.Builder() .name("sneak") - .description("Sneak when approaching edge of block.") .defaultValue(false) .build() ); private final Setting safeSneak = sgGeneral.add(new BoolSetting.Builder() .name("safe-sneak") - .description("Prevent you from falling if sneak doesn't trigger correctly.") .defaultValue(true) .visible(sneak::get) .build() @@ -50,7 +47,6 @@ public class SafeWalk extends Module { private final Setting sneakSprint = sgGeneral.add(new BoolSetting.Builder() .name("sneak-on-sprint") - .description("Sneak even when sprinting at the block edge.") .defaultValue(true) .visible(sneak::get) .build() @@ -58,7 +54,6 @@ public class SafeWalk extends Module { private final Setting edgeDistance = sgGeneral.add(new DoubleSetting.Builder() .name("edge-distance") - .description("Distance offset before reaching an edge.") .defaultValue(0.30) .sliderRange(0.00, 0.30) .decimalPlaces(2) @@ -68,7 +63,6 @@ public class SafeWalk extends Module { private final Setting renderEdgeDistance = sgRender.add(new BoolSetting.Builder() .name("render") - .description("Render edge distance helper.") .defaultValue(false) .visible(sneak::get) .build() @@ -76,14 +70,13 @@ public class SafeWalk extends Module { private final Setting renderPlayerBox = sgRender.add(new BoolSetting.Builder() .name("render-player-box") - .description("Render player box helper.") .defaultValue(false) .visible(() -> sneak.get() && renderEdgeDistance.get()) .build() ); public SafeWalk() { - super(Categories.Movement, "safe-walk", "Prevents you from walking off blocks."); + super(Categories.Movement, "safe-walk"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Scaffold.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Scaffold.java index ad02674d0f..52eacc7702 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Scaffold.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Scaffold.java @@ -32,31 +32,27 @@ public class Scaffold extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgRender = settings.createGroup("render"); private final Setting> blocks = sgGeneral.add(new BlockListSetting.Builder() .name("blocks") - .description("Selected blocks.") .build() ); private final Setting blocksFilter = sgGeneral.add(new EnumSetting.Builder() .name("blocks-filter") - .description("How to use the block list setting") .defaultValue(ListMode.Blacklist) .build() ); private final Setting fastTower = sgGeneral.add(new BoolSetting.Builder() .name("fast-tower") - .description("Whether or not to scaffold upwards faster.") .defaultValue(false) .build() ); private final Setting towerSpeed = sgGeneral.add(new DoubleSetting.Builder() .name("tower-speed") - .description("The speed at which to tower.") .defaultValue(0.5) .min(0) .sliderMax(1) @@ -66,7 +62,6 @@ public class Scaffold extends Module { private final Setting whileMoving = sgGeneral.add(new BoolSetting.Builder() .name("while-moving") - .description("Allows you to tower while moving.") .defaultValue(false) .visible(fastTower::get) .build() @@ -74,42 +69,36 @@ public class Scaffold extends Module { private final Setting onlyOnClick = sgGeneral.add(new BoolSetting.Builder() .name("only-on-click") - .description("Only places blocks when holding right click.") .defaultValue(false) .build() ); private final Setting renderSwing = sgGeneral.add(new BoolSetting.Builder() .name("swing") - .description("Renders your client-side swing.") .defaultValue(false) .build() ); private final Setting autoSwitch = sgGeneral.add(new BoolSetting.Builder() .name("auto-switch") - .description("Automatically swaps to a block before placing.") .defaultValue(true) .build() ); private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() .name("rotate") - .description("Rotates towards the blocks being placed.") .defaultValue(true) .build() ); private final Setting airPlace = sgGeneral.add(new BoolSetting.Builder() .name("air-place") - .description("Allow air place. This also allows you to modify scaffold radius.") .defaultValue(false) .build() ); private final Setting aheadDistance = sgGeneral.add(new DoubleSetting.Builder() .name("ahead-distance") - .description("How far ahead to place blocks.") .defaultValue(0) .min(0) .sliderMax(1) @@ -119,7 +108,6 @@ public class Scaffold extends Module { private final Setting placeRange = sgGeneral.add(new DoubleSetting.Builder() .name("closest-block-range") - .description("How far can scaffold place blocks when you are in air.") .defaultValue(4) .min(0) .sliderMax(8) @@ -129,7 +117,6 @@ public class Scaffold extends Module { private final Setting radius = sgGeneral.add(new DoubleSetting.Builder() .name("radius") - .description("Scaffold radius.") .defaultValue(0) .min(0) .max(6) @@ -139,7 +126,6 @@ public class Scaffold extends Module { private final Setting blocksPerTick = sgGeneral.add(new IntSetting.Builder() .name("blocks-per-tick") - .description("How many blocks to place in one tick.") .defaultValue(3) .min(1) .visible(airPlace::get) @@ -150,14 +136,12 @@ public class Scaffold extends Module { private final Setting render = sgRender.add(new BoolSetting.Builder() .name("render") - .description("Whether to render blocks that have been placed.") .defaultValue(true) .build() ); private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .visible(render::get) .build() @@ -165,7 +149,6 @@ public class Scaffold extends Module { private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") - .description("The side color of the target block rendering.") .defaultValue(new SettingColor(197, 137, 232, 10)) .visible(render::get) .build() @@ -173,7 +156,6 @@ public class Scaffold extends Module { private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") - .description("The line color of the target block rendering.") .defaultValue(new SettingColor(197, 137, 232)) .visible(render::get) .build() @@ -182,7 +164,7 @@ public class Scaffold extends Module { private final BlockPos.Mutable bp = new BlockPos.Mutable(); public Scaffold() { - super(Categories.Movement, "scaffold", "Automatically places blocks under you."); + super(Categories.Movement, "scaffold"); } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Slippy.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Slippy.java index 18ee10e8d7..163a4063fa 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Slippy.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Slippy.java @@ -17,7 +17,6 @@ public class Slippy extends Module { public final Setting friction = sgGeneral.add(new DoubleSetting.Builder() .name("friction") - .description("The base friction level.") .range(0.01, 1.10) .sliderRange(0.01, 1.10) .defaultValue(1) @@ -26,27 +25,24 @@ public class Slippy extends Module { public final Setting listMode = sgGeneral.add(new EnumSetting.Builder() .name("list-mode") - .description("The mode to select blocks.") .defaultValue(ListMode.Blacklist) .build() ); public final Setting> ignoredBlocks = sgGeneral.add(new BlockListSetting.Builder() .name("ignored-blocks") - .description("Decide which blocks not to slip on") .visible(() -> listMode.get() == ListMode.Blacklist) .build() ); public final Setting> allowedBlocks = sgGeneral.add(new BlockListSetting.Builder() .name("allowed-blocks") - .description("Decide which blocks to slip on") .visible(() -> listMode.get() == ListMode.Whitelist) .build() ); public Slippy() { - super(Categories.Movement, "slippy", "Changes the base friction level of blocks."); + super(Categories.Movement, "slippy"); } public enum ListMode { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Sneak.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Sneak.java index aa362123e5..ab24bc8e71 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Sneak.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Sneak.java @@ -16,13 +16,12 @@ public class Sneak extends Module { private final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("Which method to sneak.") .defaultValue(Mode.Vanilla) .build() ); public Sneak() { - super (Categories.Movement, "sneak", "Sneaks for you"); + super (Categories.Movement, "sneak"); } public boolean doPacket() { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Spider.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Spider.java index 7242d480fd..ec582a8901 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Spider.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Spider.java @@ -19,14 +19,13 @@ public class Spider extends Module { private final Setting speed = sgGeneral.add(new DoubleSetting.Builder() .name("climb-speed") - .description("The speed you go up blocks.") .defaultValue(0.2) .min(0.0) .build() ); public Spider() { - super(Categories.Movement, "spider", "Allows you to climb walls like a spider."); + super(Categories.Movement, "spider"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Sprint.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Sprint.java index 2c45aa5f03..99de639373 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Sprint.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Sprint.java @@ -30,28 +30,24 @@ public enum Mode { public final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("sprint-mode") - .description("What mode of sprinting.") .defaultValue(Mode.Strict) .build() ); private final Setting keepSprint = sgGeneral.add(new BoolSetting.Builder() .name("keep-sprint") - .description("Whether to keep sprinting after attacking.") .defaultValue(false) .build() ); private final Setting unsprintOnHit = sgGeneral.add(new BoolSetting.Builder() .name("unsprint-on-hit") - .description("Whether to stop sprinting before attacking, to ensure you get crits and sweep attacks.") .defaultValue(false) .build() ); public final Setting unsprintInWater = sgGeneral.add(new BoolSetting.Builder() .name("unsprint-in-water") - .description("Whether to stop sprinting when in water.") .defaultValue(true) .visible(() -> mode.get() == Mode.Rage) .build() @@ -59,14 +55,13 @@ public enum Mode { private final Setting permaSprint = sgGeneral.add(new BoolSetting.Builder() .name("sprint-while-stationary") - .description("Sprint even when not moving.") .defaultValue(false) .visible(() -> mode.get() == Mode.Rage) .build() ); public Sprint() { - super(Categories.Movement, "sprint", "Automatically sprints."); + super(Categories.Movement, "sprint"); } @EventHandler(priority = EventPriority.HIGH) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Step.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Step.java index cefeb58637..999d32efd7 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Step.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Step.java @@ -28,7 +28,6 @@ public class Step extends Module { public final Setting height = sgGeneral.add(new DoubleSetting.Builder() .name("height") - .description("Step height.") .defaultValue(1.25) .min(0) .build() @@ -36,21 +35,18 @@ public class Step extends Module { private final Setting activeWhen = sgGeneral.add(new EnumSetting.Builder() .name("active-when") - .description("Step is active when you meet these requirements.") .defaultValue(ActiveWhen.Always) .build() ); private final Setting safeStep = sgGeneral.add(new BoolSetting.Builder() .name("safe-step") - .description("Doesn't let you step out of a hole if you are low on health or there is a crystal nearby.") .defaultValue(false) .build() ); private final Setting stepHealth = sgGeneral.add(new IntSetting.Builder() .name("step-health") - .description("The health you stop being able to step at.") .defaultValue(5) .range(1, 36) .sliderRange(1, 36) @@ -62,7 +58,7 @@ public class Step extends Module { private boolean prevPathManagerStep; public Step() { - super(Categories.Movement, "step", "Allows you to walk up full blocks instantly."); + super(Categories.Movement, "step"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/TridentBoost.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/TridentBoost.java index 4396451731..6b4cae79dc 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/TridentBoost.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/TridentBoost.java @@ -17,7 +17,6 @@ public class TridentBoost extends Module { private final Setting multiplier = sgGeneral.add(new DoubleSetting.Builder() .name("boost") - .description("How much your velocity is multiplied by when using riptide.") .defaultValue(2) .min(0.1) .sliderMin(1) @@ -26,13 +25,12 @@ public class TridentBoost extends Module { private final Setting allowOutOfWater = sgGeneral.add(new BoolSetting.Builder() .name("out-of-water") - .description("Whether riptide should work out of water") .defaultValue(true) .build() ); public TridentBoost() { - super(Categories.Movement, "trident-boost", "Boosts you when using riptide with a trident."); + super(Categories.Movement, "trident-boost"); } public double getMultiplier() { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Velocity.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Velocity.java index 2628cd6acb..269a3e454c 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Velocity.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Velocity.java @@ -24,14 +24,12 @@ public class Velocity extends Module { public final Setting knockback = sgGeneral.add(new BoolSetting.Builder() .name("knockback") - .description("Modifies the amount of knockback you take from attacks.") .defaultValue(true) .build() ); public final Setting knockbackHorizontal = sgGeneral.add(new DoubleSetting.Builder() .name("knockback-horizontal") - .description("How much horizontal knockback you will take.") .defaultValue(0) .sliderMax(1) .visible(knockback::get) @@ -40,7 +38,6 @@ public class Velocity extends Module { public final Setting knockbackVertical = sgGeneral.add(new DoubleSetting.Builder() .name("knockback-vertical") - .description("How much vertical knockback you will take.") .defaultValue(0) .sliderMax(1) .visible(knockback::get) @@ -49,14 +46,12 @@ public class Velocity extends Module { public final Setting explosions = sgGeneral.add(new BoolSetting.Builder() .name("explosions") - .description("Modifies your knockback from explosions.") .defaultValue(true) .build() ); public final Setting explosionsHorizontal = sgGeneral.add(new DoubleSetting.Builder() .name("explosions-horizontal") - .description("How much velocity you will take from explosions horizontally.") .defaultValue(0) .sliderMax(1) .visible(explosions::get) @@ -65,7 +60,6 @@ public class Velocity extends Module { public final Setting explosionsVertical = sgGeneral.add(new DoubleSetting.Builder() .name("explosions-vertical") - .description("How much velocity you will take from explosions vertically.") .defaultValue(0) .sliderMax(1) .visible(explosions::get) @@ -74,14 +68,12 @@ public class Velocity extends Module { public final Setting liquids = sgGeneral.add(new BoolSetting.Builder() .name("liquids") - .description("Modifies the amount you are pushed by flowing liquids.") .defaultValue(true) .build() ); public final Setting liquidsHorizontal = sgGeneral.add(new DoubleSetting.Builder() .name("liquids-horizontal") - .description("How much velocity you will take from liquids horizontally.") .defaultValue(0) .sliderMax(1) .visible(liquids::get) @@ -90,7 +82,6 @@ public class Velocity extends Module { public final Setting liquidsVertical = sgGeneral.add(new DoubleSetting.Builder() .name("liquids-vertical") - .description("How much velocity you will take from liquids vertically.") .defaultValue(0) .sliderMax(1) .visible(liquids::get) @@ -99,14 +90,12 @@ public class Velocity extends Module { public final Setting entityPush = sgGeneral.add(new BoolSetting.Builder() .name("entity-push") - .description("Modifies the amount you are pushed by entities.") .defaultValue(true) .build() ); public final Setting entityPushAmount = sgGeneral.add(new DoubleSetting.Builder() .name("entity-push-amount") - .description("How much you will be pushed.") .defaultValue(0) .sliderMax(1) .visible(entityPush::get) @@ -115,27 +104,24 @@ public class Velocity extends Module { public final Setting blocks = sgGeneral.add(new BoolSetting.Builder() .name("blocks") - .description("Prevents you from being pushed out of blocks.") .defaultValue(true) .build() ); public final Setting sinking = sgGeneral.add(new BoolSetting.Builder() .name("sinking") - .description("Prevents you from sinking in liquids.") .defaultValue(false) .build() ); public final Setting fishing = sgGeneral.add(new BoolSetting.Builder() .name("fishing") - .description("Prevents you from being pulled by fishing rods.") .defaultValue(false) .build() ); public Velocity() { - super(Categories.Movement, "velocity", "Prevents you from being moved by external forces."); + super(Categories.Movement, "velocity"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/elytrafly/ElytraFly.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/elytrafly/ElytraFly.java index 9af851c443..fd4b999d2a 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/elytrafly/ElytraFly.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/elytrafly/ElytraFly.java @@ -39,14 +39,13 @@ public class ElytraFly extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgInventory = settings.createGroup("Inventory"); - private final SettingGroup sgAutopilot = settings.createGroup("Autopilot"); + private final SettingGroup sgInventory = settings.createGroup("inventory"); + private final SettingGroup sgAutopilot = settings.createGroup("autopilot"); // General public final Setting flightMode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("The mode of flying.") .defaultValue(ElytraFlightModes.Vanilla) .onModuleActivated(flightModesSetting -> onModeChanged(flightModesSetting.get())) .onChanged(this::onModeChanged) @@ -55,7 +54,6 @@ public class ElytraFly extends Module { public final Setting autoTakeOff = sgGeneral.add(new BoolSetting.Builder() .name("auto-take-off") - .description("Automatically takes off when you hold jump without needing to double jump.") .defaultValue(false) .visible(() -> flightMode.get() != ElytraFlightModes.Pitch40 && flightMode.get() != ElytraFlightModes.Bounce) .build() @@ -63,7 +61,6 @@ public class ElytraFly extends Module { public final Setting fallMultiplier = sgGeneral.add(new DoubleSetting.Builder() .name("fall-multiplier") - .description("Controls how fast will you go down naturally.") .defaultValue(0.01) .min(0) .visible(() -> flightMode.get() != ElytraFlightModes.Pitch40 && flightMode.get() != ElytraFlightModes.Bounce) @@ -72,7 +69,6 @@ public class ElytraFly extends Module { public final Setting horizontalSpeed = sgGeneral.add(new DoubleSetting.Builder() .name("horizontal-speed") - .description("How fast you go forward and backward.") .defaultValue(1) .min(0) .visible(() -> flightMode.get() != ElytraFlightModes.Pitch40 && flightMode.get() != ElytraFlightModes.Bounce) @@ -81,7 +77,6 @@ public class ElytraFly extends Module { public final Setting verticalSpeed = sgGeneral.add(new DoubleSetting.Builder() .name("vertical-speed") - .description("How fast you go up and down.") .defaultValue(1) .min(0) .visible(() -> flightMode.get() != ElytraFlightModes.Pitch40 && flightMode.get() != ElytraFlightModes.Bounce) @@ -114,7 +109,6 @@ public class ElytraFly extends Module { public final Setting stopInWater = sgGeneral.add(new BoolSetting.Builder() .name("stop-in-water") - .description("Stops flying in water.") .defaultValue(true) .visible(() -> flightMode.get() != ElytraFlightModes.Bounce) .build() @@ -122,14 +116,12 @@ public class ElytraFly extends Module { public final Setting dontGoIntoUnloadedChunks = sgGeneral.add(new BoolSetting.Builder() .name("no-unloaded-chunks") - .description("Stops you from going into unloaded chunks.") .defaultValue(true) .build() ); public final Setting autoHover = sgGeneral.add(new BoolSetting.Builder() .name("auto-hover") - .description("Automatically hover .3 blocks off ground when holding shift.") .defaultValue(false) .visible(() -> flightMode.get() != ElytraFlightModes.Bounce) .build() @@ -137,7 +129,6 @@ public class ElytraFly extends Module { public final Setting noCrash = sgGeneral.add(new BoolSetting.Builder() .name("no-crash") - .description("Stops you from going into walls.") .defaultValue(false) .visible(() -> flightMode.get() != ElytraFlightModes.Bounce) .build() @@ -145,7 +136,6 @@ public class ElytraFly extends Module { public final Setting crashLookAhead = sgGeneral.add(new IntSetting.Builder() .name("crash-look-ahead") - .description("Distance to look ahead when flying.") .defaultValue(5) .range(1, 15) .sliderMin(1) @@ -155,7 +145,6 @@ public class ElytraFly extends Module { private final Setting instaDrop = sgGeneral.add(new BoolSetting.Builder() .name("insta-drop") - .description("Makes you drop out of flight instantly.") .defaultValue(false) .visible(() -> flightMode.get() != ElytraFlightModes.Bounce) .build() @@ -163,10 +152,6 @@ public class ElytraFly extends Module { public final Setting pitch40lowerBounds = sgGeneral.add(new DoubleSetting.Builder() .name("pitch40-lower-bounds") - .description( - "The bottom height boundary for pitch40. You must be at least 40 blocks above this boundary when starting the module.\n" + - "After descending below this boundary you will start pitching upwards." - ) .defaultValue(180) .min(-128) .sliderMax(360) @@ -176,10 +161,6 @@ public class ElytraFly extends Module { public final Setting pitch40upperBounds = sgGeneral.add(new DoubleSetting.Builder() .name("pitch40-upper-bounds") - .description( - "The upper height boundary for pitch40. You must be above this boundary when starting the module.\n" + - "When ascending above this boundary, if you are not already, you will start pitching downwards." - ) .defaultValue(220) .min(-128) .sliderMax(360) @@ -189,7 +170,6 @@ public class ElytraFly extends Module { public final Setting pitch40rotationSpeedUp = sgGeneral.add(new DoubleSetting.Builder() .name("pitch40-rotate-speed-up") - .description("The speed for pitch rotation upwards (degrees per tick).") .defaultValue(5.45) .min(1) .sliderMax(20) @@ -199,7 +179,6 @@ public class ElytraFly extends Module { public final Setting pitch40rotationSpeedDown = sgGeneral.add(new DoubleSetting.Builder() .name("pitch40-rotate-speed-down") - .description("The speed for pitch rotation downwards (degrees per tick).") .defaultValue(0.90) .min(0.5) .sliderMax(2) @@ -209,7 +188,6 @@ public class ElytraFly extends Module { public final Setting autoJump = sgGeneral.add(new BoolSetting.Builder() .name("auto-jump") - .description("Automatically jumps for you.") .defaultValue(true) .visible(() -> flightMode.get() == ElytraFlightModes.Bounce) .build() @@ -217,7 +195,6 @@ public class ElytraFly extends Module { public final Setting yawLockMode = sgGeneral.add(new EnumSetting.Builder() .name("yaw-lock") - .description("Whether to enable yaw lock or not") .defaultValue(Rotation.LockMode.Smart) .visible(() -> flightMode.get() == ElytraFlightModes.Bounce) .build() @@ -225,7 +202,6 @@ public class ElytraFly extends Module { public final Setting yaw = sgGeneral.add(new DoubleSetting.Builder() .name("yaw") - .description("The yaw angle to look at when using simple rotation lock in bounce mode.") .defaultValue(0) .range(0, 360) .sliderRange(0,360) @@ -235,7 +211,6 @@ public class ElytraFly extends Module { public final Setting lockPitch = sgGeneral.add(new BoolSetting.Builder() .name("pitch-lock") - .description("Whether to lock your pitch angle.") .defaultValue(true) .visible(() -> flightMode.get() == ElytraFlightModes.Bounce) .build() @@ -243,7 +218,6 @@ public class ElytraFly extends Module { public final Setting pitch = sgGeneral.add(new DoubleSetting.Builder() .name("pitch") - .description("The pitch angle to look at when using the bounce mode.") .defaultValue(85) .range(0, 90) .sliderRange(0, 90) @@ -253,7 +227,6 @@ public class ElytraFly extends Module { public final Setting restart = sgGeneral.add(new BoolSetting.Builder() .name("restart") - .description("Restarts flying with the elytra when rubberbanding.") .defaultValue(true) .visible(() -> flightMode.get() == ElytraFlightModes.Bounce) .build() @@ -261,7 +234,6 @@ public class ElytraFly extends Module { public final Setting restartDelay = sgGeneral.add(new IntSetting.Builder() .name("restart-delay") - .description("How many ticks to wait before restarting the elytra again after rubberbanding.") .defaultValue(7) .min(0) .sliderRange(0, 20) @@ -271,7 +243,6 @@ public class ElytraFly extends Module { public final Setting sprint = sgGeneral.add(new BoolSetting.Builder() .name("sprint-constantly") - .description("Sprints all the time. If turned off, it will only sprint when the player is touching the ground.") .defaultValue(true) .visible(() -> flightMode.get() == ElytraFlightModes.Bounce) .build() @@ -279,7 +250,6 @@ public class ElytraFly extends Module { public final Setting manualTakeoff = sgGeneral.add(new BoolSetting.Builder() .name("manual-takeoff") - .description("Does not automatically take off.") .defaultValue(false) .visible(() -> flightMode.get() == ElytraFlightModes.Bounce) .build() @@ -289,14 +259,12 @@ public class ElytraFly extends Module { public final Setting replace = sgInventory.add(new BoolSetting.Builder() .name("elytra-replace") - .description("Replaces broken elytra with a new elytra.") .defaultValue(false) .build() ); public final Setting replaceDurability = sgInventory.add(new IntSetting.Builder() .name("replace-durability") - .description("The durability threshold your elytra will be replaced at.") .defaultValue(2) .range(1, Items.ELYTRA.getComponents().getOrDefault(DataComponentTypes.MAX_DAMAGE, 432) - 1) .sliderRange(1, Items.ELYTRA.getComponents().getOrDefault(DataComponentTypes.MAX_DAMAGE, 432) - 1) @@ -306,21 +274,18 @@ public class ElytraFly extends Module { public final Setting chestSwap = sgInventory.add(new EnumSetting.Builder() .name("chest-swap") - .description("Enables ChestSwap when toggling this module.") .defaultValue(ChestSwapMode.Never) .build() ); public final Setting autoReplenish = sgInventory.add(new BoolSetting.Builder() .name("replenish-fireworks") - .description("Moves fireworks into a selected hotbar slot.") .defaultValue(false) .build() ); public final Setting replenishSlot = sgInventory.add(new IntSetting.Builder() .name("replenish-slot") - .description("The slot auto move moves fireworks to.") .defaultValue(9) .range(1, 9) .sliderRange(1, 9) @@ -332,7 +297,6 @@ public class ElytraFly extends Module { public final Setting autoPilot = sgAutopilot.add(new BoolSetting.Builder() .name("auto-pilot") - .description("Moves forward while elytra flying.") .defaultValue(false) .visible(() -> flightMode.get() != ElytraFlightModes.Pitch40 && flightMode.get() != ElytraFlightModes.Bounce) .build() @@ -340,7 +304,6 @@ public class ElytraFly extends Module { public final Setting useFireworks = sgAutopilot.add(new BoolSetting.Builder() .name("use-fireworks") - .description("Uses firework rockets every second of your choice.") .defaultValue(false) .visible(() -> autoPilot.get() && flightMode.get() != ElytraFlightModes.Pitch40 && flightMode.get() != ElytraFlightModes.Bounce) .build() @@ -348,7 +311,6 @@ public class ElytraFly extends Module { public final Setting autoPilotFireworkDelay = sgAutopilot.add(new DoubleSetting.Builder() .name("firework-delay") - .description("The delay in seconds in between using fireworks if \"Use Fireworks\" is enabled.") .min(1) .defaultValue(8) .sliderMax(20) @@ -358,7 +320,6 @@ public class ElytraFly extends Module { public final Setting autoPilotMinimumHeight = sgAutopilot.add(new DoubleSetting.Builder() .name("minimum-height") - .description("The minimum height for autopilot.") .defaultValue(120) .min(-128) .sliderMax(260) @@ -369,7 +330,7 @@ public class ElytraFly extends Module { private ElytraFlightMode currentMode = new Vanilla(); public ElytraFly() { - super(Categories.Movement, "elytra-fly", "Gives you more control over your elytra."); + super(Categories.Movement, "elytra-fly"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/speed/Speed.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/speed/Speed.java index 40b4d268da..490a22970c 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/speed/Speed.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/speed/Speed.java @@ -25,7 +25,6 @@ public class Speed extends Module { public final Setting speedMode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("The method of applying speed.") .defaultValue(SpeedModes.Vanilla) .onModuleActivated(speedModesSetting -> onSpeedModeChanged(speedModesSetting.get())) .onChanged(this::onSpeedModeChanged) @@ -34,7 +33,6 @@ public class Speed extends Module { public final Setting vanillaSpeed = sgGeneral.add(new DoubleSetting.Builder() .name("vanilla-speed") - .description("The speed in blocks per second.") .defaultValue(5.6) .min(0) .sliderMax(20) @@ -44,7 +42,6 @@ public class Speed extends Module { public final Setting ncpSpeed = sgGeneral.add(new DoubleSetting.Builder() .name("strafe-speed") - .description("The speed.") .visible(() -> speedMode.get() == SpeedModes.Strafe) .defaultValue(1.6) .min(0) @@ -54,7 +51,6 @@ public class Speed extends Module { public final Setting ncpSpeedLimit = sgGeneral.add(new BoolSetting.Builder() .name("speed-limit") - .description("Limits your speed on servers with very strict anticheats.") .visible(() -> speedMode.get() == SpeedModes.Strafe) .defaultValue(false) .build() @@ -62,7 +58,6 @@ public class Speed extends Module { public final Setting timer = sgGeneral.add(new DoubleSetting.Builder() .name("timer") - .description("Timer override.") .defaultValue(1) .min(0.01) .sliderMin(0.01) @@ -72,21 +67,18 @@ public class Speed extends Module { public final Setting inLiquids = sgGeneral.add(new BoolSetting.Builder() .name("in-liquids") - .description("Uses speed when in lava or water.") .defaultValue(false) .build() ); public final Setting whenSneaking = sgGeneral.add(new BoolSetting.Builder() .name("when-sneaking") - .description("Uses speed when sneaking.") .defaultValue(false) .build() ); public final Setting vanillaOnGround = sgGeneral.add(new BoolSetting.Builder() .name("only-on-ground") - .description("Uses speed only when standing on a block.") .visible(() -> speedMode.get() == SpeedModes.Vanilla) .defaultValue(false) .build() @@ -95,7 +87,7 @@ public class Speed extends Module { private SpeedMode currentMode; public Speed() { - super(Categories.Movement, "speed", "Modifies your movement speed when moving on the ground."); + super(Categories.Movement, "speed"); onSpeedModeChanged(speedMode.get()); } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AirPlace.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AirPlace.java index 15200a20d6..cf3047f5d1 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AirPlace.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AirPlace.java @@ -26,34 +26,30 @@ public class AirPlace extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRange = settings.createGroup("Range"); + private final SettingGroup sgRange = settings.createGroup("range"); // General private final Setting render = sgGeneral.add(new BoolSetting.Builder() .name("render") - .description("Renders a block overlay where the obsidian will be placed.") .defaultValue(true) .build() ); private final Setting shapeMode = sgGeneral.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); private final Setting sideColor = sgGeneral.add(new ColorSetting.Builder() .name("side-color") - .description("The color of the sides of the blocks being rendered.") .defaultValue(new SettingColor(204, 0, 0, 10)) .build() ); private final Setting lineColor = sgGeneral.add(new ColorSetting.Builder() .name("line-color") - .description("The color of the lines of the blocks being rendered.") .defaultValue(new SettingColor(204, 0, 0, 255)) .build() ); @@ -62,14 +58,12 @@ public class AirPlace extends Module { private final Setting customRange = sgRange.add(new BoolSetting.Builder() .name("custom-range") - .description("Use custom range for air place.") .defaultValue(false) .build() ); private final Setting range = sgRange.add(new DoubleSetting.Builder() .name("range") - .description("Custom range to place at.") .visible(customRange::get) .defaultValue(5) .min(0) @@ -80,7 +74,7 @@ public class AirPlace extends Module { private HitResult hitResult; public AirPlace() { - super(Categories.Player, "air-place", "Places a block where your crosshair is pointing at."); + super(Categories.Player, "air-place"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AntiAFK.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AntiAFK.java index 2d170034d7..2f47a42189 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AntiAFK.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AntiAFK.java @@ -18,35 +18,31 @@ import java.util.Random; public class AntiAFK extends Module { - private final SettingGroup sgActions = settings.createGroup("Actions"); - private final SettingGroup sgMessages = settings.createGroup("Messages"); + private final SettingGroup sgActions = settings.createGroup("actions"); + private final SettingGroup sgMessages = settings.createGroup("messages"); // Actions private final Setting jump = sgActions.add(new BoolSetting.Builder() .name("jump") - .description("Jump randomly.") .defaultValue(true) .build() ); private final Setting swing = sgActions.add(new BoolSetting.Builder() .name("swing") - .description("Swings your hand.") .defaultValue(false) .build() ); private final Setting sneak = sgActions.add(new BoolSetting.Builder() .name("sneak") - .description("Sneaks and unsneaks quickly.") .defaultValue(false) .build() ); private final Setting sneakTime = sgActions.add(new IntSetting.Builder() .name("sneak-time") - .description("How many ticks to stay sneaked.") .defaultValue(5) .min(1) .sliderMin(1) @@ -56,7 +52,6 @@ public class AntiAFK extends Module { private final Setting strafe = sgActions.add(new BoolSetting.Builder() .name("strafe") - .description("Strafe right and left.") .defaultValue(false) .onChanged(aBoolean -> { strafeTimer = 0; @@ -72,14 +67,12 @@ public class AntiAFK extends Module { private final Setting spin = sgActions.add(new BoolSetting.Builder() .name("spin") - .description("Spins the player in place.") .defaultValue(true) .build() ); private final Setting spinMode = sgActions.add(new EnumSetting.Builder() .name("spin-mode") - .description("The method of rotating.") .defaultValue(SpinMode.Server) .visible(spin::get) .build() @@ -87,7 +80,6 @@ public class AntiAFK extends Module { private final Setting spinSpeed = sgActions.add(new IntSetting.Builder() .name("speed") - .description("The speed to spin you.") .defaultValue(7) .visible(spin::get) .build() @@ -95,7 +87,6 @@ public class AntiAFK extends Module { private final Setting pitch = sgActions.add(new IntSetting.Builder() .name("pitch") - .description("The pitch to send to the server.") .defaultValue(0) .range(-90, 90) .sliderRange(-90, 90) @@ -108,14 +99,12 @@ public class AntiAFK extends Module { private final Setting sendMessages = sgMessages.add(new BoolSetting.Builder() .name("send-messages") - .description("Sends messages to prevent getting kicked for AFK.") .defaultValue(false) .build() ); private final Setting randomMessage = sgMessages.add(new BoolSetting.Builder() .name("random") - .description("Selects a random message from your message list.") .defaultValue(false) .visible(sendMessages::get) .build() @@ -123,7 +112,6 @@ public class AntiAFK extends Module { private final Setting delay = sgMessages.add(new IntSetting.Builder() .name("delay") - .description("The delay between specified messages in seconds.") .defaultValue(15) .min(0) .sliderMax(30) @@ -133,7 +121,6 @@ public class AntiAFK extends Module { private final Setting> messages = sgMessages.add(new StringListSetting.Builder() .name("messages") - .description("The messages to choose from.") .defaultValue( "Meteor on top!", "Meteor on crack!" @@ -143,7 +130,7 @@ public class AntiAFK extends Module { ); public AntiAFK() { - super(Categories.Player, "anti-afk", "Performs different actions to prevent getting kicked while AFK."); + super(Categories.Player, "anti-afk"); } private final Random random = new Random(); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AntiHunger.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AntiHunger.java index 5c94ffe687..0a749da4bf 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AntiHunger.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AntiHunger.java @@ -22,14 +22,12 @@ public class AntiHunger extends Module { private final Setting sprint = sgGeneral.add(new BoolSetting.Builder() .name("sprint") - .description("Spoofs sprinting packets.") .defaultValue(true) .build() ); private final Setting onGround = sgGeneral.add(new BoolSetting.Builder() .name("on-ground") - .description("Spoofs the onGround flag.") .defaultValue(true) .build() ); @@ -37,7 +35,7 @@ public class AntiHunger extends Module { private boolean lastOnGround, ignorePacket; public AntiHunger() { - super(Categories.Player, "anti-hunger", "Reduces (does NOT remove) hunger consumption."); + super(Categories.Player, "anti-hunger"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoClicker.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoClicker.java index 8ab9a34069..6e7be53116 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoClicker.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoClicker.java @@ -17,21 +17,18 @@ public class AutoClicker extends Module { private final Setting inScreens = sgGeneral.add(new BoolSetting.Builder() .name("while-in-screens") - .description("Whether to click while a screen is open.") .defaultValue(true) .build() ); private final Setting leftClickMode = sgGeneral.add(new EnumSetting.Builder() .name("mode-left") - .description("The method of clicking for left clicks.") .defaultValue(Mode.Press) .build() ); private final Setting leftClickDelay = sgGeneral.add(new IntSetting.Builder() .name("delay-left") - .description("The amount of delay between left clicks in ticks.") .defaultValue(2) .min(0) .sliderMax(60) @@ -41,14 +38,12 @@ public class AutoClicker extends Module { private final Setting rightClickMode = sgGeneral.add(new EnumSetting.Builder() .name("mode-right") - .description("The method of clicking for right clicks.") .defaultValue(Mode.Press) .build() ); private final Setting rightClickDelay = sgGeneral.add(new IntSetting.Builder() .name("delay-right") - .description("The amount of delay between right clicks in ticks.") .defaultValue(2) .min(0) .sliderMax(60) @@ -59,7 +54,7 @@ public class AutoClicker extends Module { private int rightClickTimer, leftClickTimer; public AutoClicker() { - super(Categories.Player, "auto-clicker", "Automatically clicks."); + super(Categories.Player, "auto-clicker"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoEat.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoEat.java index 8640666fd1..c49b32bb22 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoEat.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoEat.java @@ -36,12 +36,11 @@ public class AutoEat extends Module { // Settings groups private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgThreshold = settings.createGroup("Threshold"); + private final SettingGroup sgThreshold = settings.createGroup("threshold"); // General public final Setting> blacklist = sgGeneral.add(new ItemListSetting.Builder() .name("blacklist") - .description("Which items to not eat.") .defaultValue( Items.ENCHANTED_GOLDEN_APPLE, Items.GOLDEN_APPLE, @@ -59,14 +58,12 @@ public class AutoEat extends Module { private final Setting pauseAuras = sgGeneral.add(new BoolSetting.Builder() .name("pause-auras") - .description("Pauses all auras when eating.") .defaultValue(true) .build() ); private final Setting pauseBaritone = sgGeneral.add(new BoolSetting.Builder() .name("pause-baritone") - .description("Pause baritone when eating.") .defaultValue(true) .build() ); @@ -74,14 +71,12 @@ public class AutoEat extends Module { // Threshold private final Setting thresholdMode = sgThreshold.add(new EnumSetting.Builder() .name("threshold-mode") - .description("The threshold mode to trigger auto eat.") .defaultValue(ThresholdMode.Any) .build() ); private final Setting healthThreshold = sgThreshold.add(new DoubleSetting.Builder() .name("health-threshold") - .description("The level of health you eat at.") .defaultValue(10) .range(1, 19) .sliderRange(1, 19) @@ -91,7 +86,6 @@ public class AutoEat extends Module { private final Setting hungerThreshold = sgThreshold.add(new IntSetting.Builder() .name("hunger-threshold") - .description("The level of hunger you eat at.") .defaultValue(16) .range(1, 19) .sliderRange(1, 19) @@ -107,7 +101,7 @@ public class AutoEat extends Module { private boolean wasBaritone = false; public AutoEat() { - super(Categories.Player, "auto-eat", "Automatically eats food."); + super(Categories.Player, "auto-eat"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoFish.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoFish.java index ae630c33a1..9d40f168e2 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoFish.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoFish.java @@ -27,28 +27,24 @@ public class AutoFish extends Module { private final Setting autoSwitch = sgGeneral.add(new BoolSetting.Builder() .name("auto-switch") - .description("Automatically switch to a fishing rod.") .defaultValue(true) .build() ); private final Setting antiBreak = sgGeneral.add(new BoolSetting.Builder() .name("anti-break") - .description("Avoid using rods that would break if they were cast.") .defaultValue(true) .build() ); private final Setting autoCast = sgGeneral.add(new BoolSetting.Builder() .name("auto-cast") - .description("Automatically cast the fishing rod.") .defaultValue(true) .build() ); private final Setting castDelay = sgGeneral.add(new IntSetting.Builder() .name("cast-delay") - .description("How long to wait between recasts if the bobber fails to land in water.") .defaultValue(14) .min(1) .sliderMax(60) @@ -57,7 +53,6 @@ public class AutoFish extends Module { private final Setting castDelayVariance = sgGeneral.add(new IntSetting.Builder() .name("cast-delay-variance") - .description("Maximum amount of randomness added to cast delay.") .defaultValue(0) .min(0) .sliderMax(30) @@ -66,7 +61,6 @@ public class AutoFish extends Module { private final Setting catchDelay = sgGeneral.add(new IntSetting.Builder() .name("catch-delay") - .description("How long to wait after hooking a fish to reel it in.") .defaultValue(6) .min(1) .sliderMax(20) @@ -75,7 +69,6 @@ public class AutoFish extends Module { private final Setting catchDelayVariance = sgGeneral.add(new IntSetting.Builder() .name("catch-delay-variance") - .description("Maximum amount of randomness added to catch delay.") .defaultValue(0) .min(0) .sliderMax(10) // Since the shortest Java edition catch window is 20 ticks, this is the highest possible variance that won't miss fish. @@ -83,7 +76,7 @@ public class AutoFish extends Module { ); public AutoFish() { - super(Categories.Player, "auto-fish", "Automatically fishes for you."); + super(Categories.Player, "auto-fish"); } private double castDelayLeft = 0.0; diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoGap.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoGap.java index b9dbc11d2f..693fadbbcd 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoGap.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoGap.java @@ -39,35 +39,31 @@ public class AutoGap extends Module { private static final Class[] AURAS = new Class[] { KillAura.class, CrystalAura.class, AnchorAura.class, BedAura.class }; private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgPotions = settings.createGroup("Potions"); - private final SettingGroup sgHealth = settings.createGroup("Health"); + private final SettingGroup sgPotions = settings.createGroup("potions"); + private final SettingGroup sgHealth = settings.createGroup("health"); // General private final Setting allowEgap = sgGeneral.add(new BoolSetting.Builder() .name("allow-egap") - .description("Allow eating E-Gaps over Gaps if found.") .defaultValue(true) .build() ); private final Setting always = sgGeneral.add(new BoolSetting.Builder() .name("always") - .description("If it should always eat.") .defaultValue(false) .build() ); private final Setting pauseAuras = sgGeneral.add(new BoolSetting.Builder() .name("pause-auras") - .description("Pauses all auras when eating.") .defaultValue(true) .build() ); private final Setting pauseBaritone = sgGeneral.add(new BoolSetting.Builder() .name("pause-baritone") - .description("Pause baritone when eating.") .defaultValue(true) .build() ); @@ -75,14 +71,12 @@ public class AutoGap extends Module { // Potions private final Setting beforeExpiry = sgPotions.add(new BoolSetting.Builder() .name("before-expiry") - .description("If it should eat before potion effects expire.") .defaultValue(false) .build() ); private final Setting expiryThreshold = sgPotions.add(new IntSetting.Builder() .name("expiry-threshold") - .description("Time in ticks before the potion effect expires to start eating.") .defaultValue(60) .min(0) .sliderMax(200) @@ -92,14 +86,12 @@ public class AutoGap extends Module { private final Setting potionsRegeneration = sgPotions.add(new BoolSetting.Builder() .name("potions-regeneration") - .description("If it should eat when Regeneration runs out.") .defaultValue(false) .build() ); private final Setting potionsFireResistance = sgPotions.add(new BoolSetting.Builder() .name("potions-fire-resistance") - .description("If it should eat when Fire Resistance runs out. Requires E-Gaps.") .defaultValue(true) .visible(allowEgap::get) .build() @@ -107,7 +99,6 @@ public class AutoGap extends Module { private final Setting potionsAbsorption = sgPotions.add(new BoolSetting.Builder() .name("potions-absorption") - .description("If it should eat when Absorption runs out. Requires E-Gaps.") .defaultValue(false) .visible(allowEgap::get) .build() @@ -117,14 +108,12 @@ public class AutoGap extends Module { private final Setting healthEnabled = sgHealth.add(new BoolSetting.Builder() .name("health-enabled") - .description("If it should eat when health drops below threshold.") .defaultValue(true) .build() ); private final Setting healthThreshold = sgHealth.add(new IntSetting.Builder() .name("health-threshold") - .description("Health threshold to eat at. Includes absorption.") .defaultValue(20) .min(0) .sliderMax(40) @@ -140,7 +129,7 @@ public class AutoGap extends Module { private boolean wasBaritone; public AutoGap() { - super(Categories.Player, "auto-gap", "Automatically eats Gaps or E-Gaps."); + super(Categories.Player, "auto-gap"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoMend.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoMend.java index 569400a272..be6c795796 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoMend.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoMend.java @@ -27,21 +27,18 @@ public class AutoMend extends Module { private final Setting> blacklist = sgGeneral.add(new ItemListSetting.Builder() .name("blacklist") - .description("Item blacklist.") .filter(item -> item.getComponents().get(DataComponentTypes.DAMAGE) != null) .build() ); private final Setting force = sgGeneral.add(new BoolSetting.Builder() .name("force") - .description("Replaces item in offhand even if there is some other non-repairable item.") .defaultValue(false) .build() ); private final Setting autoDisable = sgGeneral.add(new BoolSetting.Builder() .name("auto-disable") - .description("Automatically disables when there are no more items to repair.") .defaultValue(true) .build() ); @@ -49,7 +46,7 @@ public class AutoMend extends Module { private boolean didMove; public AutoMend() { - super(Categories.Player, "auto-mend", "Automatically replaces items in your offhand with mending when fully repaired."); + super(Categories.Player, "auto-mend"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoReplenish.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoReplenish.java index cdb30f7461..93b9dfdd68 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoReplenish.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoReplenish.java @@ -26,7 +26,6 @@ public class AutoReplenish extends Module { private final Setting minCount = sgGeneral.add(new IntSetting.Builder() .name("min-count") - .description("Replenish a slot when it reaches this item count.") .defaultValue(8) .min(1) .sliderRange(1, 63) @@ -35,7 +34,6 @@ public class AutoReplenish extends Module { private final Setting tickDelay = sgGeneral.add(new IntSetting.Builder() .name("delay") - .description("How long in ticks to wait between replenishing your hotbar.") .defaultValue(1) .min(0) .build() @@ -43,21 +41,18 @@ public class AutoReplenish extends Module { private final Setting offhand = sgGeneral.add(new BoolSetting.Builder() .name("offhand") - .description("Whether or not to replenish items in your offhand.") .defaultValue(true) .build() ); private final Setting unstackable = sgGeneral.add(new BoolSetting.Builder() .name("unstackable") - .description("Replenish unstackable items.") .defaultValue(true) .build() ); private final Setting sameEnchants = sgGeneral.add(new BoolSetting.Builder() .name("same-enchants") - .description("Only replace unstackables with items that have the same enchants.") .defaultValue(true) .visible(unstackable::get) .build() @@ -65,14 +60,12 @@ public class AutoReplenish extends Module { private final Setting searchHotbar = sgGeneral.add(new BoolSetting.Builder() .name("search-hotbar") - .description("Combine stacks in your hotbar/offhand as a last resort.") .defaultValue(false) .build() ); private final Setting> excludedItems = sgGeneral.add(new ItemListSetting.Builder() .name("excluded-items") - .description("Items that won't be replenished.") .build() ); @@ -85,7 +78,7 @@ public class AutoReplenish extends Module { private int tickDelayLeft; public AutoReplenish() { - super(Categories.Player, "auto-replenish", "Automatically refills items in your hotbar, main hand, or offhand."); + super(Categories.Player, "auto-replenish"); Arrays.fill(items, Items.AIR.getDefaultStack()); } @@ -131,7 +124,7 @@ private void checkSlot(int slot, ItemStack stack) { items[slot] = stack.copy(); if (slot == 9) slot = SlotUtils.OFFHAND; - + if (excludedItems.get().contains(stack.getItem())) return; if (excludedItems.get().contains(prevStack.getItem())) return; diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoRespawn.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoRespawn.java index 67dbafdb66..ec7e771dbe 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoRespawn.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoRespawn.java @@ -16,7 +16,7 @@ public class AutoRespawn extends Module { public AutoRespawn() { - super(Categories.Player, "auto-respawn", "Automatically respawns after death."); + super(Categories.Player, "auto-respawn"); } @EventHandler(priority = EventPriority.HIGH) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoTool.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoTool.java index fdc6774c86..e4a54ba2ed 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoTool.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoTool.java @@ -33,41 +33,36 @@ public class AutoTool extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgWhitelist = settings.createGroup("Whitelist"); + private final SettingGroup sgWhitelist = settings.createGroup("whitelist"); // General private final Setting prefer = sgGeneral.add(new EnumSetting.Builder() .name("prefer") - .description("Either to prefer Silk Touch, Fortune, or none.") .defaultValue(EnchantPreference.Fortune) .build() ); private final Setting silkTouchForEnderChest = sgGeneral.add(new BoolSetting.Builder() .name("silk-touch-for-ender-chest") - .description("Mines Ender Chests only with the Silk Touch enchantment.") .defaultValue(true) .build() ); private final Setting fortuneForOresCrops = sgGeneral.add(new BoolSetting.Builder() .name("fortune-for-ores-and-crops") - .description("Mines Ores and crops only with the Fortune enchantment.") .defaultValue(false) .build() ); private final Setting antiBreak = sgGeneral.add(new BoolSetting.Builder() .name("anti-break") - .description("Stops you from breaking your tool.") .defaultValue(false) .build() ); private final Setting breakDurability = sgGeneral.add(new IntSetting.Builder() .name("anti-break-percentage") - .description("The durability percentage to stop using a tool.") .defaultValue(10) .range(1, 100) .sliderRange(1, 100) @@ -77,14 +72,12 @@ public class AutoTool extends Module { private final Setting switchBack = sgGeneral.add(new BoolSetting.Builder() .name("switch-back") - .description("Switches your hand to whatever was selected when releasing your attack key.") .defaultValue(false) .build() ); private final Setting switchDelay = sgGeneral.add((new IntSetting.Builder() .name("switch-delay") - .description("Delay in ticks before switching tools.") .defaultValue(0) .build() )); @@ -93,14 +86,12 @@ public class AutoTool extends Module { private final Setting listMode = sgWhitelist.add(new EnumSetting.Builder() .name("list-mode") - .description("Selection mode.") .defaultValue(ListMode.Blacklist) .build() ); private final Setting> whitelist = sgWhitelist.add(new ItemListSetting.Builder() .name("whitelist") - .description("The tools you want to use.") .visible(() -> listMode.get() == ListMode.Whitelist) .filter(AutoTool::isTool) .build() @@ -108,7 +99,6 @@ public class AutoTool extends Module { private final Setting> blacklist = sgWhitelist.add(new ItemListSetting.Builder() .name("blacklist") - .description("The tools you don't want to use.") .visible(() -> listMode.get() == ListMode.Blacklist) .filter(AutoTool::isTool) .build() @@ -120,7 +110,7 @@ public class AutoTool extends Module { private int bestSlot; public AutoTool() { - super(Categories.Player, "auto-tool", "Automatically switches to the most effective tool when performing an action."); + super(Categories.Player, "auto-tool"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/BreakDelay.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/BreakDelay.java index fe0b0f497e..6f683f15f8 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/BreakDelay.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/BreakDelay.java @@ -21,7 +21,6 @@ public class BreakDelay extends Module { private final Setting cooldown = sgGeneral.add(new IntSetting.Builder() .name("cooldown") - .description("Block break cooldown in ticks.") .defaultValue(0) .min(0) .sliderMax(5) @@ -30,7 +29,6 @@ public class BreakDelay extends Module { private final Setting noInstaBreak = sgGeneral.add(new BoolSetting.Builder() .name("no-insta-break") - .description("Prevents you from misbreaking blocks if you can instantly break them.") .defaultValue(false) .build() ); @@ -38,7 +36,7 @@ public class BreakDelay extends Module { private boolean breakBlockCooldown = false; public BreakDelay() { - super(Categories.Player, "break-delay", "Changes the delay between breaking blocks."); + super(Categories.Player, "break-delay"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/ChestSwap.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/ChestSwap.java index 8cbeed193c..adfed938bd 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/ChestSwap.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/ChestSwap.java @@ -25,27 +25,24 @@ public class ChestSwap extends Module { private final Setting chestplate = sgGeneral.add(new EnumSetting.Builder() .name("chestplate") - .description("Which type of chestplate to swap to.") .defaultValue(Chestplate.PreferNetherite) .build() ); private final Setting stayOn = sgGeneral.add(new BoolSetting.Builder() .name("stay-on") - .description("Stays on and activates when you turn it off.") .defaultValue(false) .build() ); private final Setting closeInventory = sgGeneral.add(new BoolSetting.Builder() .name("close-inventory") - .description("Sends inventory close after swap.") .defaultValue(true) .build() ); public ChestSwap() { - super(Categories.Player, "chest-swap", "Automatically swaps between a chestplate and an elytra."); + super(Categories.Player, "chest-swap"); } @Override @@ -138,7 +135,7 @@ private void equip(int slot) { @Override public void sendToggledMsg() { if (stayOn.get()) super.sendToggledMsg(); - else if (Config.get().chatFeedback.get() && chatFeedback) info("Triggered (highlight)%s(default).", title); + else if (Config.get().chatFeedback.get() && chatFeedback) info("Triggered (highlight)%s(default).", this.getTitle()); } public enum Chestplate { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/EXPThrower.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/EXPThrower.java index a64f656e02..a86ab6df37 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/EXPThrower.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/EXPThrower.java @@ -16,7 +16,7 @@ public class EXPThrower extends Module { public EXPThrower() { - super(Categories.Player, "exp-thrower", "Automatically throws XP bottles from your hotbar."); + super(Categories.Player, "exp-thrower"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/FakePlayer.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/FakePlayer.java index 9b427a8aed..ec79dfc330 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/FakePlayer.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/FakePlayer.java @@ -21,21 +21,18 @@ public class FakePlayer extends Module { public final Setting name = sgGeneral.add(new StringSetting.Builder() .name("name") - .description("The name of the fake player.") .defaultValue("seasnail8169") .build() ); public final Setting copyInv = sgGeneral.add(new BoolSetting.Builder() .name("copy-inv") - .description("Copies your inventory to the fake player.") .defaultValue(true) .build() ); public final Setting health = sgGeneral.add(new IntSetting.Builder() .name("health") - .description("The fake player's default health.") .defaultValue(20) .min(1) .sliderRange(1, 100) @@ -45,7 +42,7 @@ public class FakePlayer extends Module { private WTable table; public FakePlayer() { - super(Categories.Player, "fake-player", "Spawns a client-side fake player for testing usages. No need to be active."); + super(Categories.Player, "fake-player"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/FastUse.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/FastUse.java index 0a17c7d48a..e6d6870c54 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/FastUse.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/FastUse.java @@ -24,21 +24,18 @@ public enum Mode { private final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("Which items to fast use.") .defaultValue(Mode.All) .build() ); private final Setting> items = sgGeneral.add(new ItemListSetting.Builder() .name("items") - .description("Which items should fast place work on in \"Some\" mode.") .visible(() -> mode.get() == Mode.Some) .build() ); private final Setting blocks = sgGeneral.add(new BoolSetting.Builder() .name("blocks") - .description("Fast-places blocks if the mode is \"Some\" mode.") .visible(() -> mode.get() == Mode.Some) .defaultValue(false) .build() @@ -46,7 +43,6 @@ public enum Mode { private final Setting cooldown = sgGeneral.add(new IntSetting.Builder() .name("cooldown") - .description("Fast-use cooldown in ticks.") .defaultValue(0) .min(0) .sliderMax(4) @@ -54,7 +50,7 @@ public enum Mode { ); public FastUse() { - super(Categories.Player, "fast-use", "Allows you to use items at very high speeds."); + super(Categories.Player, "fast-use"); } public int getItemUseCooldown(ItemStack itemStack) { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/GhostHand.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/GhostHand.java index efd61e216a..71eef7cf1d 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/GhostHand.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/GhostHand.java @@ -23,7 +23,7 @@ public class GhostHand extends Module { private final Set posList = new ObjectOpenHashSet<>(); public GhostHand() { - super(Categories.Player, "ghost-hand", "Opens containers through walls."); + super(Categories.Player, "ghost-hand"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/InstantRebreak.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/InstantRebreak.java index 06766eef18..b1785f7ec2 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/InstantRebreak.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/InstantRebreak.java @@ -25,11 +25,10 @@ public class InstantRebreak extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgRender = settings.createGroup("render"); private final Setting tickDelay = sgGeneral.add(new IntSetting.Builder() .name("delay") - .description("The delay between break attempts.") .defaultValue(0) .min(0) .sliderMax(20) @@ -38,14 +37,12 @@ public class InstantRebreak extends Module { private final Setting pick = sgGeneral.add(new BoolSetting.Builder() .name("only-pick") - .description("Only tries to mine the block if you are holding a pickaxe.") .defaultValue(true) .build() ); private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() .name("rotate") - .description("Faces the block being mined server side.") .defaultValue(true) .build() ); @@ -54,28 +51,24 @@ public class InstantRebreak extends Module { private final Setting render = sgRender.add(new BoolSetting.Builder() .name("render") - .description("Renders an overlay on the block being broken.") .defaultValue(true) .build() ); private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") - .description("The color of the sides of the blocks being rendered.") .defaultValue(new SettingColor(204, 0, 0, 10)) .build() ); private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") - .description("The color of the lines of the blocks being rendered.") .defaultValue(new SettingColor(204, 0, 0, 255)) .build() ); @@ -85,7 +78,7 @@ public class InstantRebreak extends Module { private Direction direction; public InstantRebreak() { - super(Categories.Player, "instant-rebreak", "Instantly re-breaks blocks in the same position."); + super(Categories.Player, "instant-rebreak"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/LiquidInteract.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/LiquidInteract.java index aaea7b351f..b9c649c297 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/LiquidInteract.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/LiquidInteract.java @@ -10,6 +10,6 @@ public class LiquidInteract extends Module { public LiquidInteract() { - super(Categories.Player, "liquid-interact", "Allows you to interact with liquids."); + super(Categories.Player, "liquid-interact"); } } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/MiddleClickExtra.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/MiddleClickExtra.java index ed8f38d0b3..75b059f9d5 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/MiddleClickExtra.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/MiddleClickExtra.java @@ -35,14 +35,12 @@ public class MiddleClickExtra extends Module { private final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("Which item to use when you middle click.") .defaultValue(Mode.Pearl) .build() ); private final Setting message = sgGeneral.add(new BoolSetting.Builder() .name("send-message") - .description("Sends a message when you add a player as a friend.") .defaultValue(false) .visible(() -> mode.get() == Mode.AddFriend) .build() @@ -50,7 +48,6 @@ public class MiddleClickExtra extends Module { private final Setting friendMessage = sgGeneral.add(new StringSetting.Builder() .name("message-to-send") - .description("Message to send when you add a player as a friend (use %player for the player's name)") .defaultValue("/msg %player I just friended you on Meteor.") .visible(() -> mode.get() == Mode.AddFriend) .build() @@ -58,7 +55,6 @@ public class MiddleClickExtra extends Module { private final Setting quickSwap = sgGeneral.add(new BoolSetting.Builder() .name("quick-swap") - .description("Allows you to use items in your inventory by simulating hotbar key presses. May get flagged by anticheats.") .defaultValue(false) .visible(() -> mode.get() != Mode.AddFriend) .build() @@ -66,7 +62,6 @@ public class MiddleClickExtra extends Module { private final Setting swapBack = sgGeneral.add(new BoolSetting.Builder() .name("swap-back") - .description("Swap back to your original slot when you finish using an item.") .defaultValue(false) .visible(() -> mode.get() != Mode.AddFriend && !quickSwap.get()) .build() @@ -74,21 +69,19 @@ public class MiddleClickExtra extends Module { private final Setting disableInCreative = sgGeneral.add(new BoolSetting.Builder() .name("disable-in-creative") - .description("Middle click action is disabled in Creative mode.") .defaultValue(true) .build() ); private final Setting notify = sgGeneral.add(new BoolSetting.Builder() .name("notify") - .description("Notifies you when you do not have the specified item in your hotbar.") .defaultValue(true) .visible(() -> mode.get() != Mode.AddFriend) .build() ); public MiddleClickExtra() { - super(Categories.Player, "middle-click-extra", "Perform various actions when you middle click."); + super(Categories.Player, "middle-click-extra"); } private boolean isUsing; diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/Multitask.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/Multitask.java index 62a5b98abe..45303f4bdb 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/Multitask.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/Multitask.java @@ -16,13 +16,12 @@ public class Multitask extends Module { private final Setting attackingEntities = sgGeneral.add(new BoolSetting.Builder() .name("attacking-entities") - .description("Lets you attack entities while using an item.") .defaultValue(true) .build() ); public Multitask() { - super(Categories.Player, "multitask", "Lets you use items and attack at the same time."); + super(Categories.Player, "multitask"); } public boolean attackingEntities() { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/NameProtect.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/NameProtect.java index 5ba3b14f4b..ceade4289e 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/NameProtect.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/NameProtect.java @@ -17,14 +17,12 @@ public class NameProtect extends Module { private final Setting nameProtect = sgGeneral.add(new BoolSetting.Builder() .name("name-protect") - .description("Hides your name client-side.") .defaultValue(true) .build() ); private final Setting name = sgGeneral.add(new StringSetting.Builder() .name("name") - .description("Name to be replaced with.") .defaultValue("seasnail") .visible(nameProtect::get) .build() @@ -32,7 +30,6 @@ public class NameProtect extends Module { private final Setting skinProtect = sgGeneral.add(new BoolSetting.Builder() .name("skin-protect") - .description("Make players become Steves.") .defaultValue(true) .build() ); @@ -40,7 +37,7 @@ public class NameProtect extends Module { private String username = "If you see this, something is wrong."; public NameProtect() { - super(Categories.Player, "name-protect", "Hide player names and skins."); + super(Categories.Player, "name-protect"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/NoInteract.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/NoInteract.java index 4bea37d511..427539536f 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/NoInteract.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/NoInteract.java @@ -28,40 +28,35 @@ import java.util.Set; public class NoInteract extends Module { - private final SettingGroup sgBlocks = settings.createGroup("Blocks"); - private final SettingGroup sgEntities = settings.createGroup("Entities"); + private final SettingGroup sgBlocks = settings.createGroup("blocks"); + private final SettingGroup sgEntities = settings.createGroup("entities"); // Blocks private final Setting> blockMine = sgBlocks.add(new BlockListSetting.Builder() .name("block-mine") - .description("Cancels block mining.") .build() ); private final Setting blockMineMode = sgBlocks.add(new EnumSetting.Builder() .name("block-mine-mode") - .description("List mode to use for block mine.") .defaultValue(ListMode.BlackList) .build() ); private final Setting> blockInteract = sgBlocks.add(new BlockListSetting.Builder() .name("block-interact") - .description("Cancels block interaction.") .build() ); private final Setting blockInteractMode = sgBlocks.add(new EnumSetting.Builder() .name("block-interact-mode") - .description("List mode to use for block interact.") .defaultValue(ListMode.BlackList) .build() ); private final Setting blockInteractHand = sgBlocks.add(new EnumSetting.Builder() .name("block-interact-hand") - .description("Cancels block interaction if performed by this hand.") .defaultValue(HandMode.None) .build() ); @@ -70,62 +65,54 @@ public class NoInteract extends Module { private final Setting>> entityHit = sgEntities.add(new EntityTypeListSetting.Builder() .name("entity-hit") - .description("Cancel entity hitting.") .onlyAttackable() .build() ); private final Setting entityHitMode = sgEntities.add(new EnumSetting.Builder() .name("entity-hit-mode") - .description("List mode to use for entity hit.") .defaultValue(ListMode.BlackList) .build() ); private final Setting>> entityInteract = sgEntities.add(new EntityTypeListSetting.Builder() .name("entity-interact") - .description("Cancel entity interaction.") .onlyAttackable() .build() ); private final Setting entityInteractMode = sgEntities.add(new EnumSetting.Builder() .name("entity-interact-mode") - .description("List mode to use for entity interact.") .defaultValue(ListMode.BlackList) .build() ); private final Setting entityInteractHand = sgEntities.add(new EnumSetting.Builder() .name("entity-interact-hand") - .description("Cancels entity interaction if performed by this hand.") .defaultValue(HandMode.None) .build() ); private final Setting friends = sgEntities.add(new EnumSetting.Builder() .name("friends") - .description("Friends cancel mode.") .defaultValue(InteractMode.None) .build() ); private final Setting babies = sgEntities.add(new EnumSetting.Builder() .name("babies") - .description("Baby entity cancel mode.") .defaultValue(InteractMode.None) .build() ); private final Setting nametagged = sgEntities.add(new EnumSetting.Builder() .name("nametagged") - .description("Nametagged entity cancel mode.") .defaultValue(InteractMode.None) .build() ); public NoInteract() { - super(Categories.Player, "no-interact", "Blocks interactions with certain types of inputs."); + super(Categories.Player, "no-interact"); } @EventHandler(priority = EventPriority.HIGH) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/NoMiningTrace.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/NoMiningTrace.java index 2d8858b463..a89c4c30b6 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/NoMiningTrace.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/NoMiningTrace.java @@ -22,20 +22,18 @@ public class NoMiningTrace extends Module { private final Setting>> entities = sgGeneral.add(new EntityTypeListSetting.Builder() .name("blacklisted-entities") - .description("Entities you will interact with as normal.") .defaultValue() .build() ); private final Setting onlyWhenHoldingPickaxe = sgGeneral.add(new BoolSetting.Builder() .name("only-when-holding-a-pickaxe") - .description("Whether or not to work only when holding a pickaxe.") .defaultValue(true) .build() ); public NoMiningTrace() { - super(Categories.Player, "no-mining-trace", "Allows you to mine blocks through entities."); + super(Categories.Player, "no-mining-trace"); } public boolean canWork(Entity entity) { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/NoRotate.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/NoRotate.java index bf4bdf24a4..48abe8d3a6 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/NoRotate.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/NoRotate.java @@ -14,7 +14,7 @@ public class NoRotate extends Module { public NoRotate() { - super(Categories.Player, "no-rotate", "Attempts to block rotations sent from server to client."); + super(Categories.Player, "no-rotate"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/NoStatusEffects.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/NoStatusEffects.java index 85e8c3cc0c..be4521722b 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/NoStatusEffects.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/NoStatusEffects.java @@ -19,7 +19,6 @@ public class NoStatusEffects extends Module { private final Setting> blockedEffects = sgGeneral.add(new StatusEffectListSetting.Builder() .name("blocked-effects") - .description("Effects to block.") .defaultValue( LEVITATION.value(), JUMP_BOOST.value(), @@ -30,7 +29,7 @@ public class NoStatusEffects extends Module { ); public NoStatusEffects() { - super(Categories.Player, "no-status-effects", "Blocks specified status effects."); + super(Categories.Player, "no-status-effects"); } public boolean shouldBlock(StatusEffect effect) { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/OffhandCrash.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/OffhandCrash.java index 32900028a3..48db1105bb 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/OffhandCrash.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/OffhandCrash.java @@ -26,14 +26,12 @@ public class OffhandCrash extends Module { private final Setting doCrash = sgGeneral.add(new BoolSetting.Builder() .name("do-crash") - .description("Sends X number of offhand swap sound packets to the server per tick.") .defaultValue(true) .build() ); private final Setting speed = sgGeneral.add(new IntSetting.Builder() .name("speed") - .description("The amount of swaps per tick.") .defaultValue(2000) .min(1) .sliderRange(1, 10000) @@ -43,13 +41,12 @@ public class OffhandCrash extends Module { private final Setting antiCrash = sgGeneral.add(new BoolSetting.Builder() .name("anti-crash") - .description("Attempts to prevent you from crashing yourself.") .defaultValue(true) .build() ); public OffhandCrash() { - super(Categories.Misc, "offhand-crash", "An exploit that can crash other players by swapping back and forth between your main hand and offhand."); + super(Categories.Misc, "offhand-crash"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/Portals.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/Portals.java index bfbcb8e990..02d419ea96 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/Portals.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/Portals.java @@ -10,6 +10,6 @@ public class Portals extends Module { public Portals() { - super(Categories.Player, "portals", "Allows you to use GUIs normally while in a Nether Portal."); + super(Categories.Player, "portals"); } } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/PotionSaver.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/PotionSaver.java index 44e2079955..22f8f054fc 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/PotionSaver.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/PotionSaver.java @@ -23,7 +23,6 @@ public class PotionSaver extends Module { private final Setting> effects = sgGeneral.add(new StatusEffectListSetting.Builder() .name("effects") - .description("The effects to preserve.") .defaultValue( STRENGTH.value(), ABSORPTION.value(), @@ -45,13 +44,12 @@ public class PotionSaver extends Module { public final Setting onlyWhenStationary = sgGeneral.add(new BoolSetting.Builder() .name("only-when-stationary") - .description("Only freezes effects when you aren't moving.") .defaultValue(false) .build() ); public PotionSaver() { - super(Categories.Player, "potion-saver", "Stops potion effects ticking when you stand still."); + super(Categories.Player, "potion-saver"); } public boolean shouldFreeze(StatusEffect effect) { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/Reach.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/Reach.java index b0bc8fe98c..7a7882c0ea 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/Reach.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/Reach.java @@ -19,20 +19,18 @@ public class Reach extends Module { private final Setting blockReach = sgGeneral.add(new DoubleSetting.Builder() .name("extra-block-reach") - .description("The distance to add to your block reach.") .sliderMax(1) .build() ); private final Setting entityReach = sgGeneral.add(new DoubleSetting.Builder() .name("extra-entity-reach") - .description("The distance to add to your entity reach.") .sliderMax(1) .build() ); public Reach() { - super(Categories.Player, "reach", "Gives you super long arms."); + super(Categories.Player, "reach"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/Rotation.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/Rotation.java index 3f5d5fb8bd..57503febb1 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/Rotation.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/Rotation.java @@ -15,21 +15,19 @@ import meteordevelopment.orbit.EventHandler; public class Rotation extends Module { - private final SettingGroup sgYaw = settings.createGroup("Yaw"); - private final SettingGroup sgPitch = settings.createGroup("Pitch"); + private final SettingGroup sgYaw = settings.createGroup("yaw"); + private final SettingGroup sgPitch = settings.createGroup("pitch"); // Yaw private final Setting yawLockMode = sgYaw.add(new EnumSetting.Builder() .name("yaw-lock-mode") - .description("The way in which your yaw is locked.") .defaultValue(LockMode.Simple) .build() ); private final Setting yawAngle = sgYaw.add(new DoubleSetting.Builder() .name("yaw-angle") - .description("Yaw angle in degrees.") .defaultValue(0) .sliderMax(360) .max(360) @@ -41,14 +39,12 @@ public class Rotation extends Module { private final Setting pitchLockMode = sgPitch.add(new EnumSetting.Builder() .name("pitch-lock-mode") - .description("The way in which your pitch is locked.") .defaultValue(LockMode.Simple) .build() ); private final Setting pitchAngle = sgPitch.add(new DoubleSetting.Builder() .name("pitch-angle") - .description("Pitch angle in degrees.") .defaultValue(0) .range(-90, 90) .sliderRange(-90, 90) @@ -57,7 +53,7 @@ public class Rotation extends Module { ); public Rotation() { - super(Categories.Player, "rotation", "Changes/locks your yaw and pitch."); + super(Categories.Player, "rotation"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/SpeedMine.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/SpeedMine.java index 1f5f738693..d9b6d7408d 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/SpeedMine.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/SpeedMine.java @@ -34,7 +34,6 @@ public class SpeedMine extends Module { private final Setting> blocks = sgGeneral.add(new BlockListSetting.Builder() .name("blocks") - .description("Selected blocks.") .filter(block -> block.getHardness() > 0) .visible(() -> mode.get() != Mode.Haste) .build() @@ -42,7 +41,6 @@ public class SpeedMine extends Module { private final Setting blocksFilter = sgGeneral.add(new EnumSetting.Builder() .name("blocks-filter") - .description("How to use the blocks setting.") .defaultValue(ListMode.Blacklist) .visible(() -> mode.get() != Mode.Haste) .build() @@ -50,7 +48,6 @@ public class SpeedMine extends Module { public final Setting modifier = sgGeneral.add(new DoubleSetting.Builder() .name("modifier") - .description("Mining speed modifier. An additional value of 0.2 is equivalent to one haste level (1.2 = haste 1).") .defaultValue(1.4) .visible(() -> mode.get() == Mode.Normal) .min(0) @@ -59,7 +56,6 @@ public class SpeedMine extends Module { private final Setting hasteAmplifier = sgGeneral.add(new IntSetting.Builder() .name("haste-amplifier") - .description("What value of haste to give you. Above 2 not recommended.") .defaultValue(2) .min(1) .visible(() -> mode.get() == Mode.Haste) @@ -69,7 +65,6 @@ public class SpeedMine extends Module { private final Setting instamine = sgGeneral.add(new BoolSetting.Builder() .name("instamine") - .description("Whether or not to instantly mine blocks under certain conditions.") .defaultValue(true) .visible(() -> mode.get() == Mode.Damage) .build() @@ -77,14 +72,13 @@ public class SpeedMine extends Module { private final Setting grimBypass = sgGeneral.add(new BoolSetting.Builder() .name("grim-bypass") - .description("Bypasses Grim's fastbreak check, working as of 2.3.58") .defaultValue(false) .visible(() -> mode.get() == Mode.Damage) .build() ); public SpeedMine() { - super(Categories.Player, "speed-mine", "Allows you to quickly mine blocks."); + super(Categories.Player, "speed-mine"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BetterTab.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BetterTab.java index ac4ed36104..e83253e26c 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BetterTab.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BetterTab.java @@ -26,7 +26,6 @@ public class BetterTab extends Module { public final Setting tabSize = sgGeneral.add(new IntSetting.Builder() .name("tablist-size") - .description("How many players in total to display in the tablist.") .defaultValue(100) .min(1) .sliderRange(1, 1000) @@ -35,7 +34,6 @@ public class BetterTab extends Module { public final Setting tabHeight = sgGeneral.add(new IntSetting.Builder() .name("column-height") - .description("How many players to display in each column.") .defaultValue(20) .min(1) .sliderRange(1, 1000) @@ -44,14 +42,12 @@ public class BetterTab extends Module { private final Setting self = sgGeneral.add(new BoolSetting.Builder() .name("highlight-self") - .description("Highlights yourself in the tablist.") .defaultValue(true) .build() ); private final Setting selfColor = sgGeneral.add(new ColorSetting.Builder() .name("self-color") - .description("The color to highlight your name with.") .defaultValue(new SettingColor(250, 130, 30)) .visible(self::get) .build() @@ -59,28 +55,25 @@ public class BetterTab extends Module { private final Setting friends = sgGeneral.add(new BoolSetting.Builder() .name("highlight-friends") - .description("Highlights friends in the tablist.") .defaultValue(true) .build() ); public final Setting accurateLatency = sgGeneral.add(new BoolSetting.Builder() .name("accurate-latency") - .description("Shows latency as a number in the tablist.") .defaultValue(true) .build() ); private final Setting gamemode = sgGeneral.add(new BoolSetting.Builder() .name("gamemode") - .description("Display gamemode next to the nick.") .defaultValue(false) .build() ); public BetterTab() { - super(Categories.Render, "better-tab", "Various improvements to the tab list."); + super(Categories.Render, "better-tab"); } public Text getPlayerName(PlayerListEntry playerListEntry) { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BetterTooltips.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BetterTooltips.java index 11b39e6c16..3aacb344e3 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BetterTooltips.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BetterTooltips.java @@ -58,15 +58,14 @@ public class BetterTooltips extends Module { public static final Color ECHEST_COLOR = new Color(0, 50, 50); private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgPreviews = settings.createGroup("Previews"); - private final SettingGroup sgOther = settings.createGroup("Other"); - private final SettingGroup sgHideFlags = settings.createGroup("Hide Flags"); + private final SettingGroup sgPreviews = settings.createGroup("previews"); + private final SettingGroup sgOther = settings.createGroup("other"); + private final SettingGroup sgHideFlags = settings.createGroup("hide-flags"); // General private final Setting displayWhen = sgGeneral.add(new EnumSetting.Builder() .name("display-when") - .description("When to display previews.") .defaultValue(DisplayWhen.Keybind) .onChanged(value -> updateTooltips = true) .build() @@ -74,7 +73,6 @@ public class BetterTooltips extends Module { private final Setting keybind = sgGeneral.add(new KeybindSetting.Builder() .name("keybind") - .description("The bind for keybind mode.") .defaultValue(Keybind.fromKey(GLFW_KEY_LEFT_ALT)) .visible(() -> displayWhen.get() == DisplayWhen.Keybind) .onChanged(value -> updateTooltips = true) @@ -83,14 +81,12 @@ public class BetterTooltips extends Module { private final Setting openContents = sgGeneral.add(new BoolSetting.Builder() .name("open-contents") - .description("Opens a GUI window with the inventory of the storage block or book when you click the item.") .defaultValue(true) .build() ); private final Setting openContentsKey = sgGeneral.add(new KeybindSetting.Builder() .name("keybind") - .description("Key to open contents (containers, books, etc.) when pressed on items.") .defaultValue(Keybind.fromButton(GLFW_MOUSE_BUTTON_MIDDLE)) .visible(openContents::get) .build() @@ -98,7 +94,6 @@ public class BetterTooltips extends Module { private final Setting pauseInCreative = sgGeneral.add(new BoolSetting.Builder() .name("pause-in-creative") - .description("Pauses middle click open while the player is in creative mode.") .defaultValue(true) .visible(openContents::get) .build() @@ -108,7 +103,6 @@ public class BetterTooltips extends Module { private final Setting shulkers = sgPreviews.add(new BoolSetting.Builder() .name("containers") - .description("Shows a preview of a containers when hovering over it in an inventory.") .defaultValue(true) .onChanged(value -> updateTooltips = true) .build() @@ -116,14 +110,12 @@ public class BetterTooltips extends Module { private final Setting shulkerCompactTooltip = sgPreviews.add(new BoolSetting.Builder() .name("compact-shulker-tooltip") - .description("Compacts the lines of the shulker tooltip.") .defaultValue(true) .build() ); private final Setting echest = sgPreviews.add(new BoolSetting.Builder() .name("echests") - .description("Shows a preview of your echest when hovering over it in an inventory.") .defaultValue(true) .onChanged(value -> updateTooltips = true) .build() @@ -131,7 +123,6 @@ public class BetterTooltips extends Module { private final Setting maps = sgPreviews.add(new BoolSetting.Builder() .name("maps") - .description("Shows a preview of a map when hovering over it in an inventory.") .defaultValue(true) .onChanged(value -> updateTooltips = true) .build() @@ -139,7 +130,6 @@ public class BetterTooltips extends Module { public final Setting mapsScale = sgPreviews.add(new DoubleSetting.Builder() .name("map-scale") - .description("The scale of the map preview.") .defaultValue(1) .min(0.001) .sliderMax(1) @@ -149,7 +139,6 @@ public class BetterTooltips extends Module { private final Setting books = sgPreviews.add(new BoolSetting.Builder() .name("books") - .description("Shows contents of a book when hovering over it in an inventory.") .defaultValue(true) .onChanged(value -> updateTooltips = true) .build() @@ -157,7 +146,6 @@ public class BetterTooltips extends Module { private final Setting banners = sgPreviews.add(new BoolSetting.Builder() .name("banners") - .description("Shows banners' patterns when hovering over it in an inventory. Also works with shields.") .defaultValue(true) .onChanged(value -> updateTooltips = true) .build() @@ -165,7 +153,6 @@ public class BetterTooltips extends Module { private final Setting entitiesInBuckets = sgPreviews.add(new BoolSetting.Builder() .name("entities-in-buckets") - .description("Shows entities in buckets when hovering over it in an inventory.") .defaultValue(true) .onChanged(value -> updateTooltips = true) .build() @@ -173,7 +160,6 @@ public class BetterTooltips extends Module { private final Setting bundles = sgPreviews.add(new BoolSetting.Builder() .name("bundles") - .description("Shows a preview of bundle contents when hovering over it in an inventory.") .defaultValue(true) .onChanged(value -> updateTooltips = true) .build() @@ -181,7 +167,6 @@ public class BetterTooltips extends Module { private final Setting foodInfo = sgPreviews.add(new BoolSetting.Builder() .name("food-info") - .description("Shows hunger and saturation values for food items.") .defaultValue(true) .onChanged(value -> updateTooltips = true) .build() @@ -191,7 +176,6 @@ public class BetterTooltips extends Module { public final Setting byteSize = sgOther.add(new BoolSetting.Builder() .name("byte-size") - .description("Displays an item's size in bytes in the tooltip.") .defaultValue(true) .onChanged(value -> updateTooltips = true) .build() @@ -199,7 +183,6 @@ public class BetterTooltips extends Module { private final Setting sizeType = sgOther.add(new EnumSetting.Builder() .name("byte-size-format") - .description("The format by which to display the item's byte size.") .defaultValue(SortSize.Dynamic) .visible(byteSize::get) .build() @@ -207,7 +190,6 @@ public class BetterTooltips extends Module { private final Setting statusEffects = sgOther.add(new BoolSetting.Builder() .name("status-effects") - .description("Adds list of status effects to tooltips of food items.") .defaultValue(true) .onChanged(value -> updateTooltips = true) .build() @@ -217,14 +199,12 @@ public class BetterTooltips extends Module { public final Setting tooltip = sgHideFlags.add(new BoolSetting.Builder() .name("tooltip") - .description("Show the tooltip when it's hidden.") .defaultValue(false) .build() ); public final Setting additional = sgHideFlags.add(new BoolSetting.Builder() .name("tooltip-components") - .description("Shows tooltip components when they're hidden - e.g. enchantments, attributes, lore, etc.") .defaultValue(false) .build() ); @@ -234,7 +214,7 @@ public class BetterTooltips extends Module { private static final ItemStack[] PEEK_SCREEN = new ItemStack[27]; public BetterTooltips() { - super(Categories.Render, "better-tooltips", "Displays more useful tooltips for certain items."); + super(Categories.Render, "better-tooltips"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BlockSelection.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BlockSelection.java index a45948b7bc..a3ea51577c 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BlockSelection.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BlockSelection.java @@ -24,48 +24,42 @@ public class BlockSelection extends Module { private final Setting advanced = sgGeneral.add(new BoolSetting.Builder() .name("advanced") - .description("Shows a more advanced outline on different types of shape blocks.") .defaultValue(true) .build() ); private final Setting oneSide = sgGeneral.add(new BoolSetting.Builder() .name("single-side") - .description("Only renders the side you are looking at.") .defaultValue(false) .build() ); private final Setting shapeMode = sgGeneral.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); private final Setting sideColor = sgGeneral.add(new ColorSetting.Builder() .name("side-color") - .description("The side color.") .defaultValue(new SettingColor(255, 255, 255, 50)) .build() ); private final Setting lineColor = sgGeneral.add(new ColorSetting.Builder() .name("line-color") - .description("The line color.") .defaultValue(new SettingColor(255, 255, 255, 255)) .build() ); private final Setting hideInside = sgGeneral.add(new BoolSetting.Builder() .name("hide-when-inside-block") - .description("Hide selection when inside target block.") .defaultValue(true) .build() ); public BlockSelection() { - super(Categories.Render, "block-selection", "Modifies how your block selection is rendered."); + super(Categories.Render, "block-selection"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Blur.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Blur.java index 0d59260b42..eacf2251dd 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Blur.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Blur.java @@ -37,7 +37,7 @@ public class Blur extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgScreens = settings.createGroup("Screens"); + private final SettingGroup sgScreens = settings.createGroup("screens"); // Strength-Levels from https://github.com/jonaburg/picom/blob/a8445684fe18946604848efb73ace9457b29bf80/src/backend/backend_common.c#L372 private final IntFloatImmutablePair[] strengths = new IntFloatImmutablePair[]{ @@ -66,7 +66,6 @@ public class Blur extends Module { // General private final Setting strength = sgGeneral.add(new IntSetting.Builder() .name("strength") - .description("How strong the blur should be.") .defaultValue(5) .min(1) .max(20) @@ -76,7 +75,6 @@ public class Blur extends Module { private final Setting fadeTime = sgGeneral.add(new IntSetting.Builder() .name("fade-time") - .description("How long the fade will last in milliseconds.") .defaultValue(100) .min(0) .sliderMax(500) @@ -87,27 +85,23 @@ public class Blur extends Module { private final Setting meteor = sgScreens.add(new BoolSetting.Builder() .name("meteor") - .description("Applies blur to Meteor screens.") .defaultValue(true) .build()); private final Setting inventories = sgScreens.add(new BoolSetting.Builder() .name("inventories") - .description("Applies blur to inventory screens.") .defaultValue(true) .build() ); private final Setting chat = sgScreens.add(new BoolSetting.Builder() .name("chat") - .description("Applies blur when in chat.") .defaultValue(false) .build() ); private final Setting other = sgScreens.add(new BoolSetting.Builder() .name("other") - .description("Applies blur to all other screen types.") .defaultValue(true) .build() ); @@ -120,7 +114,7 @@ public class Blur extends Module { private float previousOffset = -1; public Blur() { - super(Categories.Render, "blur", "Blurs background when in GUI screens."); + super(Categories.Render, "blur"); // Initialize fbos for the first time for (int i = 0; i < fbos.length; i++) { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BossStack.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BossStack.java index 31b16db480..bab2265ea9 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BossStack.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BossStack.java @@ -25,21 +25,18 @@ public class BossStack extends Module { public final Setting stack = sgGeneral.add(new BoolSetting.Builder() .name("stack") - .description("Stacks boss bars and adds a counter to the text.") .defaultValue(true) .build() ); public final Setting hideName = sgGeneral.add(new BoolSetting.Builder() .name("hide-name") - .description("Hides the names of boss bars.") .defaultValue(false) .build() ); private final Setting spacing = sgGeneral.add(new DoubleSetting.Builder() .name("bar-spacing") - .description("The spacing reduction between each boss bar.") .defaultValue(10) .min(0) .build() @@ -48,7 +45,7 @@ public class BossStack extends Module { public static final Map barMap = new WeakHashMap<>(); public BossStack() { - super(Categories.Render, "boss-stack", "Stacks boss bars to make your HUD less cluttered."); + super(Categories.Render, "boss-stack"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Breadcrumbs.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Breadcrumbs.java index 548423bb9a..cf33e33b72 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Breadcrumbs.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Breadcrumbs.java @@ -23,14 +23,12 @@ public class Breadcrumbs extends Module { private final Setting color = sgGeneral.add(new ColorSetting.Builder() .name("color") - .description("The color of the Breadcrumbs trail.") .defaultValue(new SettingColor(225, 25, 25)) .build() ); private final Setting maxSections = sgGeneral.add(new IntSetting.Builder() .name("max-sections") - .description("The maximum number of sections.") .defaultValue(1000) .min(1) .sliderRange(1, 5000) @@ -39,7 +37,6 @@ public class Breadcrumbs extends Module { private final Setting sectionLength = sgGeneral.add(new DoubleSetting.Builder() .name("section-length") - .description("The section length in blocks.") .defaultValue(0.5) .min(0) .sliderMax(1) @@ -54,7 +51,7 @@ public class Breadcrumbs extends Module { private DimensionType lastDimension; public Breadcrumbs() { - super(Categories.Render, "breadcrumbs", "Displays a trail behind where you have walked."); + super(Categories.Render, "breadcrumbs"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BreakIndicators.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BreakIndicators.java index cfc126e643..98b9e32642 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BreakIndicators.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BreakIndicators.java @@ -32,28 +32,24 @@ public class BreakIndicators extends Module { private final Setting shapeMode = sgGeneral.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); public final Setting packetMine = sgGeneral.add(new BoolSetting.Builder() .name("packet-mine") - .description("Whether or not to render blocks being packet mined.") .defaultValue(true) .build() ); private final Setting startColor = sgGeneral.add(new ColorSetting.Builder() .name("start-color") - .description("The color for the non-broken block.") .defaultValue(new SettingColor(25, 252, 25, 150)) .build() ); private final Setting endColor = sgGeneral.add(new ColorSetting.Builder() .name("end-color") - .description("The color for the fully-broken block.") .defaultValue(new SettingColor(255, 25, 25, 150)) .build() ); @@ -62,7 +58,7 @@ public class BreakIndicators extends Module { private final Color cLines = new Color(); public BreakIndicators() { - super(Categories.Render, "break-indicators", "Renders the progress of a block being broken."); + super(Categories.Render, "break-indicators"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/CameraTweaks.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/CameraTweaks.java index 6dcbccda95..dbd9b8857f 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/CameraTweaks.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/CameraTweaks.java @@ -17,20 +17,18 @@ public class CameraTweaks extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgScrolling = settings.createGroup("Scrolling"); + private final SettingGroup sgScrolling = settings.createGroup("scrolling"); // General private final Setting clip = sgGeneral.add(new BoolSetting.Builder() .name("clip") - .description("Allows the camera to clip through blocks.") .defaultValue(true) .build() ); private final Setting cameraDistance = sgGeneral.add(new DoubleSetting.Builder() .name("camera-distance") - .description("The distance the third person camera is from the player.") .defaultValue(4) .min(0) .onChanged(value -> distance = value) @@ -41,14 +39,12 @@ public class CameraTweaks extends Module { private final Setting scrollingEnabled = sgScrolling.add(new BoolSetting.Builder() .name("scrolling") - .description("Allows you to scroll to change camera distance.") .defaultValue(true) .build() ); private final Setting scrollKeybind = sgScrolling.add(new KeybindSetting.Builder() .name("bind") - .description("Binds camera distance scrolling to a key.") .visible(scrollingEnabled::get) .defaultValue(Keybind.fromKey(GLFW.GLFW_KEY_LEFT_ALT)) .build() @@ -56,7 +52,6 @@ public class CameraTweaks extends Module { private final Setting scrollSensitivity = sgScrolling.add(new DoubleSetting.Builder() .name("sensitivity") - .description("Sensitivity of the scroll wheel when changing the cameras distance.") .visible(scrollingEnabled::get) .defaultValue(1) .min(0.01) @@ -66,7 +61,7 @@ public class CameraTweaks extends Module { public double distance; public CameraTweaks() { - super(Categories.Render, "camera-tweaks", "Allows modification of the third person camera."); + super(Categories.Render, "camera-tweaks"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Chams.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Chams.java index b1cf4e20de..57f8f8827b 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Chams.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Chams.java @@ -17,30 +17,27 @@ import java.util.Set; public class Chams extends Module { - private final SettingGroup sgThroughWalls = settings.createGroup("Through Walls"); - private final SettingGroup sgPlayers = settings.createGroup("Players"); - private final SettingGroup sgCrystals = settings.createGroup("Crystals"); - private final SettingGroup sgHand = settings.createGroup("Hand"); + private final SettingGroup sgThroughWalls = settings.createGroup("through-walls"); + private final SettingGroup sgPlayers = settings.createGroup("players"); + private final SettingGroup sgCrystals = settings.createGroup("crystals"); + private final SettingGroup sgHand = settings.createGroup("hand"); // Through walls public final Setting>> entities = sgThroughWalls.add(new EntityTypeListSetting.Builder() .name("entities") - .description("Select entities to show through walls.") .onlyAttackable() .build() ); public final Setting shader = sgThroughWalls.add(new EnumSetting.Builder() .name("shader") - .description("Renders a shader over of the entities.") .defaultValue(Shader.Image) .build() ); public final Setting shaderColor = sgThroughWalls.add(new ColorSetting.Builder() .name("color") - .description("The color that the shader is drawn with.") .defaultValue(new SettingColor(255, 255, 255, 150)) .visible(() -> shader.get() != Shader.None) .build() @@ -48,7 +45,6 @@ public class Chams extends Module { public final Setting ignoreSelfDepth = sgThroughWalls.add(new BoolSetting.Builder() .name("ignore-self") - .description("Ignores yourself drawing the player.") .defaultValue(true) .build() ); @@ -57,14 +53,12 @@ public class Chams extends Module { public final Setting players = sgPlayers.add(new BoolSetting.Builder() .name("players") - .description("Enables model tweaks for players.") .defaultValue(false) .build() ); public final Setting ignoreSelf = sgPlayers.add(new BoolSetting.Builder() .name("ignore-self") - .description("Ignores yourself when tweaking player models.") .defaultValue(false) .visible(players::get) .build() @@ -72,7 +66,6 @@ public class Chams extends Module { public final Setting playersTexture = sgPlayers.add(new BoolSetting.Builder() .name("texture") - .description("Enables player model textures.") .defaultValue(false) .visible(players::get) .build() @@ -80,7 +73,6 @@ public class Chams extends Module { public final Setting playersColor = sgPlayers.add(new ColorSetting.Builder() .name("color") - .description("The color of player models.") .defaultValue(new SettingColor(198, 135, 254, 150)) .visible(players::get) .build() @@ -88,7 +80,6 @@ public class Chams extends Module { public final Setting playersScale = sgPlayers.add(new DoubleSetting.Builder() .name("scale") - .description("Players scale.") .defaultValue(1.0) .min(0.0) .visible(players::get) @@ -99,14 +90,12 @@ public class Chams extends Module { public final Setting crystals = sgCrystals.add(new BoolSetting.Builder() .name("crystals") - .description("Enables model tweaks for end crystals.") .defaultValue(false) .build() ); public final Setting crystalsScale = sgCrystals.add(new DoubleSetting.Builder() .name("scale") - .description("Crystal scale.") .defaultValue(0.6) .min(0) .visible(crystals::get) @@ -115,7 +104,6 @@ public class Chams extends Module { public final Setting crystalsBounce = sgCrystals.add(new DoubleSetting.Builder() .name("bounce") - .description("How high crystals bounce.") .defaultValue(0.6) .min(0.0) .visible(crystals::get) @@ -124,7 +112,6 @@ public class Chams extends Module { public final Setting crystalsRotationSpeed = sgCrystals.add(new DoubleSetting.Builder() .name("rotation-speed") - .description("Multiplies the rotation speed of the crystal.") .defaultValue(0.3) .min(0) .visible(crystals::get) @@ -133,7 +120,6 @@ public class Chams extends Module { public final Setting crystalsTexture = sgCrystals.add(new BoolSetting.Builder() .name("texture") - .description("Whether to render crystal model textures.") .defaultValue(true) .visible(crystals::get) .build() @@ -141,7 +127,6 @@ public class Chams extends Module { public final Setting crystalsColor = sgCrystals.add(new ColorSetting.Builder() .name("crystal-color") - .description("The color of the of the crystal.") .defaultValue(new SettingColor(198, 135, 254, 255)) .visible(crystals::get) .build() @@ -151,14 +136,12 @@ public class Chams extends Module { public final Setting hand = sgHand.add(new BoolSetting.Builder() .name("enabled") - .description("Enables tweaks of hand rendering.") .defaultValue(false) .build() ); public final Setting handTexture = sgHand.add(new BoolSetting.Builder() .name("texture") - .description("Whether to render hand textures.") .defaultValue(false) .visible(hand::get) .build() @@ -166,7 +149,6 @@ public class Chams extends Module { public final Setting handColor = sgHand.add(new ColorSetting.Builder() .name("hand-color") - .description("The color of your hand.") .defaultValue(new SettingColor(198, 135, 254, 150)) .visible(hand::get) .build() @@ -175,7 +157,7 @@ public class Chams extends Module { public static final Identifier BLANK = MeteorClient.identifier("textures/blank.png"); public Chams() { - super(Categories.Render, "chams", "Tweaks rendering of entities."); + super(Categories.Render, "chams"); } public boolean shouldRender(Entity entity) { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/CityESP.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/CityESP.java index 6d9816db96..ff809525eb 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/CityESP.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/CityESP.java @@ -23,27 +23,24 @@ import net.minecraft.util.math.BlockPos; public class CityESP extends Module { - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgRender = settings.createGroup("render"); // Render private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") - .description("The side color of the rendering.") .defaultValue(new SettingColor(225, 0, 0, 75)) .build() ); private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") - .description("The line color of the rendering.") .defaultValue(new SettingColor(225, 0, 0, 255)) .build() ); @@ -51,7 +48,7 @@ public class CityESP extends Module { private BlockPos target; public CityESP() { - super(Categories.Render, "city-esp", "Displays blocks that can be broken in order to city another player."); + super(Categories.Render, "city-esp"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/ESP.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/ESP.java index 796ca5dd4d..28dfa43eb6 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/ESP.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/ESP.java @@ -33,27 +33,24 @@ public class ESP extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgColors = settings.createGroup("Colors"); + private final SettingGroup sgColors = settings.createGroup("colors"); // General public final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("Rendering mode.") .defaultValue(Mode.Shader) .build() ); public final Setting highlightTarget = sgGeneral.add(new BoolSetting.Builder() .name("highlight-target") - .description("highlights the currently targeted entity differently") .defaultValue(false) .build() ); public final Setting targetHitbox = sgGeneral.add(new BoolSetting.Builder() .name("target-hitbox") - .description("draw the hitbox of the target entity") .defaultValue(true) .visible(highlightTarget::get) .build() @@ -61,7 +58,6 @@ public class ESP extends Module { public final Setting outlineWidth = sgGeneral.add(new IntSetting.Builder() .name("outline-width") - .description("The width of the shader outline.") .visible(() -> mode.get() == Mode.Shader) .defaultValue(2) .range(1, 10) @@ -71,7 +67,6 @@ public class ESP extends Module { public final Setting glowMultiplier = sgGeneral.add(new DoubleSetting.Builder() .name("glow-multiplier") - .description("Multiplier for glow effect") .visible(() -> mode.get() == Mode.Shader) .decimalPlaces(3) .defaultValue(3.5) @@ -82,14 +77,12 @@ public class ESP extends Module { public final Setting ignoreSelf = sgGeneral.add(new BoolSetting.Builder() .name("ignore-self") - .description("Ignores yourself drawing the shader.") .defaultValue(true) .build() ); public final Setting shapeMode = sgGeneral.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .visible(() -> mode.get() != Mode.Glow) .defaultValue(ShapeMode.Both) .build() @@ -97,7 +90,6 @@ public class ESP extends Module { public final Setting fillOpacity = sgGeneral.add(new DoubleSetting.Builder() .name("fill-opacity") - .description("The opacity of the shape fill.") .visible(() -> shapeMode.get() != ShapeMode.Lines && mode.get() != Mode.Glow) .defaultValue(0.3) .range(0, 1) @@ -107,7 +99,6 @@ public class ESP extends Module { private final Setting fadeDistance = sgGeneral.add(new DoubleSetting.Builder() .name("fade-distance") - .description("The distance from an entity where the color begins to fade.") .defaultValue(3) .min(0) .sliderMax(12) @@ -116,7 +107,6 @@ public class ESP extends Module { private final Setting>> entities = sgGeneral.add(new EntityTypeListSetting.Builder() .name("entities") - .description("Select specific entities.") .defaultValue(EntityType.PLAYER) .build() ); @@ -125,14 +115,12 @@ public class ESP extends Module { public final Setting distance = sgColors.add(new BoolSetting.Builder() .name("distance-colors") - .description("Changes the color of tracers depending on distance.") .defaultValue(false) .build() ); public final Setting friendOverride = sgColors.add(new BoolSetting.Builder() .name("show-friend-colors") - .description("Whether or not to override the distance color of friends with the friend color.") .defaultValue(true) .visible(distance::get) .build() @@ -140,7 +128,6 @@ public class ESP extends Module { private final Setting playersColor = sgColors.add(new ColorSetting.Builder() .name("players-color") - .description("The other player's color.") .defaultValue(new SettingColor(255, 255, 255)) .visible(() -> !distance.get()) .build() @@ -148,7 +135,6 @@ public class ESP extends Module { private final Setting animalsColor = sgColors.add(new ColorSetting.Builder() .name("animals-color") - .description("The animal's color.") .defaultValue(new SettingColor(25, 255, 25, 255)) .visible(() -> !distance.get()) .build() @@ -156,7 +142,6 @@ public class ESP extends Module { private final Setting waterAnimalsColor = sgColors.add(new ColorSetting.Builder() .name("water-animals-color") - .description("The water animal's color.") .defaultValue(new SettingColor(25, 25, 255, 255)) .visible(() -> !distance.get()) .build() @@ -164,7 +149,6 @@ public class ESP extends Module { private final Setting monstersColor = sgColors.add(new ColorSetting.Builder() .name("monsters-color") - .description("The monster's color.") .defaultValue(new SettingColor(255, 25, 25, 255)) .visible(() -> !distance.get()) .build() @@ -172,7 +156,6 @@ public class ESP extends Module { private final Setting ambientColor = sgColors.add(new ColorSetting.Builder() .name("ambient-color") - .description("The ambient's color.") .defaultValue(new SettingColor(25, 25, 25, 255)) .visible(() -> !distance.get()) .build() @@ -180,7 +163,6 @@ public class ESP extends Module { private final Setting miscColor = sgColors.add(new ColorSetting.Builder() .name("misc-color") - .description("The misc color.") .defaultValue(new SettingColor(175, 175, 175, 255)) .visible(() -> !distance.get()) .build() @@ -188,7 +170,6 @@ public class ESP extends Module { private final Setting targetColor = sgColors.add(new ColorSetting.Builder() .name("target-color") - .description("The target color.") .defaultValue(new SettingColor(200, 200, 200, 255)) .visible(highlightTarget::get) .build() @@ -196,7 +177,6 @@ public class ESP extends Module { private final Setting targetHitboxColor = sgColors.add(new ColorSetting.Builder() .name("target-hitbox-color") - .description("The target hitbox color.") .defaultValue(new SettingColor(100, 200, 200, 255)) .visible(() -> highlightTarget.get() && targetHitbox.get()) .build() @@ -213,7 +193,7 @@ public class ESP extends Module { private int count; public ESP() { - super(Categories.Render, "esp", "Renders entities through walls."); + super(Categories.Render, "esp"); } // Box diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/EntityOwner.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/EntityOwner.java index 7e7b8dfb3f..768f2266df 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/EntityOwner.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/EntityOwner.java @@ -41,7 +41,6 @@ public class EntityOwner extends Module { private final Setting scale = sgGeneral.add(new DoubleSetting.Builder() .name("scale") - .description("The scale of the text.") .defaultValue(1) .min(0) .build() @@ -51,7 +50,7 @@ public class EntityOwner extends Module { private final Map uuidToName = new HashMap<>(); public EntityOwner() { - super(Categories.Render, "entity-owner", "Displays the name of the player who owns the entity you're looking at."); + super(Categories.Render, "entity-owner"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/FreeLook.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/FreeLook.java index 8e78bba0e8..4df12afd78 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/FreeLook.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/FreeLook.java @@ -17,27 +17,24 @@ public class FreeLook extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgArrows = settings.createGroup("Arrows"); + private final SettingGroup sgArrows = settings.createGroup("arrows"); // General public final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("Which entity to rotate.") .defaultValue(Mode.Player) .build() ); public final Setting togglePerspective = sgGeneral.add(new BoolSetting.Builder() .name("toggle-perspective") - .description("Changes your perspective on toggle.") .defaultValue(true) .build() ); public final Setting sensitivity = sgGeneral.add(new DoubleSetting.Builder() .name("camera-sensitivity") - .description("How fast the camera moves in camera mode.") .defaultValue(8) .min(0) .sliderMax(10) @@ -48,14 +45,12 @@ public class FreeLook extends Module { public final Setting arrows = sgArrows.add(new BoolSetting.Builder() .name("arrows-control-opposite") - .description("Allows you to control the other entities rotation with the arrow keys.") .defaultValue(true) .build() ); private final Setting arrowSpeed = sgArrows.add(new DoubleSetting.Builder() .name("arrow-speed") - .description("Rotation speed with arrow keys.") .defaultValue(4) .min(0) .build() @@ -67,7 +62,7 @@ public class FreeLook extends Module { private Perspective prePers; public FreeLook() { - super(Categories.Render, "free-look", "Allows more rotation options in third person."); + super(Categories.Render, "free-look"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Freecam.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Freecam.java index a07806d4d1..2472c05a4b 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Freecam.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Freecam.java @@ -51,11 +51,10 @@ public class Freecam extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgPathing = settings.createGroup("Pathing"); + private final SettingGroup sgPathing = settings.createGroup("pathing"); private final Setting speed = sgGeneral.add(new DoubleSetting.Builder() .name("speed") - .description("Your speed while in freecam.") .onChanged(aDouble -> speedValue = aDouble) .defaultValue(1.0) .min(0.0) @@ -64,7 +63,6 @@ public class Freecam extends Module { private final Setting speedScrollSensitivity = sgGeneral.add(new DoubleSetting.Builder() .name("speed-scroll-sensitivity") - .description("Allows you to change speed value using scroll wheel. 0 to disable.") .defaultValue(0) .min(0) .sliderMax(2) @@ -73,70 +71,60 @@ public class Freecam extends Module { private final Setting staySneaking = sgGeneral.add(new BoolSetting.Builder() .name("stay-sneaking") - .description("If you are sneaking when you enter freecam, whether your player should remain sneaking.") .defaultValue(true) .build() ); private final Setting toggleOnDamage = sgGeneral.add(new BoolSetting.Builder() .name("toggle-on-damage") - .description("Disables freecam when you take damage.") .defaultValue(false) .build() ); private final Setting toggleOnDeath = sgGeneral.add(new BoolSetting.Builder() .name("toggle-on-death") - .description("Disables freecam when you die.") .defaultValue(false) .build() ); private final Setting toggleOnLog = sgGeneral.add(new BoolSetting.Builder() .name("toggle-on-log") - .description("Disables freecam when you disconnect from a server.") .defaultValue(true) .build() ); private final Setting reloadChunks = sgGeneral.add(new BoolSetting.Builder() .name("reload-chunks") - .description("Disables cave culling.") .defaultValue(true) .build() ); private final Setting renderHands = sgGeneral.add(new BoolSetting.Builder() .name("show-hands") - .description("Whether or not to render your hands in freecam.") .defaultValue(true) .build() ); private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() .name("rotate") - .description("Rotates to the block or entity you are looking at.") .defaultValue(false) .build() ); private final Setting staticView = sgGeneral.add(new BoolSetting.Builder() .name("static") - .description("Disables settings that move the view.") .defaultValue(true) .build() ); private final Setting baritoneClick = sgPathing.add(new BoolSetting.Builder() .name("click-to-path") - .description("Sets a pathfinding goal to any block/entity you click at.") .defaultValue(false) .build() ); private final Setting requireDoubleClick = sgPathing.add(new BoolSetting.Builder() .name("double-click") - .description("Require two clicks to start pathing.") .defaultValue(false) .build() ); @@ -158,7 +146,7 @@ public class Freecam extends Module { private long clickTs = 0; public Freecam() { - super(Categories.Render, "freecam", "Allows the camera to move away from the player."); + super(Categories.Render, "freecam"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Fullbright.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Fullbright.java index 0dbdb00dfd..edee06e057 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Fullbright.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Fullbright.java @@ -24,7 +24,6 @@ public class Fullbright extends Module { public final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("The mode to use for Fullbright.") .defaultValue(Mode.Gamma) .onChanged(mode -> { if (isActive()) { @@ -37,7 +36,6 @@ public class Fullbright extends Module { public final Setting lightType = sgGeneral.add(new EnumSetting.Builder() .name("light-type") - .description("Which type of light to use for Luminance mode.") .defaultValue(LightType.BLOCK) .visible(() -> mode.get() == Mode.Luminance) .onChanged(integer -> { @@ -48,7 +46,6 @@ public class Fullbright extends Module { private final Setting minimumLightLevel = sgGeneral.add(new IntSetting.Builder() .name("minimum-light-level") - .description("Minimum light level when using Luminance mode.") .visible(() -> mode.get() == Mode.Luminance) .defaultValue(8) .range(0, 15) @@ -60,7 +57,7 @@ public class Fullbright extends Module { ); public Fullbright() { - super(Categories.Render, "fullbright", "Lights up your world!"); + super(Categories.Render, "fullbright"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/HandView.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/HandView.java index 214054d993..0d230a04b9 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/HandView.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/HandView.java @@ -19,50 +19,44 @@ public class HandView extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgMainHand = settings.createGroup("Main Hand"); - private final SettingGroup sgOffHand = settings.createGroup("Off Hand"); - private final SettingGroup sgArm = settings.createGroup("Arm"); + private final SettingGroup sgMainHand = settings.createGroup("main-hand"); + private final SettingGroup sgOffHand = settings.createGroup("off-hand"); + private final SettingGroup sgArm = settings.createGroup("arm"); // General private final Setting followRotations = sgGeneral.add(new BoolSetting.Builder() .name("server-rotations") - .description("Makes your hands follow your serverside rotations.") .defaultValue(false) .build() ); public final Setting oldAnimations = sgGeneral.add(new BoolSetting.Builder() .name("old-animations") - .description("Changes hit animations to those like 1.8") .defaultValue(false) .build() ); public final Setting skipSwapping = sgGeneral.add(new BoolSetting.Builder() .name("skip-swapping-animation") - .description("Whether or not to skip the item swapping animation") .defaultValue(false) .build() ); private final Setting disableFoodAnimation = sgGeneral.add(new BoolSetting.Builder() .name("disable-eating-animation") - .description("Disables the eating animation. Potentially desirable if it goes offscreen.") .defaultValue(false) .build() ); public final Setting swingMode = sgGeneral.add(new EnumSetting.Builder() .name("swing-mode") - .description("Modifies your client & server hand swinging.") .defaultValue(SwingMode.None) .build() ); public final Setting swingSpeed = sgGeneral.add(new IntSetting.Builder() .name("swing-speed") - .description("The swing speed of your hands.") .defaultValue(6) .range(0, 20) .sliderMax(20) @@ -71,7 +65,6 @@ public class HandView extends Module { public final Setting mainSwing = sgGeneral.add(new DoubleSetting.Builder() .name("main-hand-progress") - .description("The swing progress of your main hand.") .defaultValue(0) .range(0, 1) .sliderMax(1) @@ -80,7 +73,6 @@ public class HandView extends Module { public final Setting offSwing = sgGeneral.add(new DoubleSetting.Builder() .name("off-hand-progress") - .description("The swing progress of your off hand.") .defaultValue(0) .range(0, 1) .sliderMax(1) @@ -91,7 +83,6 @@ public class HandView extends Module { private final Setting scaleMain = sgMainHand.add(new Vector3dSetting.Builder() .name("scale") - .description("The scale of your main hand.") .defaultValue(1, 1, 1) .sliderMax(5) .decimalPlaces(1) @@ -100,7 +91,6 @@ public class HandView extends Module { private final Setting posMain = sgMainHand.add(new Vector3dSetting.Builder() .name("position") - .description("The position of your main hand.") .defaultValue(0, 0, 0) .sliderRange(-3, 3) .decimalPlaces(1) @@ -109,7 +99,6 @@ public class HandView extends Module { private final Setting rotMain = sgMainHand.add(new Vector3dSetting.Builder() .name("rotation") - .description("The rotation of your main hand.") .defaultValue(0, 0, 0) .sliderRange(-180, 180) .decimalPlaces(0) @@ -120,7 +109,6 @@ public class HandView extends Module { private final Setting scaleOff = sgOffHand.add(new Vector3dSetting.Builder() .name("scale") - .description("The scale of your off hand.") .defaultValue(1, 1, 1) .sliderMax(5) .decimalPlaces(1) @@ -129,7 +117,6 @@ public class HandView extends Module { private final Setting posOff = sgOffHand.add(new Vector3dSetting.Builder() .name("position") - .description("The position of your off hand.") .defaultValue(0, 0, 0) .sliderRange(-3, 3) .decimalPlaces(1) @@ -138,7 +125,6 @@ public class HandView extends Module { private final Setting rotOff = sgOffHand.add(new Vector3dSetting.Builder() .name("rotation") - .description("The rotation of your off hand.") .defaultValue(0, 0, 0) .sliderRange(-180, 180) .decimalPlaces(0) @@ -172,7 +158,7 @@ public class HandView extends Module { ); public HandView() { - super(Categories.Render, "hand-view", "Alters the way items are rendered in your hands."); + super(Categories.Render, "hand-view"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/HoleESP.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/HoleESP.java index a2893ded8c..db12ec4155 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/HoleESP.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/HoleESP.java @@ -32,13 +32,12 @@ public class HoleESP extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgRender = settings.createGroup("render"); // General private final Setting horizontalRadius = sgGeneral.add(new IntSetting.Builder() .name("horizontal-radius") - .description("Horizontal radius in which to search for holes.") .defaultValue(10) .min(0) .sliderMax(32) @@ -47,7 +46,6 @@ public class HoleESP extends Module { private final Setting verticalRadius = sgGeneral.add(new IntSetting.Builder() .name("vertical-radius") - .description("Vertical radius in which to search for holes.") .defaultValue(5) .min(0) .sliderMax(32) @@ -56,7 +54,6 @@ public class HoleESP extends Module { private final Setting holeHeight = sgGeneral.add(new IntSetting.Builder() .name("min-height") - .description("Minimum hole height required to be rendered.") .defaultValue(3) .min(1) .sliderMin(1) @@ -65,21 +62,18 @@ public class HoleESP extends Module { private final Setting doubles = sgGeneral.add(new BoolSetting.Builder() .name("doubles") - .description("Highlights double holes that can be stood across.") .defaultValue(true) .build() ); private final Setting ignoreOwn = sgGeneral.add(new BoolSetting.Builder() .name("ignore-own") - .description("Ignores rendering the hole you are currently standing in.") .defaultValue(false) .build() ); private final Setting webs = sgGeneral.add(new BoolSetting.Builder() .name("webs") - .description("Whether to show holes that have webs inside of them.") .defaultValue(false) .build() ); @@ -88,14 +82,12 @@ public class HoleESP extends Module { private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); private final Setting height = sgRender.add(new DoubleSetting.Builder() .name("height") - .description("The height of rendering.") .defaultValue(0.2) .min(0) .build() @@ -103,56 +95,48 @@ public class HoleESP extends Module { private final Setting topQuad = sgRender.add(new BoolSetting.Builder() .name("top-quad") - .description("Whether to render a quad at the top of the hole.") .defaultValue(true) .build() ); private final Setting bottomQuad = sgRender.add(new BoolSetting.Builder() .name("bottom-quad") - .description("Whether to render a quad at the bottom of the hole.") .defaultValue(false) .build() ); private final Setting bedrockColorTop = sgRender.add(new ColorSetting.Builder() .name("bedrock-top") - .description("The top color for holes that are completely bedrock.") .defaultValue(new SettingColor(100, 255, 0, 200)) .build() ); private final Setting bedrockColorBottom = sgRender.add(new ColorSetting.Builder() .name("bedrock-bottom") - .description("The bottom color for holes that are completely bedrock.") .defaultValue(new SettingColor(100, 255, 0, 0)) .build() ); private final Setting obsidianColorTop = sgRender.add(new ColorSetting.Builder() .name("obsidian-top") - .description("The top color for holes that are completely obsidian.") .defaultValue(new SettingColor(255, 0, 0, 200)) .build() ); private final Setting obsidianColorBottom = sgRender.add(new ColorSetting.Builder() .name("obsidian-bottom") - .description("The bottom color for holes that are completely obsidian.") .defaultValue(new SettingColor(255, 0, 0, 0)) .build() ); private final Setting mixedColorTop = sgRender.add(new ColorSetting.Builder() .name("mixed-top") - .description("The top color for holes that have mixed bedrock and obsidian.") .defaultValue(new SettingColor(255, 127, 0, 200)) .build() ); private final Setting mixedColorBottom = sgRender.add(new ColorSetting.Builder() .name("mixed-bottom") - .description("The bottom color for holes that have mixed bedrock and obsidian.") .defaultValue(new SettingColor(255, 127, 0, 0)) .build() ); @@ -163,7 +147,7 @@ public class HoleESP extends Module { private final byte NULL = 0; public HoleESP() { - super(Categories.Render, "hole-esp", "Displays holes that you will take less damage in."); + super(Categories.Render, "hole-esp"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/ItemHighlight.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/ItemHighlight.java index 3b4d786bb1..427f25c0bd 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/ItemHighlight.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/ItemHighlight.java @@ -22,19 +22,17 @@ public class ItemHighlight extends Module { private final Setting> items = sgGeneral.add(new ItemListSetting.Builder() .name("items") - .description("Items to highlight.") .build() ); private final Setting color = sgGeneral.add(new ColorSetting.Builder() .name("color") - .description("The color to highlight the items with.") .defaultValue(new SettingColor(225, 25, 255, 50)) .build() ); public ItemHighlight() { - super(Categories.Render, "item-highlight", "Highlights selected items when in guis"); + super(Categories.Render, "item-highlight"); } public int getColor(ItemStack stack) { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/ItemPhysics.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/ItemPhysics.java index 8c979a3977..71033b928d 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/ItemPhysics.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/ItemPhysics.java @@ -35,7 +35,6 @@ public class ItemPhysics extends Module { private final Setting randomRotation = sgGeneral.add(new BoolSetting.Builder() .name("random-rotation") - .description("Adds a random rotation to every item.") .defaultValue(true) .build() ); @@ -44,7 +43,7 @@ public class ItemPhysics extends Module { private boolean skipTransformation; public ItemPhysics() { - super(Categories.Render, "item-physics", "Applies physics to items on the ground."); + super(Categories.Render, "item-physics"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/LightOverlay.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/LightOverlay.java index 2bccfec04b..26c2d7e0e0 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/LightOverlay.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/LightOverlay.java @@ -24,13 +24,12 @@ public class LightOverlay extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgColors = settings.createGroup("Colors"); + private final SettingGroup sgColors = settings.createGroup("colors"); // General private final Setting horizontalRange = sgGeneral.add(new IntSetting.Builder() .name("horizontal-range") - .description("Horizontal range in blocks.") .defaultValue(8) .min(0) .build() @@ -38,7 +37,6 @@ public class LightOverlay extends Module { private final Setting verticalRange = sgGeneral.add(new IntSetting.Builder() .name("vertical-range") - .description("Vertical range in blocks.") .defaultValue(4) .min(0) .build() @@ -46,14 +44,12 @@ public class LightOverlay extends Module { private final Setting seeThroughBlocks = sgGeneral.add(new BoolSetting.Builder() .name("see-through-blocks") - .description("Allows you to see the lines through blocks.") .defaultValue(false) .build() ); private final Setting lightLevel = sgGeneral.add(new IntSetting.Builder() .name("light-level") - .description("Which light levels to render. Old spawning light: 7.") .defaultValue(0) .min(0) .sliderMax(15) @@ -64,14 +60,12 @@ public class LightOverlay extends Module { private final Setting color = sgColors.add(new ColorSetting.Builder() .name("color") - .description("Color of places where mobs can currently spawn.") .defaultValue(new SettingColor(225, 25, 25)) .build() ); private final Setting potentialColor = sgColors.add(new ColorSetting.Builder() .name("potential-color") - .description("Color of places where mobs can potentially spawn (eg at night).") .defaultValue(new SettingColor(225, 225, 25)) .build() ); @@ -80,7 +74,7 @@ public class LightOverlay extends Module { private final List crosses = new ArrayList<>(); public LightOverlay() { - super(Categories.Render, "light-overlay", "Shows blocks where mobs can spawn."); + super(Categories.Render, "light-overlay"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/LogoutSpots.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/LogoutSpots.java index cdfaa7adda..153c369073 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/LogoutSpots.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/LogoutSpots.java @@ -36,13 +36,12 @@ public class LogoutSpots extends Module { private static final Color RED = new Color(225, 25, 25); private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgRender = settings.createGroup("render"); // General private final Setting scale = sgGeneral.add(new DoubleSetting.Builder() .name("scale") - .description("The scale.") .defaultValue(1) .min(0) .build() @@ -50,7 +49,6 @@ public class LogoutSpots extends Module { private final Setting fullHeight = sgGeneral.add(new BoolSetting.Builder() .name("full-height") - .description("Displays the height as the player's full height.") .defaultValue(true) .build() ); @@ -59,35 +57,30 @@ public class LogoutSpots extends Module { private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") - .description("The side color.") .defaultValue(new SettingColor(255, 0, 255, 55)) .build() ); private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") - .description("The line color.") .defaultValue(new SettingColor(255, 0, 255)) .build() ); private final Setting nameColor = sgRender.add(new ColorSetting.Builder() .name("name-color") - .description("The name color.") .defaultValue(new SettingColor(255, 255, 255)) .build() ); private final Setting nameBackgroundColor = sgRender.add(new ColorSetting.Builder() .name("name-background-color") - .description("The name background color.") .defaultValue(new SettingColor(0, 0, 0, 75)) .build() ); @@ -101,7 +94,7 @@ public class LogoutSpots extends Module { private DimensionType lastDimension; public LogoutSpots() { - super(Categories.Render, "logout-spots", "Displays a box where another player has logged out at."); + super(Categories.Render, "logout-spots"); lineColor.onChanged(); } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Nametags.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Nametags.java index 7740d17ae4..78944ccd3c 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Nametags.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Nametags.java @@ -49,22 +49,20 @@ public class Nametags extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgPlayers = settings.createGroup("Players"); - private final SettingGroup sgItems = settings.createGroup("Items"); - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgPlayers = settings.createGroup("players"); + private final SettingGroup sgItems = settings.createGroup("items"); + private final SettingGroup sgRender = settings.createGroup("render"); // General private final Setting>> entities = sgGeneral.add(new EntityTypeListSetting.Builder() .name("entities") - .description("Select entities to draw nametags on.") .defaultValue(EntityType.PLAYER, EntityType.ITEM) .build() ); private final Setting scale = sgGeneral.add(new DoubleSetting.Builder() .name("scale") - .description("The scale of the nametag.") .defaultValue(1.1) .min(0.1) .build() @@ -72,35 +70,30 @@ public class Nametags extends Module { private final Setting ignoreSelf = sgGeneral.add(new BoolSetting.Builder() .name("ignore-self") - .description("Ignore yourself when in third person or freecam.") .defaultValue(true) .build() ); private final Setting ignoreFriends = sgGeneral.add(new BoolSetting.Builder() .name("ignore-friends") - .description("Ignore rendering nametags for friends.") .defaultValue(false) .build() ); private final Setting ignoreBots = sgGeneral.add(new BoolSetting.Builder() .name("ignore-bots") - .description("Only render non-bot nametags.") .defaultValue(true) .build() ); private final Setting culling = sgGeneral.add(new BoolSetting.Builder() .name("culling") - .description("Only render a certain number of nametags at a certain distance.") .defaultValue(false) .build() ); private final Setting maxCullRange = sgGeneral.add(new DoubleSetting.Builder() .name("culling-range") - .description("Only render nametags within this distance of your player.") .defaultValue(20) .min(0) .sliderMax(200) @@ -110,7 +103,6 @@ public class Nametags extends Module { private final Setting maxCullCount = sgGeneral.add(new IntSetting.Builder() .name("culling-count") - .description("Only render this many nametags.") .defaultValue(50) .min(1) .sliderRange(1, 100) @@ -122,42 +114,36 @@ public class Nametags extends Module { private final Setting displayHealth = sgPlayers.add(new BoolSetting.Builder() .name("health") - .description("Shows the player's health.") .defaultValue(true) .build() ); private final Setting displayGameMode = sgPlayers.add(new BoolSetting.Builder() .name("gamemode") - .description("Shows the player's GameMode.") .defaultValue(false) .build() ); private final Setting displayDistance = sgPlayers.add(new BoolSetting.Builder() .name("distance") - .description("Shows the distance between you and the player.") .defaultValue(false) .build() ); private final Setting displayPing = sgPlayers.add(new BoolSetting.Builder() .name("ping") - .description("Shows the player's ping.") .defaultValue(true) .build() ); private final Setting displayItems = sgPlayers.add(new BoolSetting.Builder() .name("items") - .description("Displays armor and hand items above the name tags.") .defaultValue(true) .build() ); private final Setting itemSpacing = sgPlayers.add(new DoubleSetting.Builder() .name("item-spacing") - .description("The spacing between items.") .defaultValue(2) .range(0, 10) .visible(displayItems::get) @@ -166,7 +152,6 @@ public class Nametags extends Module { private final Setting ignoreEmpty = sgPlayers.add(new BoolSetting.Builder() .name("ignore-empty-slots") - .description("Doesn't add spacing where an empty item stack would be.") .defaultValue(true) .visible(displayItems::get) .build() @@ -174,7 +159,6 @@ public class Nametags extends Module { private final Setting itemDurability = sgPlayers.add(new EnumSetting.Builder() .name("durability") - .description("Displays item durability as either a total, percentage, or neither.") .defaultValue(Durability.None) .visible(displayItems::get) .build() @@ -182,7 +166,6 @@ public class Nametags extends Module { private final Setting displayEnchants = sgPlayers.add(new BoolSetting.Builder() .name("display-enchants") - .description("Displays item enchantments on the items.") .defaultValue(false) .visible(displayItems::get) .build() @@ -190,7 +173,6 @@ public class Nametags extends Module { private final Setting>> shownEnchantments = sgPlayers.add(new EnchantmentListSetting.Builder() .name("shown-enchantments") - .description("The enchantments that are shown on nametags.") .visible(() -> displayItems.get() && displayEnchants.get()) .defaultValue( Enchantments.PROTECTION, @@ -203,7 +185,6 @@ public class Nametags extends Module { private final Setting enchantPos = sgPlayers.add(new EnumSetting.Builder() .name("enchantment-position") - .description("Where the enchantments are rendered.") .defaultValue(Position.Above) .visible(() -> displayItems.get() && displayEnchants.get()) .build() @@ -211,7 +192,6 @@ public class Nametags extends Module { private final Setting enchantLength = sgPlayers.add(new IntSetting.Builder() .name("enchant-name-length") - .description("The length enchantment names are trimmed to.") .defaultValue(3) .range(1, 5) .sliderRange(1, 5) @@ -221,7 +201,6 @@ public class Nametags extends Module { private final Setting enchantTextScale = sgPlayers.add(new DoubleSetting.Builder() .name("enchant-text-scale") - .description("The scale of the enchantment text.") .defaultValue(1) .range(0.1, 2) .sliderRange(0.1, 2) @@ -233,7 +212,6 @@ public class Nametags extends Module { private final Setting itemCount = sgItems.add(new BoolSetting.Builder() .name("show-count") - .description("Displays the number of items in the stack.") .defaultValue(true) .build() ); @@ -242,21 +220,18 @@ public class Nametags extends Module { private final Setting background = sgRender.add(new ColorSetting.Builder() .name("background-color") - .description("The color of the nametag background.") .defaultValue(new SettingColor(0, 0, 0, 75)) .build() ); private final Setting nameColor = sgRender.add(new ColorSetting.Builder() .name("name-color") - .description("The color of the nametag names.") .defaultValue(new SettingColor()) .build() ); private final Setting pingColor = sgRender.add(new ColorSetting.Builder() .name("ping-color") - .description("The color of the nametag ping.") .defaultValue(new SettingColor(20, 170, 170)) .visible(displayPing::get) .build() @@ -264,7 +239,6 @@ public class Nametags extends Module { private final Setting gamemodeColor = sgRender.add(new ColorSetting.Builder() .name("gamemode-color") - .description("The color of the nametag gamemode.") .defaultValue(new SettingColor(232, 185, 35)) .visible(displayGameMode::get) .build() @@ -272,7 +246,6 @@ public class Nametags extends Module { private final Setting distanceColorMode = sgRender.add(new EnumSetting.Builder() .name("distance-color-mode") - .description("The mode to color the nametag distance with.") .defaultValue(DistanceColorMode.Gradient) .visible(displayDistance::get) .build() @@ -280,7 +253,6 @@ public class Nametags extends Module { private final Setting distanceColor = sgRender.add(new ColorSetting.Builder() .name("distance-color") - .description("The color of the nametag distance.") .defaultValue(new SettingColor(150, 150, 150)) .visible(() -> displayDistance.get() && distanceColorMode.get() == DistanceColorMode.Flat) .build() @@ -298,7 +270,7 @@ public class Nametags extends Module { private final List entityList = new ArrayList<>(); public Nametags() { - super(Categories.Render, "nametags", "Displays customizable nametags above players, items and other entities."); + super(Categories.Render, "nametags"); } private static String ticksToTime(int ticks) { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/NoRender.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/NoRender.java index 145a1ee45a..9cd1bc0a1f 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/NoRender.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/NoRender.java @@ -24,100 +24,87 @@ import java.util.Set; public class NoRender extends Module { - private final SettingGroup sgOverlay = settings.createGroup("Overlay"); - private final SettingGroup sgHUD = settings.createGroup("HUD"); - private final SettingGroup sgWorld = settings.createGroup("World"); - private final SettingGroup sgEntity = settings.createGroup("Entity"); + private final SettingGroup sgOverlay = settings.createGroup("overlay"); + private final SettingGroup sgHUD = settings.createGroup("hud"); + private final SettingGroup sgWorld = settings.createGroup("world"); + private final SettingGroup sgEntity = settings.createGroup("entity"); // Overlay private final Setting noPortalOverlay = sgOverlay.add(new BoolSetting.Builder() .name("portal-overlay") - .description("Disables rendering of the nether portal overlay.") .defaultValue(false) .build() ); private final Setting noSpyglassOverlay = sgOverlay.add(new BoolSetting.Builder() .name("spyglass-overlay") - .description("Disables rendering of the spyglass overlay.") .defaultValue(false) .build() ); private final Setting noNausea = sgOverlay.add(new BoolSetting.Builder() .name("nausea") - .description("Disables rendering of the nausea overlay.") .defaultValue(false) .build() ); private final Setting noPumpkinOverlay = sgOverlay.add(new BoolSetting.Builder() .name("pumpkin-overlay") - .description("Disables rendering of the pumpkin head overlay") .defaultValue(false) .build() ); private final Setting noPowderedSnowOverlay = sgOverlay.add(new BoolSetting.Builder() .name("powdered-snow-overlay") - .description("Disables rendering of the powdered snow overlay.") .defaultValue(false) .build() ); private final Setting noFireOverlay = sgOverlay.add(new BoolSetting.Builder() .name("fire-overlay") - .description("Disables rendering of the fire overlay.") .defaultValue(false) .build() ); private final Setting noLiquidOverlay = sgOverlay.add(new BoolSetting.Builder() .name("liquid-overlay") - .description("Disables rendering of the liquid overlay.") .defaultValue(false) .build() ); private final Setting noInWallOverlay = sgOverlay.add(new BoolSetting.Builder() .name("in-wall-overlay") - .description("Disables rendering of the overlay when inside blocks.") .defaultValue(false) .build() ); private final Setting noVignette = sgOverlay.add(new BoolSetting.Builder() .name("vignette") - .description("Disables rendering of the vignette overlay.") .defaultValue(false) .build() ); private final Setting noGuiBackground = sgOverlay.add(new BoolSetting.Builder() .name("gui-background") - .description("Disables rendering of the GUI background overlay.") .defaultValue(false) .build() ); private final Setting noTotemAnimation = sgOverlay.add(new BoolSetting.Builder() .name("totem-animation") - .description("Disables rendering of the totem animation when you pop a totem.") .defaultValue(false) .build() ); private final Setting noEatParticles = sgOverlay.add(new BoolSetting.Builder() .name("eating-particles") - .description("Disables rendering of eating particles.") .defaultValue(false) .build() ); private final Setting noEnchantGlint = sgOverlay.add(new BoolSetting.Builder() .name("enchantment-glint") - .description("Disables rending of the enchantment glint.") .defaultValue(false) .build() ); @@ -126,55 +113,47 @@ public class NoRender extends Module { private final Setting noBossBar = sgHUD.add(new BoolSetting.Builder() .name("boss-bar") - .description("Disable rendering of boss bars.") .defaultValue(false) .build() ); private final Setting noScoreboard = sgHUD.add(new BoolSetting.Builder() .name("scoreboard") - .description("Disable rendering of the scoreboard.") .defaultValue(false) .build() ); private final Setting noCrosshair = sgHUD.add(new BoolSetting.Builder() .name("crosshair") - .description("Disables rendering of the crosshair.") .defaultValue(false) .build() ); private final Setting noTitle = sgHUD.add(new BoolSetting.Builder() .name("title") - .description("Disables rendering of the title.") .defaultValue(false) .build() ); private final Setting noHeldItemName = sgHUD.add(new BoolSetting.Builder() .name("held-item-name") - .description("Disables rendering of the held item name.") .defaultValue(false) .build() ); private final Setting noObfuscation = sgHUD.add(new BoolSetting.Builder() .name("obfuscation") - .description("Disables obfuscation styling of characters.") .defaultValue(false) .build() ); private final Setting noPotionIcons = sgHUD.add(new BoolSetting.Builder() .name("potion-icons") - .description("Disables rendering of status effect icons.") .defaultValue(false) .build() ); private final Setting noMessageSignatureIndicator = sgHUD.add(new BoolSetting.Builder() .name("message-signature-indicator") - .description("Disables chat message signature indicator on the left of the message.") .defaultValue(false) .build() ); @@ -183,84 +162,72 @@ public class NoRender extends Module { private final Setting noWeather = sgWorld.add(new BoolSetting.Builder() .name("weather") - .description("Disables rendering of weather.") .defaultValue(false) .build() ); private final Setting noWorldBorder = sgWorld.add(new BoolSetting.Builder() .name("world-border") - .description("Disables rendering of the world border.") .defaultValue(false) .build() ); private final Setting noBlindness = sgWorld.add(new BoolSetting.Builder() .name("blindness") - .description("Disables rendering of blindness.") .defaultValue(false) .build() ); private final Setting noDarkness = sgWorld.add(new BoolSetting.Builder() .name("darkness") - .description("Disables rendering of darkness.") .defaultValue(false) .build() ); private final Setting noFog = sgWorld.add(new BoolSetting.Builder() .name("fog") - .description("Disables rendering of fog.") .defaultValue(false) .build() ); private final Setting noEnchTableBook = sgWorld.add(new BoolSetting.Builder() .name("enchantment-table-book") - .description("Disables rendering of books above enchanting tables.") .defaultValue(false) .build() ); private final Setting noSignText = sgWorld.add(new BoolSetting.Builder() .name("sign-text") - .description("Disables rendering of text on signs.") .defaultValue(false) .build() ); private final Setting noBlockBreakParticles = sgWorld.add(new BoolSetting.Builder() .name("block-break-particles") - .description("Disables rendering of block-break particles.") .defaultValue(false) .build() ); private final Setting noBlockBreakOverlay = sgWorld.add(new BoolSetting.Builder() .name("block-break-overlay") - .description("Disables rendering of block-break overlay.") .defaultValue(false) .build() ); private final Setting noBeaconBeams = sgWorld.add(new BoolSetting.Builder() .name("beacon-beams") - .description("Disables rendering of beacon beams.") .defaultValue(false) .build() ); private final Setting noFallingBlocks = sgWorld.add(new BoolSetting.Builder() .name("falling-blocks") - .description("Disables rendering of falling blocks.") .defaultValue(false) .build() ); private final Setting noCaveCulling = sgWorld.add(new BoolSetting.Builder() .name("cave-culling") - .description("Disables Minecraft's cave culling algorithm.") .defaultValue(false) .onChanged(b -> mc.worldRenderer.reload()) .build() @@ -268,48 +235,41 @@ public class NoRender extends Module { private final Setting noMapMarkers = sgWorld.add(new BoolSetting.Builder() .name("map-markers") - .description("Disables markers on maps.") .defaultValue(false) .build() ); private final Setting noMapContents = sgWorld.add(new BoolSetting.Builder() .name("map-contents") - .description("Disable rendering of maps.") .defaultValue(false) .build() ); private final Setting bannerRender = sgWorld.add(new EnumSetting.Builder() .name("banners") - .description("Changes rendering of banners.") .defaultValue(BannerRenderMode.Everything) .build() ); private final Setting noFireworkExplosions = sgWorld.add(new BoolSetting.Builder() .name("firework-explosions") - .description("Disables rendering of firework explosions.") .defaultValue(false) .build() ); private final Setting>> particles = sgWorld.add(new ParticleTypeListSetting.Builder() .name("particles") - .description("Particles to not render.") .build() ); private final Setting noBarrierInvis = sgWorld.add(new BoolSetting.Builder() .name("barrier-invisibility") - .description("Disables barriers being invisible when not holding one.") .defaultValue(false) .build() ); private final Setting noTextureRotations = sgWorld.add(new BoolSetting.Builder() .name("texture-rotations") - .description("Changes texture rotations and model offsets to use a constant value instead of the block position.") .defaultValue(false) .onChanged(b -> mc.worldRenderer.reload()) .build() @@ -317,7 +277,6 @@ public class NoRender extends Module { private final Setting> blockEntities = sgWorld.add(new BlockListSetting.Builder() .name("block-entities") - .description("Block entities (chest, shulker block, etc.) to not render.") .filter(block -> block instanceof BlockEntityProvider && !(block instanceof AbstractBannerBlock)) .build() ); @@ -326,61 +285,53 @@ public class NoRender extends Module { private final Setting>> entities = sgEntity.add(new EntityTypeListSetting.Builder() .name("entities") - .description("Disables rendering of selected entities.") .build() ); private final Setting dropSpawnPacket = sgEntity.add(new BoolSetting.Builder() .name("drop-spawn-packets") - .description("WARNING! Drops all spawn packets of entities selected in the above list.") .defaultValue(false) .build() ); private final Setting noArmor = sgEntity.add(new BoolSetting.Builder() .name("armor") - .description("Disables rendering of armor on entities.") .defaultValue(false) .build() ); private final Setting noInvisibility = sgEntity.add(new BoolSetting.Builder() .name("invisibility") - .description("Shows invisible entities.") .defaultValue(false) .build() ); private final Setting noGlowing = sgEntity.add(new BoolSetting.Builder() .name("glowing") - .description("Disables rendering of the glowing effect") .defaultValue(false) .build() ); private final Setting noMobInSpawner = sgEntity.add(new BoolSetting.Builder() .name("spawner-entities") - .description("Disables rendering of spinning mobs inside of mob spawners") .defaultValue(false) .build() ); private final Setting noDeadEntities = sgEntity.add(new BoolSetting.Builder() .name("dead-entities") - .description("Disables rendering of dead entities") .defaultValue(false) .build() ); private final Setting noNametags = sgEntity.add(new BoolSetting.Builder() .name("nametags") - .description("Disables rendering of entity nametags") .defaultValue(false) .build() ); public NoRender() { - super(Categories.Render, "no-render", "Disables certain animations or overlays from rendering."); + super(Categories.Render, "no-render"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/PopChams.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/PopChams.java index 4b741fa3a5..6e78866764 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/PopChams.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/PopChams.java @@ -30,14 +30,12 @@ public class PopChams extends Module { private final Setting onlyOne = sgGeneral.add(new BoolSetting.Builder() .name("only-one") - .description("Only allow one ghost per player.") .defaultValue(false) .build() ); private final Setting renderTime = sgGeneral.add(new DoubleSetting.Builder() .name("render-time") - .description("How long the ghost is rendered in seconds.") .defaultValue(1) .min(0.1) .sliderMax(6) @@ -46,7 +44,6 @@ public class PopChams extends Module { private final Setting yModifier = sgGeneral.add(new DoubleSetting.Builder() .name("y-modifier") - .description("How much should the Y position of the ghost change per second.") .defaultValue(0.75) .sliderRange(-4, 4) .build() @@ -54,7 +51,6 @@ public class PopChams extends Module { private final Setting scaleModifier = sgGeneral.add(new DoubleSetting.Builder() .name("scale-modifier") - .description("How much should the scale of the ghost change per second.") .defaultValue(-0.25) .sliderRange(-4, 4) .build() @@ -62,28 +58,24 @@ public class PopChams extends Module { private final Setting fadeOut = sgGeneral.add(new BoolSetting.Builder() .name("fade-out") - .description("Fades out the color.") .defaultValue(true) .build() ); private final Setting shapeMode = sgGeneral.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); private final Setting sideColor = sgGeneral.add(new ColorSetting.Builder() .name("side-color") - .description("The side color.") .defaultValue(new SettingColor(255, 255, 255, 25)) .build() ); private final Setting lineColor = sgGeneral.add(new ColorSetting.Builder() .name("line-color") - .description("The line color.") .defaultValue(new SettingColor(255, 255, 255, 127)) .build() ); @@ -91,7 +83,7 @@ public class PopChams extends Module { private final List ghosts = new ArrayList<>(); public PopChams() { - super(Categories.Render, "pop-chams", "Renders a ghost where players pop totem."); + super(Categories.Render, "pop-chams"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/StorageESP.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/StorageESP.java index 8a8ecfe1c1..92f72c3409 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/StorageESP.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/StorageESP.java @@ -43,40 +43,35 @@ public class StorageESP extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgOpened = settings.createGroup("Opened Rendering"); + private final SettingGroup sgOpened = settings.createGroup("opened-rendering"); private final Set interactedBlocks = new HashSet<>(); private final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("Rendering mode.") .defaultValue(Mode.Shader) .build() ); private final Setting>> storageBlocks = sgGeneral.add(new StorageBlockListSetting.Builder() .name("storage-blocks") - .description("Select the storage blocks to display.") .defaultValue(StorageBlockListSetting.STORAGE_BLOCKS) .build() ); private final Setting tracers = sgGeneral.add(new BoolSetting.Builder() .name("tracers") - .description("Draws tracers to storage blocks.") .defaultValue(false) .build() ); public final Setting shapeMode = sgGeneral.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); public final Setting fillOpacity = sgGeneral.add(new IntSetting.Builder() .name("fill-opacity") - .description("The opacity of the shape fill.") .visible(() -> shapeMode.get() != ShapeMode.Lines) .defaultValue(50) .range(0, 255) @@ -86,7 +81,6 @@ public class StorageESP extends Module { public final Setting outlineWidth = sgGeneral.add(new IntSetting.Builder() .name("width") - .description("The width of the shader outline.") .visible(() -> mode.get() == Mode.Shader) .defaultValue(1) .range(1, 10) @@ -96,7 +90,6 @@ public class StorageESP extends Module { public final Setting glowMultiplier = sgGeneral.add(new DoubleSetting.Builder() .name("glow-multiplier") - .description("Multiplier for glow effect") .visible(() -> mode.get() == Mode.Shader) .decimalPlaces(3) .defaultValue(3.5) @@ -107,49 +100,42 @@ public class StorageESP extends Module { private final Setting chest = sgGeneral.add(new ColorSetting.Builder() .name("chest") - .description("The color of chests.") .defaultValue(new SettingColor(255, 160, 0, 255)) .build() ); private final Setting trappedChest = sgGeneral.add(new ColorSetting.Builder() .name("trapped-chest") - .description("The color of trapped chests.") .defaultValue(new SettingColor(255, 0, 0, 255)) .build() ); private final Setting barrel = sgGeneral.add(new ColorSetting.Builder() .name("barrel") - .description("The color of barrels.") .defaultValue(new SettingColor(255, 160, 0, 255)) .build() ); private final Setting shulker = sgGeneral.add(new ColorSetting.Builder() .name("shulker") - .description("The color of Shulker Boxes.") .defaultValue(new SettingColor(255, 160, 0, 255)) .build() ); private final Setting enderChest = sgGeneral.add(new ColorSetting.Builder() .name("ender-chest") - .description("The color of Ender Chests.") .defaultValue(new SettingColor(120, 0, 255, 255)) .build() ); private final Setting other = sgGeneral.add(new ColorSetting.Builder() .name("other") - .description("The color of furnaces, dispensers, droppers and hoppers.") .defaultValue(new SettingColor(140, 140, 140, 255)) .build() ); private final Setting fadeDistance = sgGeneral.add(new DoubleSetting.Builder() .name("fade-distance") - .description("The distance at which the color will fade.") .defaultValue(6) .min(0) .sliderMax(12) @@ -158,14 +144,12 @@ public class StorageESP extends Module { private final Setting hideOpened = sgOpened.add(new BoolSetting.Builder() .name("hide-opened") - .description("Hides opened containers.") .defaultValue(false) .build() ); private final Setting openedColor = sgOpened.add(new ColorSetting.Builder() .name("opened-color") - .description("Optional setting to change colors of opened chests, as opposed to not rendering. Disabled at zero opacity.") .defaultValue(new SettingColor(203, 90, 203, 0)) // TRANSPARENT BY DEFAULT. .build() ); @@ -180,7 +164,7 @@ public class StorageESP extends Module { private final MeshBuilderVertexConsumerProvider vertexConsumerProvider; public StorageESP() { - super(Categories.Render, "storage-esp", "Renders all specified storage blocks."); + super(Categories.Render, "storage-esp"); mesh = new MeshBuilder(MeteorRenderPipelines.WORLD_COLORED); vertexConsumerProvider = new MeshBuilderVertexConsumerProvider(mesh); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/TimeChanger.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/TimeChanger.java index 228fb8afb0..be5248fa49 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/TimeChanger.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/TimeChanger.java @@ -20,7 +20,6 @@ public class TimeChanger extends Module { private final Setting time = sgGeneral.add(new DoubleSetting.Builder() .name("time") - .description("The specified time to be set.") .defaultValue(0) .sliderRange(-20000, 20000) .build() @@ -29,7 +28,7 @@ public class TimeChanger extends Module { long oldTime; public TimeChanger() { - super(Categories.Render, "time-changer", "Makes you able to set a custom time."); + super(Categories.Render, "time-changer"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Tracers.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Tracers.java index edac39cb37..96a6a0dbf3 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Tracers.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Tracers.java @@ -35,8 +35,8 @@ public class Tracers extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgAppearance = settings.createGroup("Appearance"); - private final SettingGroup sgColors = settings.createGroup("Colors"); + private final SettingGroup sgAppearance = settings.createGroup("appearance"); + private final SettingGroup sgColors = settings.createGroup("colors"); public enum TracerStyle { Lines, @@ -47,28 +47,24 @@ public enum TracerStyle { private final Setting>> entities = sgGeneral.add(new EntityTypeListSetting.Builder() .name("entities") - .description("Select specific entities.") .defaultValue(EntityType.PLAYER) .build() ); private final Setting ignoreSelf = sgGeneral.add(new BoolSetting.Builder() .name("ignore-self") - .description("Doesn't draw tracers to yourself when in third person or freecam.") .defaultValue(false) .build() ); public final Setting ignoreFriends = sgGeneral.add(new BoolSetting.Builder() .name("ignore-friends") - .description("Doesn't draw tracers to friends.") .defaultValue(false) .build() ); public final Setting showInvis = sgGeneral.add(new BoolSetting.Builder() .name("show-invisible") - .description("Shows invisible entities.") .defaultValue(true) .build() ); @@ -77,14 +73,12 @@ public enum TracerStyle { private final Setting style = sgAppearance.add(new EnumSetting.Builder() .name("style") - .description("What display mode should be used") .defaultValue(TracerStyle.Lines) .build() ); private final Setting target = sgAppearance.add(new EnumSetting.Builder() .name("target") - .description("What part of the entity to target.") .defaultValue(Target.Body) .visible(() -> style.get() == TracerStyle.Lines) .build() @@ -92,7 +86,6 @@ public enum TracerStyle { private final Setting stem = sgAppearance.add(new BoolSetting.Builder() .name("stem") - .description("Draw a line through the center of the tracer target.") .defaultValue(true) .visible(() -> style.get() == TracerStyle.Lines) .build() @@ -100,7 +93,6 @@ public enum TracerStyle { private final Setting maxDist = sgAppearance.add(new IntSetting.Builder() .name("max-distance") - .description("Maximum distance for tracers to show.") .defaultValue(256) .min(0) .sliderMax(256) @@ -109,7 +101,6 @@ public enum TracerStyle { private final Setting distanceOffscreen = sgAppearance.add(new IntSetting.Builder() .name("distance-offscreen") - .description("Offscreen's distance from center.") .defaultValue(200) .min(0) .sliderMax(500) @@ -119,7 +110,6 @@ public enum TracerStyle { private final Setting sizeOffscreen = sgAppearance.add(new IntSetting.Builder() .name("size-offscreen") - .description("Offscreen's size.") .defaultValue(10) .min(2) .sliderMax(50) @@ -129,7 +119,6 @@ public enum TracerStyle { private final Setting blinkOffscreen = sgAppearance.add(new BoolSetting.Builder() .name("blink-offscreen") - .description("Make offscreen Blink.") .defaultValue(true) .visible(() -> style.get() == TracerStyle.Offscreen) .build() @@ -137,7 +126,6 @@ public enum TracerStyle { private final Setting blinkOffscreenSpeed = sgAppearance.add(new DoubleSetting.Builder() .name("blink-offscreen-speed") - .description("Offscreen's blink speed.") .defaultValue(4) .min(1) .sliderMax(15) @@ -149,14 +137,12 @@ public enum TracerStyle { public final Setting distance = sgColors.add(new BoolSetting.Builder() .name("distance-colors") - .description("Changes the color of tracers depending on distance.") .defaultValue(false) .build() ); public final Setting friendOverride = sgColors.add(new BoolSetting.Builder() .name("show-friend-colors") - .description("Whether or not to override the distance color of friends with the friend color.") .defaultValue(true) .visible(() -> distance.get() && !ignoreFriends.get()) .build() @@ -164,7 +150,6 @@ public enum TracerStyle { private final Setting playersColor = sgColors.add(new ColorSetting.Builder() .name("players-colors") - .description("The player's color.") .defaultValue(new SettingColor(205, 205, 205, 127)) .visible(() -> !distance.get()) .build() @@ -172,7 +157,6 @@ public enum TracerStyle { private final Setting animalsColor = sgColors.add(new ColorSetting.Builder() .name("animals-color") - .description("The animal's color.") .defaultValue(new SettingColor(145, 255, 145, 127)) .visible(() -> !distance.get()) .build() @@ -180,7 +164,6 @@ public enum TracerStyle { private final Setting waterAnimalsColor = sgColors.add(new ColorSetting.Builder() .name("water-animals-color") - .description("The water animal's color.") .defaultValue(new SettingColor(145, 145, 255, 127)) .visible(() -> !distance.get()) .build() @@ -188,7 +171,6 @@ public enum TracerStyle { private final Setting monstersColor = sgColors.add(new ColorSetting.Builder() .name("monsters-color") - .description("The monster's color.") .defaultValue(new SettingColor(255, 145, 145, 127)) .visible(() -> !distance.get()) .build() @@ -196,7 +178,6 @@ public enum TracerStyle { private final Setting ambientColor = sgColors.add(new ColorSetting.Builder() .name("ambient-color") - .description("The ambient color.") .defaultValue(new SettingColor(75, 75, 75, 127)) .visible(() -> !distance.get()) .build() @@ -204,7 +185,6 @@ public enum TracerStyle { private final Setting miscColor = sgColors.add(new ColorSetting.Builder() .name("misc-color") - .description("The misc color.") .defaultValue(new SettingColor(145, 145, 145, 127)) .visible(() -> !distance.get()) .build() @@ -214,7 +194,7 @@ public enum TracerStyle { private final Instant initTimer = Instant.now(); public Tracers() { - super(Categories.Render, "tracers", "Displays tracer lines to specified entities."); + super(Categories.Render, "tracers"); } private boolean shouldBeIgnored(Entity entity) { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Trail.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Trail.java index 70e1de3c5e..60bdb42941 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Trail.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Trail.java @@ -24,20 +24,18 @@ public class Trail extends Module { private final Setting>> particles = sgGeneral.add(new ParticleTypeListSetting.Builder() .name("particles") - .description("Particles to draw.") .defaultValue(ParticleTypes.DRIPPING_OBSIDIAN_TEAR, ParticleTypes.CAMPFIRE_COSY_SMOKE) .build() ); private final Setting pause = sgGeneral.add(new BoolSetting.Builder() .name("pause-when-stationary") - .description("Whether or not to add particles when you are not moving.") .defaultValue(true) .build() ); public Trail() { - super(Categories.Render, "trail", "Renders a customizable trail behind your player."); + super(Categories.Render, "trail"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Trajectories.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Trajectories.java index 8d5077999a..658e2e921c 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Trajectories.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Trajectories.java @@ -37,13 +37,12 @@ public class Trajectories extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgRender = settings.createGroup("render"); // General private final Setting> items = sgGeneral.add(new ItemListSetting.Builder() .name("items") - .description("Items to display trajectories for.") .defaultValue(getDefaultItems()) .filter(this::itemFilter) .build() @@ -51,21 +50,18 @@ public class Trajectories extends Module { private final Setting otherPlayers = sgGeneral.add(new BoolSetting.Builder() .name("other-players") - .description("Calculates trajectories for other players.") .defaultValue(true) .build() ); private final Setting firedProjectiles = sgGeneral.add(new BoolSetting.Builder() .name("fired-projectiles") - .description("Calculates trajectories for already fired projectiles.") .defaultValue(false) .build() ); private final Setting ignoreWitherSkulls = sgGeneral.add(new BoolSetting.Builder() .name("ignore-wither-skulls") - .description("Whether to ignore fired wither skulls.") .defaultValue(false) .visible(firedProjectiles::get) .build() @@ -73,14 +69,12 @@ public class Trajectories extends Module { private final Setting accurate = sgGeneral.add(new BoolSetting.Builder() .name("accurate") - .description("Whether or not to calculate more accurate.") .defaultValue(false) .build() ); public final Setting simulationSteps = sgGeneral.add(new IntSetting.Builder() .name("simulation-steps") - .description("How many steps to simulate projectiles. Zero for no limit") .defaultValue(500) .sliderMax(5000) .build() @@ -90,7 +84,6 @@ public class Trajectories extends Module { private final Setting ignoreFirstTicks = sgRender.add(new IntSetting.Builder() .name("ignore-rendering-first-ticks") - .description("Ignores rendering the first given ticks, to make the rest of the path more visible.") .defaultValue(3) .min(0) .build() @@ -98,35 +91,30 @@ public class Trajectories extends Module { private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") - .description("The side color.") .defaultValue(new SettingColor(255, 150, 0, 35)) .build() ); private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") - .description("The line color.") .defaultValue(new SettingColor(255, 150, 0)) .build() ); private final Setting renderPositionBox = sgRender.add(new BoolSetting.Builder() .name("render-position-boxes") - .description("Renders the actual position the projectile will be at each tick along it's trajectory.") .defaultValue(false) .build() ); private final Setting positionBoxSize = sgRender.add(new DoubleSetting.Builder() .name("position-box-size") - .description("The size of the box drawn at the simulated positions.") .defaultValue(0.02) .sliderRange(0.01, 0.1) .visible(renderPositionBox::get) @@ -135,7 +123,6 @@ public class Trajectories extends Module { private final Setting positionSideColor = sgRender.add(new ColorSetting.Builder() .name("position-side-color") - .description("The side color.") .defaultValue(new SettingColor(255, 150, 0, 35)) .visible(renderPositionBox::get) .build() @@ -143,7 +130,6 @@ public class Trajectories extends Module { private final Setting positionLineColor = sgRender.add(new ColorSetting.Builder() .name("position-line-color") - .description("The line color.") .defaultValue(new SettingColor(255, 150, 0)) .visible(renderPositionBox::get) .build() @@ -157,7 +143,7 @@ public class Trajectories extends Module { private static final double MULTISHOT_OFFSET = Math.toRadians(10); // accurate-ish offset of crossbow multishot in radians (10° degrees) public Trajectories() { - super(Categories.Render, "trajectories", "Predicts the trajectory of throwable items."); + super(Categories.Render, "trajectories"); } private boolean itemFilter(Item item) { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/TunnelESP.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/TunnelESP.java index 7d5cf45b90..5bbfaeb1ef 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/TunnelESP.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/TunnelESP.java @@ -42,7 +42,6 @@ public class TunnelESP extends Module { private final Setting height = sgGeneral.add(new DoubleSetting.Builder() .name("height") - .description("Height of the rendered box.") .defaultValue(0.1) .sliderMax(2) .build() @@ -50,28 +49,24 @@ public class TunnelESP extends Module { private final Setting connected = sgGeneral.add(new BoolSetting.Builder() .name("connected") - .description("If neighbouring holes should be connected.") .defaultValue(true) .build() ); private final Setting shapeMode = sgGeneral.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); private final Setting sideColor = sgGeneral.add(new ColorSetting.Builder() .name("side-color") - .description("The side color.") .defaultValue(new SettingColor(255, 175, 25, 50)) .build() ); private final Setting lineColor = sgGeneral.add(new ColorSetting.Builder() .name("line-color") - .description("The line color.") .defaultValue(new SettingColor(255, 175, 25, 255)) .build() ); @@ -79,7 +74,7 @@ public class TunnelESP extends Module { private final Long2ObjectMap chunks = new Long2ObjectOpenHashMap<>(); public TunnelESP() { - super(Categories.Render, "tunnel-esp", "Highlights tunnels."); + super(Categories.Render, "tunnel-esp"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/VoidESP.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/VoidESP.java index 407a87f794..561e9052e5 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/VoidESP.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/VoidESP.java @@ -30,20 +30,18 @@ public class VoidESP extends Module { private static final Direction[] SIDES = {Direction.EAST, Direction.NORTH, Direction.SOUTH, Direction.WEST}; private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgRender = settings.createGroup("render"); // General private final Setting airOnly = sgGeneral.add(new BoolSetting.Builder() .name("air-only") - .description("Checks bedrock only for air blocks.") .defaultValue(false) .build() ); private final Setting horizontalRadius = sgGeneral.add(new IntSetting.Builder() .name("horizontal-radius") - .description("Horizontal radius in which to search for holes.") .defaultValue(64) .min(0) .sliderMax(256) @@ -52,7 +50,6 @@ public class VoidESP extends Module { private final Setting holeHeight = sgGeneral.add(new IntSetting.Builder() .name("hole-height") - .description("The minimum hole height to be rendered.") .defaultValue(1) .min(1) .sliderRange(1, 5) @@ -61,7 +58,6 @@ public class VoidESP extends Module { private final Setting netherRoof = sgGeneral.add(new BoolSetting.Builder() .name("nether-roof") - .description("Check for holes in nether roof.") .defaultValue(true) .build() ); @@ -70,21 +66,18 @@ public class VoidESP extends Module { private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("fill-color") - .description("The color that fills holes in the void.") .defaultValue(new SettingColor(225, 25, 25, 50)) .build() ); private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") - .description("The color to draw lines of holes to the void.") .defaultValue(new SettingColor(225, 25, 255)) .build() ); @@ -95,7 +88,7 @@ public class VoidESP extends Module { private final List voidHoles = new ArrayList<>(); public VoidESP() { - super(Categories.Render, "void-esp", "Renders holes in bedrock layers that lead to the void."); + super(Categories.Render, "void-esp"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/WallHack.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/WallHack.java index be042352c5..9e05580d9a 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/WallHack.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/WallHack.java @@ -23,7 +23,6 @@ public class WallHack extends Module { public final Setting opacity = sgGeneral.add(new IntSetting.Builder() .name("opacity") - .description("The opacity for rendered blocks.") .defaultValue(0) .range(0, 255) .sliderMax(255) @@ -37,7 +36,6 @@ public class WallHack extends Module { public final Setting> blocks = sgGeneral.add(new BlockListSetting.Builder() .name("blocks") - .description("What blocks should be targeted for Wall Hack.") .defaultValue() .onChanged(onChanged -> { if (isActive()) mc.worldRenderer.reload(); @@ -47,13 +45,12 @@ public class WallHack extends Module { public final Setting occludeChunks = sgGeneral.add(new BoolSetting.Builder() .name("occlude-chunks") - .description("Whether caves should occlude underground (may look wonky when on).") .defaultValue(false) .build() ); public WallHack() { - super(Categories.Render, "wall-hack", "Makes blocks translucent."); + super(Categories.Render, "wall-hack"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/WaypointsModule.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/WaypointsModule.java index 5df199eb84..2991aea436 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/WaypointsModule.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/WaypointsModule.java @@ -48,11 +48,10 @@ public class WaypointsModule extends Module { private static final Color TEXT = new Color(255, 255, 255); private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgDeathPosition = settings.createGroup("Death Position"); + private final SettingGroup sgDeathPosition = settings.createGroup("death-position"); public final Setting textRenderDistance = sgGeneral.add(new IntSetting.Builder() .name("text-render-distance") - .description("Maximum distance from the center of the screen at which text will be rendered.") .defaultValue(100) .min(0) .sliderMax(200) @@ -61,7 +60,6 @@ public class WaypointsModule extends Module { private final Setting waypointFadeDistance = sgGeneral.add(new IntSetting.Builder() .name("waypoint-fade-distance") - .description("The distance to a waypoint at which it begins to start fading.") .defaultValue(20) .sliderRange(0, 100) .min(0) @@ -70,7 +68,6 @@ public class WaypointsModule extends Module { private final Setting maxDeathPositions = sgDeathPosition.add(new IntSetting.Builder() .name("max-death-positions") - .description("The amount of death positions to save, 0 to disable") .defaultValue(0) .min(0) .sliderMax(20) @@ -80,13 +77,12 @@ public class WaypointsModule extends Module { private final Setting dpChat = sgDeathPosition.add(new BoolSetting.Builder() .name("chat") - .description("Send a chat message with your position once you die") .defaultValue(false) .build() ); public WaypointsModule() { - super(Categories.Render, "waypoints", "Allows you to create waypoints."); + super(Categories.Render, "waypoints"); } private final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Xray.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Xray.java index 351a230172..40c299e43e 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Xray.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Xray.java @@ -35,7 +35,6 @@ public class Xray extends Module { private final Setting> blocks = sgGeneral.add(new BlockListSetting.Builder() .name("whitelist") - .description("Which blocks to show x-rayed.") .defaultValue(ORES) .onChanged(v -> { if (isActive()) mc.worldRenderer.reload(); @@ -45,7 +44,6 @@ public class Xray extends Module { public final Setting opacity = sgGeneral.add(new IntSetting.Builder() .name("opacity") - .description("The opacity for all other blocks.") .defaultValue(25) .range(0, 255) .sliderMax(255) @@ -57,7 +55,6 @@ public class Xray extends Module { private final Setting exposedOnly = sgGeneral.add(new BoolSetting.Builder() .name("exposed-only") - .description("Show only exposed ores.") .defaultValue(false) .onChanged(onChanged -> { if (isActive()) mc.worldRenderer.reload(); @@ -65,7 +62,7 @@ public class Xray extends Module { .build()); public Xray() { - super(Categories.Render, "xray", "Only renders specified blocks. Good for mining."); + super(Categories.Render, "xray"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Zoom.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Zoom.java index 65d6dc066d..ad9267ef7b 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Zoom.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Zoom.java @@ -26,7 +26,6 @@ public class Zoom extends Module { private final Setting zoom = sgGeneral.add(new DoubleSetting.Builder() .name("zoom") - .description("How much to zoom.") .defaultValue(6) .min(1) .build() @@ -34,7 +33,6 @@ public class Zoom extends Module { private final Setting scrollSensitivity = sgGeneral.add(new DoubleSetting.Builder() .name("scroll-sensitivity") - .description("Allows you to change zoom value using scroll wheel. 0 to disable.") .defaultValue(1) .min(0) .build() @@ -42,28 +40,24 @@ public class Zoom extends Module { private final Setting smooth = sgGeneral.add(new BoolSetting.Builder() .name("smooth") - .description("Smooth transition.") .defaultValue(true) .build() ); private final Setting cinematic = sgGeneral.add(new BoolSetting.Builder() .name("cinematic") - .description("Enables cinematic camera.") .defaultValue(false) .build() ); private final Setting hideHud = sgGeneral.add(new BoolSetting.Builder() .name("hide-HUD") - .description("Whether or not to hide the Minecraft HUD.") .defaultValue(false) .build() ); private final Setting renderHands = sgGeneral.add(new BoolSetting.Builder() .name("show-hands") - .description("Whether or not to render your hands.") .defaultValue(false) .visible(() -> !hideHud.get()) .build() @@ -79,7 +73,7 @@ public class Zoom extends Module { private boolean hudManualToggled; public Zoom() { - super(Categories.Render, "zoom", "Zooms your view."); + super(Categories.Render, "zoom"); autoSubscribe = false; } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/blockesp/BlockESP.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/blockesp/BlockESP.java index 8cfe86c072..b625cd5da7 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/blockesp/BlockESP.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/blockesp/BlockESP.java @@ -40,7 +40,6 @@ public class BlockESP extends Module { private final Setting> blocks = sgGeneral.add(new BlockListSetting.Builder() .name("blocks") - .description("Blocks to search for.") .onChanged(blocks1 -> { if (isActive() && Utils.canUpdate()) onActivate(); }) @@ -49,7 +48,6 @@ public class BlockESP extends Module { private final Setting defaultBlockConfig = sgGeneral.add(new GenericSetting.Builder() .name("default-block-config") - .description("Default block config.") .defaultValue( new ESPBlockData( ShapeMode.Lines, @@ -64,14 +62,12 @@ public class BlockESP extends Module { private final Setting> blockConfigs = sgGeneral.add(new BlockDataSetting.Builder() .name("block-configs") - .description("Config for each block.") .defaultData(defaultBlockConfig) .build() ); private final Setting tracers = sgGeneral.add(new BoolSetting.Builder() .name("tracers") - .description("Render tracer lines.") .defaultValue(false) .build() ); @@ -85,7 +81,7 @@ public class BlockESP extends Module { private DimensionType lastDimension; public BlockESP() { - super(Categories.Render, "block-esp", "Renders specified blocks through walls.", "search"); + super(Categories.Render, "block-esp", "search"); RainbowColors.register(this::onTickRainbow); } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/Marker.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/Marker.java index 3bf83adb35..8c7a8a42bf 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/Marker.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/Marker.java @@ -31,7 +31,7 @@ public class Marker extends Module { private final ArrayList markers = new ArrayList<>(); public Marker() { - super(Categories.Render, "marker", "Renders shapes. Useful for large scale projects"); + super(Categories.Render, "marker"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Ambience.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Ambience.java index 6657250d4d..c5376d7ff3 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Ambience.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Ambience.java @@ -18,28 +18,25 @@ * @author Walaryne */ public class Ambience extends Module { - private final SettingGroup sgSky = settings.createGroup("Sky"); - private final SettingGroup sgWorld = settings.createGroup("World"); + private final SettingGroup sgSky = settings.createGroup("sky"); + private final SettingGroup sgWorld = settings.createGroup("world"); // Sky public final Setting endSky = sgSky.add(new BoolSetting.Builder() .name("end-sky") - .description("Makes the sky like the end.") .defaultValue(false) .build() ); public final Setting customSkyColor = sgSky.add(new BoolSetting.Builder() .name("custom-sky-color") - .description("Whether the sky color should be changed.") .defaultValue(false) .build() ); public final Setting overworldSkyColor = sgSky.add(new ColorSetting.Builder() .name("overworld-sky-color") - .description("The color of the overworld sky.") .defaultValue(new SettingColor(0, 125, 255)) .visible(customSkyColor::get) .build() @@ -47,7 +44,6 @@ public class Ambience extends Module { public final Setting netherSkyColor = sgSky.add(new ColorSetting.Builder() .name("nether-sky-color") - .description("The color of the nether sky.") .defaultValue(new SettingColor(102, 0, 0)) .visible(customSkyColor::get) .build() @@ -55,7 +51,6 @@ public class Ambience extends Module { public final Setting endSkyColor = sgSky.add(new ColorSetting.Builder() .name("end-sky-color") - .description("The color of the end sky.") .defaultValue(new SettingColor(65, 30, 90)) .visible(customSkyColor::get) .build() @@ -63,14 +58,12 @@ public class Ambience extends Module { public final Setting customCloudColor = sgSky.add(new BoolSetting.Builder() .name("custom-cloud-color") - .description("Whether the clouds color should be changed.") .defaultValue(false) .build() ); public final Setting cloudColor = sgSky.add(new ColorSetting.Builder() .name("cloud-color") - .description("The color of the clouds.") .defaultValue(new SettingColor(102, 0, 0)) .visible(customCloudColor::get) .build() @@ -78,14 +71,12 @@ public class Ambience extends Module { public final Setting changeLightningColor = sgSky.add(new BoolSetting.Builder() .name("custom-lightning-color") - .description("Whether the lightning color should be changed.") .defaultValue(false) .build() ); public final Setting lightningColor = sgSky.add(new ColorSetting.Builder() .name("lightning-color") - .description("The color of the lightning.") .defaultValue(new SettingColor(102, 0, 0)) .visible(changeLightningColor::get) .build() @@ -94,7 +85,6 @@ public class Ambience extends Module { // World public final Setting customGrassColor = sgWorld.add(new BoolSetting.Builder() .name("custom-grass-color") - .description("Whether the grass color should be changed.") .defaultValue(false) .onChanged(val -> reload()) .build() @@ -102,7 +92,6 @@ public class Ambience extends Module { public final Setting grassColor = sgWorld.add(new ColorSetting.Builder() .name("grass-color") - .description("The color of the grass.") .defaultValue(new SettingColor(102, 0, 0)) .visible(customGrassColor::get) .onChanged(val -> reload()) @@ -111,7 +100,6 @@ public class Ambience extends Module { public final Setting customFoliageColor = sgWorld.add(new BoolSetting.Builder() .name("custom-foliage-color") - .description("Whether the foliage color should be changed.") .defaultValue(false) .onChanged(val -> reload()) .build() @@ -119,7 +107,6 @@ public class Ambience extends Module { public final Setting foliageColor = sgWorld.add(new ColorSetting.Builder() .name("foliage-color") - .description("The color of the foliage.") .defaultValue(new SettingColor(102, 0, 0)) .visible(customFoliageColor::get) .onChanged(val -> reload()) @@ -128,7 +115,6 @@ public class Ambience extends Module { public final Setting customWaterColor = sgWorld.add(new BoolSetting.Builder() .name("custom-water-color") - .description("Whether the water color should be changed.") .defaultValue(false) .onChanged(val -> reload()) .build() @@ -136,7 +122,6 @@ public class Ambience extends Module { public final Setting waterColor = sgWorld.add(new ColorSetting.Builder() .name("water-color") - .description("The color of the water.") .defaultValue(new SettingColor(102, 0, 0)) .visible(customWaterColor::get) .onChanged(val -> reload()) @@ -145,7 +130,6 @@ public class Ambience extends Module { public final Setting customLavaColor = sgWorld.add(new BoolSetting.Builder() .name("custom-lava-color") - .description("Whether the lava color should be changed.") .defaultValue(false) .onChanged(val -> reload()) .build() @@ -153,7 +137,6 @@ public class Ambience extends Module { public final Setting lavaColor = sgWorld.add(new ColorSetting.Builder() .name("lava-color") - .description("The color of the lava.") .defaultValue(new SettingColor(102, 0, 0)) .visible(customLavaColor::get) .onChanged(val -> reload()) @@ -162,21 +145,19 @@ public class Ambience extends Module { public final Setting customFogColor = sgWorld.add(new BoolSetting.Builder() .name("custom-fog-color") - .description("Whether the fog color should be changed.") .defaultValue(false) .build() ); public final Setting fogColor = sgWorld.add(new ColorSetting.Builder() .name("fog-color") - .description("The color of the fog.") .defaultValue(new SettingColor(102, 0, 0)) .visible(customFogColor::get) .build() ); public Ambience() { - super(Categories.World, "ambience", "Change the color of various pieces of the environment."); + super(Categories.World, "ambience"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoBreed.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoBreed.java index 98c647ecd5..082145743d 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoBreed.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoBreed.java @@ -27,7 +27,6 @@ public class AutoBreed extends Module { private final Setting>> entities = sgGeneral.add(new EntityTypeListSetting.Builder() .name("entities") - .description("Entities to breed.") .defaultValue(EntityType.HORSE, EntityType.DONKEY, EntityType.COW, EntityType.MOOSHROOM, EntityType.SHEEP, EntityType.PIG, EntityType.CHICKEN, EntityType.WOLF, EntityType.CAT, EntityType.OCELOT, EntityType.RABBIT, EntityType.LLAMA, EntityType.TURTLE, @@ -38,7 +37,6 @@ public class AutoBreed extends Module { private final Setting range = sgGeneral.add(new DoubleSetting.Builder() .name("range") - .description("How far away the animals can be to be bred.") .min(0) .defaultValue(4.5) .build() @@ -46,14 +44,12 @@ public class AutoBreed extends Module { private final Setting hand = sgGeneral.add(new EnumSetting.Builder() .name("hand-for-breeding") - .description("The hand to use for breeding.") .defaultValue(Hand.MAIN_HAND) .build() ); private final Setting mobAgeFilter = sgGeneral.add(new EnumSetting.Builder() .name("mob-age-filter") - .description("Determines the age of the mobs to target (baby, adult, or both).") .defaultValue(EntityAge.Adult) .build() ); @@ -61,7 +57,7 @@ public class AutoBreed extends Module { private final List animalsFed = new ArrayList<>(); public AutoBreed() { - super(Categories.World, "auto-breed", "Automatically breeds specified animals."); + super(Categories.World, "auto-breed"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoBrewer.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoBrewer.java index 212c4adc04..1b2d746e5f 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoBrewer.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoBrewer.java @@ -25,7 +25,6 @@ public class AutoBrewer extends Module { private final Setting potion = sgGeneral.add(new PotionSetting.Builder() .name("potion") - .description("The type of potion to brew.") .defaultValue(MyPotion.Strength) .build() ); @@ -35,7 +34,7 @@ public class AutoBrewer extends Module { private int timer; public AutoBrewer() { - super(Categories.World, "auto-brewer", "Automatically brews the specified potion."); + super(Categories.World, "auto-brewer"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoMount.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoMount.java index cad9a7ed35..4c3b3a5b17 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoMount.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoMount.java @@ -37,27 +37,24 @@ public class AutoMount extends Module { private final Setting checkSaddle = sgGeneral.add(new BoolSetting.Builder() .name("check-saddle") - .description("Checks if the entity contains a saddle before mounting.") .defaultValue(false) .build() ); private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() .name("rotate") - .description("Faces the entity you mount.") .defaultValue(true) .build() ); private final Setting>> entities = sgGeneral.add(new EntityTypeListSetting.Builder() .name("entities") - .description("Rideable entities.") .filter(EntityUtils::isRideable) .build() ); public AutoMount() { - super(Categories.World, "auto-mount", "Automatically mounts entities."); + super(Categories.World, "auto-mount"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoNametag.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoNametag.java index 5c93427b05..cb091b1024 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoNametag.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoNametag.java @@ -32,13 +32,11 @@ public class AutoNametag extends Module { private final Setting>> entities = sgGeneral.add(new EntityTypeListSetting.Builder() .name("entities") - .description("Which entities to nametag.") .build() ); private final Setting range = sgGeneral.add(new DoubleSetting.Builder() .name("range") - .description("The maximum range an entity can be to be nametagged.") .defaultValue(5) .min(0) .sliderMax(6) @@ -47,21 +45,18 @@ public class AutoNametag extends Module { private final Setting priority = sgGeneral.add(new EnumSetting.Builder() .name("priority") - .description("Priority sort") .defaultValue(SortPriority.LowestDistance) .build() ); private final Setting renametag = sgGeneral.add(new BoolSetting.Builder() .name("renametag") - .description("Allows already nametagged entities to be renamed.") .defaultValue(true) .build() ); private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() .name("rotate") - .description("Automatically faces towards the mob being nametagged.") .defaultValue(true) .build() ); @@ -72,7 +67,7 @@ public class AutoNametag extends Module { private boolean offHand; public AutoNametag() { - super(Categories.World, "auto-nametag", "Automatically uses nametags on entities without a nametag. WILL nametag ALL entities in the specified distance."); + super(Categories.World, "auto-nametag"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoShearer.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoShearer.java index 1da38889d6..2a43dd1f90 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoShearer.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoShearer.java @@ -28,7 +28,6 @@ public class AutoShearer extends Module { private final Setting distance = sgGeneral.add(new DoubleSetting.Builder() .name("distance") - .description("The maximum distance the sheep have to be to be sheared.") .min(0.0) .defaultValue(5.0) .build() @@ -36,14 +35,12 @@ public class AutoShearer extends Module { private final Setting antiBreak = sgGeneral.add(new BoolSetting.Builder() .name("anti-break") - .description("Prevents shears from being broken.") .defaultValue(false) .build() ); private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() .name("rotate") - .description("Automatically faces towards the animal being sheared.") .defaultValue(true) .build() ); @@ -52,7 +49,7 @@ public class AutoShearer extends Module { private Hand hand; public AutoShearer() { - super(Categories.World, "auto-shearer", "Automatically shears sheep."); + super(Categories.World, "auto-shearer"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoSign.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoSign.java index 6e807ac7ef..8a758715d7 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoSign.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoSign.java @@ -27,7 +27,6 @@ public class AutoSign extends Module { private final Setting delay = sgGeneral.add(new IntSetting.Builder() .name("delay") - .description("The tick delay between sign update packets.") .defaultValue(10) .range(0, 100) .sliderRange(0, 100) @@ -42,7 +41,7 @@ public class AutoSign extends Module { private int timer = 0; public AutoSign() { - super(Categories.World, "auto-sign", "Automatically writes signs. The first sign's text will be used."); + super(Categories.World, "auto-sign"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoSmelter.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoSmelter.java index 80c600eeeb..f67e9eb54f 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoSmelter.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/AutoSmelter.java @@ -27,7 +27,6 @@ public class AutoSmelter extends Module { private final Setting> fuelItems = sgGeneral.add(new ItemListSetting.Builder() .name("fuel-items") - .description("Items to use as fuel") .defaultValue(Items.COAL, Items.CHARCOAL) .filter(this::fuelItemFilter) .bypassFilterWhenSavingAndLoading() @@ -36,7 +35,6 @@ public class AutoSmelter extends Module { private final Setting> smeltableItems = sgGeneral.add(new ItemListSetting.Builder() .name("smeltable-items") - .description("Items to smelt") .defaultValue(Items.IRON_ORE, Items.GOLD_ORE, Items.COPPER_ORE, Items.RAW_IRON, Items.RAW_COPPER, Items.RAW_GOLD) .filter(this::smeltableItemFilter) .bypassFilterWhenSavingAndLoading() @@ -45,13 +43,12 @@ public class AutoSmelter extends Module { private final Setting disableWhenOutOfItems = sgGeneral.add(new BoolSetting.Builder() .name("disable-when-out-of-items") - .description("Disable the module when you run out of items") .defaultValue(true) .build() ); public AutoSmelter() { - super(Categories.World, "auto-smelter", "Automatically smelts items from your inventory"); + super(Categories.World, "auto-smelter"); } private boolean fuelItemFilter(Item item) { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/BuildHeight.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/BuildHeight.java index d0bf0dab2a..1c998b592c 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/BuildHeight.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/BuildHeight.java @@ -15,7 +15,7 @@ public class BuildHeight extends Module { public BuildHeight() { - super(Categories.World, "build-height", "Allows you to interact with objects at the build limit."); + super(Categories.World, "build-height"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Collisions.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Collisions.java index ab424c1a0d..0532e3a3cd 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Collisions.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Collisions.java @@ -28,34 +28,30 @@ public class Collisions extends Module { public final Setting> blocks = sgGeneral.add(new BlockListSetting.Builder() .name("blocks") - .description("What blocks should be added collision box.") .filter(this::blockFilter) .build() ); private final Setting magma = sgGeneral.add(new BoolSetting.Builder() .name("magma") - .description("Prevents you from walking over magma blocks.") .defaultValue(false) .build() ); private final Setting unloadedChunks = sgGeneral.add(new BoolSetting.Builder() .name("unloaded-chunks") - .description("Stops you from going into unloaded chunks.") .defaultValue(false) .build() ); private final Setting ignoreBorder = sgGeneral.add(new BoolSetting.Builder() .name("ignore-border") - .description("Removes world border collision.") .defaultValue(false) .build() ); public Collisions() { - super(Categories.World, "collisions", "Adds collision boxes to certain blocks/areas."); + super(Categories.World, "collisions"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/EChestFarmer.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/EChestFarmer.java index f2455ea334..7ee661687a 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/EChestFarmer.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/EChestFarmer.java @@ -33,18 +33,16 @@ public class EChestFarmer extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgRender = settings.createGroup("render"); private final Setting selfToggle = sgGeneral.add(new BoolSetting.Builder() .name("self-toggle") - .description("Disables when you reach the desired amount of obsidian.") .defaultValue(false) .build() ); private final Setting ignoreExisting = sgGeneral.add(new BoolSetting.Builder() .name("ignore-existing") - .description("Ignores existing obsidian in your inventory and mines the total target amount.") .defaultValue(true) .visible(selfToggle::get) .build() @@ -52,7 +50,6 @@ public class EChestFarmer extends Module { private final Setting amount = sgGeneral.add(new IntSetting.Builder() .name("amount") - .description("The amount of obsidian to farm.") .defaultValue(64) .sliderMax(128) .range(8, 512) @@ -65,35 +62,30 @@ public class EChestFarmer extends Module { private final Setting swingHand = sgRender.add(new BoolSetting.Builder() .name("swing-hand") - .description("Swing hand client-side.") .defaultValue(true) .build() ); private final Setting render = sgRender.add(new BoolSetting.Builder() .name("render") - .description("Renders a block overlay where the obsidian will be placed.") .defaultValue(true) .build() ); private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") - .description("The color of the sides of the blocks being rendered.") .defaultValue(new SettingColor(204, 0, 0, 50)) .build() ); private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") - .description("The color of the lines of the blocks being rendered.") .defaultValue(new SettingColor(204, 0, 0, 255)) .build() ); @@ -104,7 +96,7 @@ public class EChestFarmer extends Module { private int startCount; public EChestFarmer() { - super(Categories.World, "echest-farmer", "Places and breaks EChests to farm obsidian."); + super(Categories.World, "echest-farmer"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/EndermanLook.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/EndermanLook.java index aed2241daf..beec980d28 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/EndermanLook.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/EndermanLook.java @@ -27,21 +27,19 @@ public class EndermanLook extends Module { private final Setting lookMode = sgGeneral.add(new EnumSetting.Builder() .name("look-mode") - .description("How this module behaves.") .defaultValue(Mode.Away) .build() ); private final Setting stun = sgGeneral.add(new BoolSetting.Builder() .name("stun-hostiles") - .description("Automatically stares at hostile endermen to stun them in place.") .defaultValue(true) .visible(() -> lookMode.get() == Mode.Away) .build() ); public EndermanLook() { - super(Categories.World, "enderman-look", "Either looks at all Endermen or prevents you from looking at Endermen."); + super(Categories.World, "enderman-look"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Excavator.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Excavator.java index 03be24476b..00cd4656ae 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Excavator.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Excavator.java @@ -22,15 +22,15 @@ import net.minecraft.util.hit.BlockHitResult; import org.lwjgl.glfw.GLFW; +// todo map public class Excavator extends Module { private final IBaritone baritone = BaritoneAPI.getProvider().getPrimaryBaritone(); private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRendering = settings.createGroup("Rendering"); + private final SettingGroup sgRendering = settings.createGroup("rendering"); // Keybindings private final Setting selectionBind = sgGeneral.add(new KeybindSetting.Builder() .name("selection-bind") - .description("Bind to draw selection.") .defaultValue(Keybind.fromButton(GLFW.GLFW_MOUSE_BUTTON_RIGHT)) .build() ); @@ -38,14 +38,12 @@ public class Excavator extends Module { // Logging private final Setting logSelection = sgGeneral.add(new BoolSetting.Builder() .name("log-selection") - .description("Logs the selection coordinates to the chat.") .defaultValue(true) .build() ); private final Setting keepActive = sgGeneral.add(new BoolSetting.Builder() .name("keep-active") - .description("Keep the module active after finishing the excavation.") .defaultValue(false) .build() ); @@ -53,21 +51,18 @@ public class Excavator extends Module { // Rendering private final Setting shapeMode = sgRendering.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); private final Setting sideColor = sgRendering.add(new ColorSetting.Builder() .name("side-color") - .description("The side color.") .defaultValue(new SettingColor(255, 255, 255, 50)) .build() ); private final Setting lineColor = sgRendering.add(new ColorSetting.Builder() .name("line-color") - .description("The line color.") .defaultValue(new SettingColor(255, 255, 255, 255)) .build() ); @@ -82,7 +77,7 @@ private enum Status { private BetterBlockPos start, end; public Excavator() { - super(Categories.World, "excavator", "Excavate a selection area."); + super(Categories.World, "excavator"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Flamethrower.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Flamethrower.java index 4b4c2719a3..d831c896df 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Flamethrower.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Flamethrower.java @@ -33,7 +33,6 @@ public class Flamethrower extends Module { private final Setting distance = sgGeneral.add(new DoubleSetting.Builder() .name("distance") - .description("The maximum distance the animal has to be to be roasted.") .min(0.0) .defaultValue(5.0) .build() @@ -41,21 +40,18 @@ public class Flamethrower extends Module { private final Setting antiBreak = sgGeneral.add(new BoolSetting.Builder() .name("anti-break") - .description("Prevents flint and steel from being broken.") .defaultValue(false) .build() ); private final Setting putOutFire = sgGeneral.add(new BoolSetting.Builder() .name("put-out-fire") - .description("Tries to put out the fire when animal is low health, so the items don't burn.") .defaultValue(true) .build() ); private final Setting targetBabies = sgGeneral.add(new BoolSetting.Builder() .name("target-babies") - .description("If checked babies will also be killed.") .defaultValue(false) .build() ); @@ -68,14 +64,12 @@ public class Flamethrower extends Module { private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() .name("rotate") - .description("Automatically faces towards the animal roasted.") .defaultValue(true) .build() ); private final Setting>> entities = sgGeneral.add(new EntityTypeListSetting.Builder() .name("entities") - .description("Entities to cook.") .defaultValue( EntityType.PIG, EntityType.COW, @@ -91,7 +85,7 @@ public class Flamethrower extends Module { private Hand hand; public Flamethrower() { - super(Categories.World, "flamethrower", "Ignites every alive piece of food."); + super(Categories.World, "flamethrower"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/HighwayBuilder.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/HighwayBuilder.java index 9a82372443..fcf11bc3d1 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/HighwayBuilder.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/HighwayBuilder.java @@ -108,17 +108,16 @@ public enum BlockadeType { } private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgDigging = settings.createGroup("Digging"); - private final SettingGroup sgPaving = settings.createGroup("Paving"); - private final SettingGroup sgInventory = settings.createGroup("Inventory"); - private final SettingGroup sgRenderDigging = settings.createGroup("Render Digging"); - private final SettingGroup sgRenderPaving = settings.createGroup("Render Paving"); + private final SettingGroup sgDigging = settings.createGroup("digging"); + private final SettingGroup sgPaving = settings.createGroup("paving"); + private final SettingGroup sgInventory = settings.createGroup("inventory"); + private final SettingGroup sgRenderDigging = settings.createGroup("render-digging"); + private final SettingGroup sgRenderPaving = settings.createGroup("render-paving"); // General private final Setting width = sgGeneral.add(new IntSetting.Builder() .name("width") - .description("Width of the highway.") .defaultValue(4) .range(1, 5) .sliderRange(1, 5) @@ -127,7 +126,6 @@ public enum BlockadeType { private final Setting height = sgGeneral.add(new IntSetting.Builder() .name("height") - .description("Height of the highway.") .defaultValue(3) .range(2, 5) .sliderRange(2, 5) @@ -136,21 +134,18 @@ public enum BlockadeType { private final Setting floor = sgGeneral.add(new EnumSetting.Builder() .name("floor") - .description("What floor placement mode to use.") .defaultValue(Floor.Replace) .build() ); private final Setting railings = sgGeneral.add(new BoolSetting.Builder() .name("railings") - .description("Builds railings next to the highway.") .defaultValue(true) .build() ); private final Setting cornerBlock = sgGeneral.add(new BoolSetting.Builder() .name("corner-support-block") - .description("Places a support block underneath the railings, to prevent air placing.") .defaultValue(true) .visible(railings::get) .build() @@ -158,35 +153,30 @@ public enum BlockadeType { private final Setting mineAboveRailings = sgGeneral.add(new BoolSetting.Builder() .name("mine-above-railings") - .description("Mines blocks above railings.") .defaultValue(true) .build() ); private final Setting rotation = sgGeneral.add(new EnumSetting.Builder() .name("rotation") - .description("Mode of rotation.") .defaultValue(Rotation.Both) .build() ); private final Setting disconnectOnToggle = sgGeneral.add(new BoolSetting.Builder() .name("disconnect-on-toggle") - .description("Automatically disconnects when the module is turned off, for example for not having enough blocks.") .defaultValue(false) .build() ); private final Setting pauseOnLag = sgGeneral.add(new BoolSetting.Builder() .name("pause-on-lag") - .description("Pauses the current process while the server stops responding.") .defaultValue(true) .build() ); private final Setting destroyCrystalTraps = sgGeneral.add(new BoolSetting.Builder() .name("destroy-crystal-traps") - .description("Use a bow to defuse crystal traps safely from a distance. An infinity bow is recommended.") .defaultValue(true) .build() ); @@ -195,14 +185,12 @@ public enum BlockadeType { private final Setting doubleMine = sgDigging.add(new BoolSetting.Builder() .name("double-mine") - .description("Whether to double mine blocks when applicable (normal mine and packet mine simultaneously).") .defaultValue(true) .build() ); private final Setting fastBreak = sgDigging.add(new BoolSetting.Builder() .name("fast-break") - .description("Whether to finish breaking blocks faster than normal while double mining.") .defaultValue(true) .visible(doubleMine::get) .build() @@ -210,14 +198,12 @@ public enum BlockadeType { private final Setting dontBreakTools = sgDigging.add(new BoolSetting.Builder() .name("dont-break-tools") - .description("Don't break tools.") .defaultValue(false) .build() ); private final Setting breakDurability = sgDigging.add(new IntSetting.Builder() .name("durability-percentage") - .description("The durability percentage at which to stop using a tool.") .defaultValue(2) .range(1, 100) .sliderRange(1, 100) @@ -227,7 +213,6 @@ public enum BlockadeType { private final Setting savePickaxes = sgDigging.add(new IntSetting.Builder() .name("save-pickaxes") - .description("How many pickaxes to ensure are saved. Hitting this number in your inventory will trigger a restock or the module toggling off.") .defaultValue(1) .range(0, 36) .sliderRange(0, 36) @@ -237,7 +222,6 @@ public enum BlockadeType { private final Setting breakDelay = sgDigging.add(new IntSetting.Builder() .name("break-delay") - .description("The delay between breaking blocks.") .defaultValue(0) .min(0) .build() @@ -245,7 +229,6 @@ public enum BlockadeType { private final Setting blocksPerTick = sgDigging.add(new IntSetting.Builder() .name("blocks-per-tick") - .description("The maximum amount of blocks that can be mined in a tick. Only applies to blocks instantly breakable.") .defaultValue(1) .range(1, 100) .sliderRange(1, 25) @@ -256,7 +239,6 @@ public enum BlockadeType { public final Setting> blocksToPlace = sgPaving.add(new BlockListSetting.Builder() .name("blocks-to-place") - .description("Blocks it is allowed to place.") .defaultValue(Blocks.OBSIDIAN) .filter(block -> Block.isShapeFullCube(block.getDefaultState().getCollisionShape(EmptyBlockView.INSTANCE, BlockPos.ORIGIN))) .build() @@ -264,7 +246,6 @@ public enum BlockadeType { private final Setting placeRange = sgPaving.add(new DoubleSetting.Builder() .name("place-range") - .description("The maximum distance at which you can place blocks.") .defaultValue(4.5) .sliderMax(5.5) .build() @@ -272,7 +253,6 @@ public enum BlockadeType { private final Setting placeDelay = sgPaving.add(new IntSetting.Builder() .name("place-delay") - .description("The delay between placing blocks.") .defaultValue(0) .min(0) .build() @@ -280,7 +260,6 @@ public enum BlockadeType { private final Setting placementsPerTick = sgPaving.add(new IntSetting.Builder() .name("placements-per-tick") - .description("The maximum amount of blocks that can be placed in a tick.") .defaultValue(1) .min(1) .build() @@ -290,7 +269,6 @@ public enum BlockadeType { private final Setting> trashItems = sgInventory.add(new ItemListSetting.Builder() .name("trash-items") - .description("Items that are considered trash and can be thrown out.") .defaultValue( Items.NETHERRACK, Items.QUARTZ, Items.GOLD_NUGGET, Items.GOLDEN_SWORD, Items.GLOWSTONE_DUST, Items.GLOWSTONE, Items.BLACKSTONE, Items.BASALT, Items.GHAST_TEAR, Items.SOUL_SAND, Items.SOUL_SOIL, @@ -301,7 +279,6 @@ public enum BlockadeType { private final Setting inventoryDelay = sgInventory.add(new IntSetting.Builder() .name("inventory-delay") - .description("Delay in ticks on inventory interactions.") .defaultValue(3) .min(0) .build() @@ -309,28 +286,24 @@ public enum BlockadeType { private final Setting ejectUselessShulkers = sgInventory.add(new BoolSetting.Builder() .name("eject-useless-shulkers") - .description("Whether you should eject useless shulkers. Warning - will throw out any shulkers that don't contain blocks to place, pickaxes, or food. Be careful with your kits.") .defaultValue(true) .build() ); private final Setting searchEnderChest = sgInventory.add(new BoolSetting.Builder() .name("search-ender-chest") - .description("Searches your ender chest to find items to use. Be careful with this one, especially if you let it search through shulkers.") .defaultValue(false) .build() ); private final Setting searchShulkers = sgInventory.add(new BoolSetting.Builder() .name("search-shulkers") - .description("Searches through shulkers to find items to use.") .defaultValue(true) .build() ); private final Setting minEmpty = sgInventory.add(new IntSetting.Builder() .name("minimum-empty-slots") - .description("The minimum amount of empty slots you want left after mining obsidian.") .defaultValue(3) .sliderRange(0, 9) .min(0) @@ -339,14 +312,12 @@ public enum BlockadeType { private final Setting mineEnderChests = sgInventory.add(new BoolSetting.Builder() .name("mine-ender-chests") - .description("Mines ender chests for obsidian.") .defaultValue(true) .build() ); private final Setting blockadeType = sgInventory.add(new EnumSetting.Builder() .name("echest-blockade-type") - .description("What blockade type to use (the structure placed when mining echests).") .defaultValue(BlockadeType.Full) .visible(mineEnderChests::get) .build() @@ -354,7 +325,6 @@ public enum BlockadeType { public final Setting saveEchests = sgInventory.add(new IntSetting.Builder() .name("save-ender-chests") - .description("How many ender chests to ensure are saved. Hitting this number in your inventory will trigger a restock or the module toggling off.") .defaultValue(2) .range(0, 64) .sliderRange(0, 64) @@ -364,7 +334,6 @@ public enum BlockadeType { private final Setting rebreakEchests = sgInventory.add(new BoolSetting.Builder() .name("instantly-rebreak-echests") - .description("Whether or not to use the instant rebreak exploit to break echests.") .defaultValue(false) .visible(mineEnderChests::get) .build() @@ -372,7 +341,6 @@ public enum BlockadeType { private final Setting rebreakTimer = sgInventory.add(new IntSetting.Builder() .name("rebreak-delay") - .description("Delay between rebreak attempts.") .defaultValue(0) .sliderMax(20) .visible(() -> mineEnderChests.get() && rebreakEchests.get()) @@ -383,28 +351,24 @@ public enum BlockadeType { private final Setting renderMine = sgRenderDigging.add(new BoolSetting.Builder() .name("render-blocks-to-mine") - .description("Render blocks to be mined.") .defaultValue(true) .build() ); private final Setting renderMineShape = sgRenderDigging.add(new EnumSetting.Builder() .name("blocks-to-mine-shape-mode") - .description("How the blocks to be mined are rendered.") .defaultValue(ShapeMode.Both) .build() ); private final Setting renderMineSideColor = sgRenderDigging.add(new ColorSetting.Builder() .name("blocks-to-mine-side-color") - .description("Color of blocks to be mined.") .defaultValue(new SettingColor(225, 25, 25, 25)) .build() ); private final Setting renderMineLineColor = sgRenderDigging.add(new ColorSetting.Builder() .name("blocks-to-mine-line-color") - .description("Color of blocks to be mined.") .defaultValue(new SettingColor(225, 25, 25)) .build() ); @@ -413,28 +377,24 @@ public enum BlockadeType { private final Setting renderPlace = sgRenderPaving.add(new BoolSetting.Builder() .name("render-blocks-to-place") - .description("Render blocks to be placed.") .defaultValue(true) .build() ); private final Setting renderPlaceShape = sgRenderPaving.add(new EnumSetting.Builder() .name("blocks-to-place-shape-mode") - .description("How the blocks to be placed are rendered.") .defaultValue(ShapeMode.Both) .build() ); private final Setting renderPlaceSideColor = sgRenderPaving.add(new ColorSetting.Builder() .name("blocks-to-place-side-color") - .description("Color of blocks to be placed.") .defaultValue(new SettingColor(25, 25, 225, 25)) .build() ); private final Setting renderPlaceLineColor = sgRenderPaving.add(new ColorSetting.Builder() .name("blocks-to-place-line-color") - .description("Color of blocks to be placed.") .defaultValue(new SettingColor(25, 25, 225)) .build() ); @@ -462,7 +422,7 @@ public enum BlockadeType { private final MBlockPos posRender3 = new MBlockPos(); public HighwayBuilder() { - super(Categories.World, "highway-builder", "Automatically builds highways."); + super(Categories.World, "highway-builder"); runInMainMenu = true; } @@ -712,7 +672,7 @@ private boolean canPlace(MBlockPos pos, boolean liquids) { } private void disconnect(String message, Object... args) { - MutableText text = Text.literal(String.format("%s[%s%s%s] %s", Formatting.GRAY, Formatting.BLUE, title, Formatting.GRAY, Formatting.RED) + String.format(message, args)).append("\n"); + MutableText text = Text.literal(String.format("%s[%s%s%s] %s", Formatting.GRAY, Formatting.BLUE, this.getTitle(), Formatting.GRAY, Formatting.RED) + String.format(message, args)).append("\n"); text.append(getStatsText()); mc.getNetworkHandler().getConnection().disconnect(text); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/InfinityMiner.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/InfinityMiner.java index 18c85701c6..4b0968bd3a 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/InfinityMiner.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/InfinityMiner.java @@ -34,15 +34,15 @@ import java.util.List; import java.util.function.Predicate; +// todo map public class InfinityMiner extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgWhenFull = settings.createGroup("When Full"); + private final SettingGroup sgWhenFull = settings.createGroup("when-full"); // General public final Setting> targetBlocks = sgGeneral.add(new BlockListSetting.Builder() .name("target-blocks") - .description("The target blocks to mine.") .defaultValue(Blocks.DIAMOND_ORE, Blocks.DEEPSLATE_DIAMOND_ORE) .filter(this::filterBlocks) .build() @@ -50,14 +50,12 @@ public class InfinityMiner extends Module { public final Setting> targetItems = sgGeneral.add(new ItemListSetting.Builder() .name("target-items") - .description("The target items to collect.") .defaultValue(Items.DIAMOND) .build() ); public final Setting> repairBlocks = sgGeneral.add(new BlockListSetting.Builder() .name("repair-blocks") - .description("The repair blocks to mine.") .defaultValue(Blocks.COAL_ORE, Blocks.REDSTONE_ORE, Blocks.NETHER_QUARTZ_ORE) .filter(this::filterBlocks) .build() @@ -65,7 +63,6 @@ public class InfinityMiner extends Module { public final Setting startRepairing = sgGeneral.add(new DoubleSetting.Builder() .name("repair-threshold") - .description("The durability percentage at which to start repairing.") .defaultValue(20) .range(1, 99) .sliderRange(1, 99) @@ -74,7 +71,6 @@ public class InfinityMiner extends Module { public final Setting startMining = sgGeneral.add(new DoubleSetting.Builder() .name("mine-threshold") - .description("The durability percentage at which to start mining.") .defaultValue(70) .range(1, 99) .sliderRange(1, 99) @@ -85,14 +81,12 @@ public class InfinityMiner extends Module { public final Setting walkHome = sgWhenFull.add(new BoolSetting.Builder() .name("walk-home") - .description("Will walk 'home' when your inventory is full.") .defaultValue(false) .build() ); public final Setting logOut = sgWhenFull.add(new BoolSetting.Builder() .name("log-out") - .description("Logs out when your inventory is full. Will walk home FIRST if walk home is enabled.") .defaultValue(false) .build() ); @@ -106,7 +100,7 @@ public class InfinityMiner extends Module { private boolean repairing; public InfinityMiner() { - super(Categories.World, "infinity-miner", "Allows you to essentially mine forever by mining repair blocks when the durability gets low. Needs a mending pickaxe."); + super(Categories.World, "infinity-miner"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/LiquidFiller.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/LiquidFiller.java index cd3b248e9e..d73e95d0b2 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/LiquidFiller.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/LiquidFiller.java @@ -31,25 +31,22 @@ public class LiquidFiller extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgWhitelist = settings.createGroup("Whitelist"); + private final SettingGroup sgWhitelist = settings.createGroup("whitelist"); private final Setting placeInLiquids = sgGeneral.add(new EnumSetting.Builder() .name("place-in") - .description("What type of liquids to place in.") .defaultValue(PlaceIn.Both) .build() ); private final Setting shape = sgGeneral.add(new EnumSetting.Builder() .name("shape") - .description("The shape of placing algorithm.") .defaultValue(Shape.Sphere) .build() ); private final Setting placeRange = sgGeneral.add(new DoubleSetting.Builder() .name("place-range") - .description("The range at which blocks can be placed.") .defaultValue(4.5) .min(0) .sliderMax(6) @@ -58,7 +55,6 @@ public class LiquidFiller extends Module { private final Setting placeWallsRange = sgGeneral.add(new DoubleSetting.Builder() .name("walls-range") - .description("Range in which to place when behind blocks.") .defaultValue(4.5) .min(0) .sliderMax(6) @@ -67,7 +63,6 @@ public class LiquidFiller extends Module { private final Setting delay = sgGeneral.add(new IntSetting.Builder() .name("delay") - .description("Delay between actions in ticks.") .defaultValue(0) .min(0) .build() @@ -75,7 +70,6 @@ public class LiquidFiller extends Module { private final Setting maxBlocksPerTick = sgGeneral.add(new IntSetting.Builder() .name("max-blocks-per-tick") - .description("Maximum blocks to try to place per tick.") .defaultValue(1) .min(1) .sliderRange(1, 10) @@ -84,14 +78,12 @@ public class LiquidFiller extends Module { private final Setting sortMode = sgGeneral.add(new EnumSetting.Builder() .name("sort-mode") - .description("The blocks you want to place first.") .defaultValue(SortMode.Furthest) .build() ); private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() .name("rotate") - .description("Automatically rotates towards the space targeted for filling.") .defaultValue(true) .build() ); @@ -100,14 +92,12 @@ public class LiquidFiller extends Module { private final Setting listMode = sgWhitelist.add(new EnumSetting.Builder() .name("list-mode") - .description("Selection mode.") .defaultValue(ListMode.Whitelist) .build() ); private final Setting> whitelist = sgWhitelist.add(new BlockListSetting.Builder() .name("whitelist") - .description("The allowed blocks that it will use to fill up the liquid.") .defaultValue( Blocks.DIRT, Blocks.COBBLESTONE, @@ -123,7 +113,6 @@ public class LiquidFiller extends Module { private final Setting> blacklist = sgWhitelist.add(new BlockListSetting.Builder() .name("blacklist") - .description("The denied blocks that it not will use to fill up the liquid.") .visible(() -> listMode.get() == ListMode.Blacklist) .build() ); @@ -133,7 +122,7 @@ public class LiquidFiller extends Module { private int timer; public LiquidFiller(){ - super(Categories.World, "liquid-filler", "Places blocks inside of liquid source blocks within range of you."); + super(Categories.World, "liquid-filler"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/MountBypass.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/MountBypass.java index f4b33af72b..1127d495e8 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/MountBypass.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/MountBypass.java @@ -17,7 +17,7 @@ public class MountBypass extends Module { private boolean dontCancel; public MountBypass() { - super(Categories.World, "mount-bypass", "Allows you to bypass the IllegalStacks plugin and put chests on entities."); + super(Categories.World, "mount-bypass"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/NoGhostBlocks.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/NoGhostBlocks.java index e05462d3ae..caa3b50607 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/NoGhostBlocks.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/NoGhostBlocks.java @@ -20,20 +20,18 @@ public class NoGhostBlocks extends Module { private final Setting breaking = sgGeneral.add(new BoolSetting.Builder() .name("breaking") - .description("Whether to apply for block breaking actions.") .defaultValue(true) .build() ); public final Setting placing = sgGeneral.add(new BoolSetting.Builder() .name("placing") - .description("Whether to apply for block placement actions.") .defaultValue(true) .build() ); public NoGhostBlocks() { - super(Categories.World, "no-ghost-blocks", "Attempts to prevent ghost blocks arising."); + super(Categories.World, "no-ghost-blocks"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Nuker.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Nuker.java index a644676956..c364769bb6 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Nuker.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Nuker.java @@ -46,28 +46,25 @@ public class Nuker extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgWhitelist = settings.createGroup("Whitelist"); - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgWhitelist = settings.createGroup("whitelist"); + private final SettingGroup sgRender = settings.createGroup("render"); // General private final Setting shape = sgGeneral.add(new EnumSetting.Builder() .name("shape") - .description("The shape of nuking algorithm.") .defaultValue(Shape.Sphere) .build() ); private final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("The way the blocks are broken.") .defaultValue(Mode.Flatten) .build() ); private final Setting range = sgGeneral.add(new DoubleSetting.Builder() .name("range") - .description("The break range.") .defaultValue(4) .min(0) .visible(() -> shape.get() != Shape.Cube) @@ -76,7 +73,6 @@ public class Nuker extends Module { private final Setting range_up = sgGeneral.add(new IntSetting.Builder() .name("up") - .description("The break range.") .defaultValue(1) .min(0) .visible(() -> shape.get() == Shape.Cube) @@ -85,7 +81,6 @@ public class Nuker extends Module { private final Setting range_down = sgGeneral.add(new IntSetting.Builder() .name("down") - .description("The break range.") .defaultValue(1) .min(0) .visible(() -> shape.get() == Shape.Cube) @@ -94,7 +89,6 @@ public class Nuker extends Module { private final Setting range_left = sgGeneral.add(new IntSetting.Builder() .name("left") - .description("The break range.") .defaultValue(1) .min(0) .visible(() -> shape.get() == Shape.Cube) @@ -103,7 +97,6 @@ public class Nuker extends Module { private final Setting range_right = sgGeneral.add(new IntSetting.Builder() .name("right") - .description("The break range.") .defaultValue(1) .min(0) .visible(() -> shape.get() == Shape.Cube) @@ -112,7 +105,6 @@ public class Nuker extends Module { private final Setting range_forward = sgGeneral.add(new IntSetting.Builder() .name("forward") - .description("The break range.") .defaultValue(1) .min(0) .visible(() -> shape.get() == Shape.Cube) @@ -121,7 +113,6 @@ public class Nuker extends Module { private final Setting range_back = sgGeneral.add(new IntSetting.Builder() .name("back") - .description("The break range.") .defaultValue(1) .min(0) .visible(() -> shape.get() == Shape.Cube) @@ -130,7 +121,6 @@ public class Nuker extends Module { private final Setting wallsRange = sgGeneral.add(new DoubleSetting.Builder() .name("walls-range") - .description("Range in which to break when behind blocks.") .defaultValue(4.0) .min(0) .sliderMax(6) @@ -139,14 +129,12 @@ public class Nuker extends Module { private final Setting delay = sgGeneral.add(new IntSetting.Builder() .name("delay") - .description("Delay in ticks between breaking blocks.") .defaultValue(0) .build() ); private final Setting maxBlocksPerTick = sgGeneral.add(new IntSetting.Builder() .name("max-blocks-per-tick") - .description("Maximum blocks to try to break per tick. Useful when insta mining.") .defaultValue(1) .min(1) .build() @@ -154,35 +142,30 @@ public class Nuker extends Module { private final Setting sortMode = sgGeneral.add(new EnumSetting.Builder() .name("sort-mode") - .description("The blocks you want to mine first.") .defaultValue(SortMode.Closest) .build() ); private final Setting packetMine = sgGeneral.add(new BoolSetting.Builder() .name("packet-mine") - .description("Attempt to instamine everything at once.") .defaultValue(false) .build() ); private final Setting suitableTools = sgGeneral.add(new BoolSetting.Builder() .name("only-suitable-tools") - .description("Only mines when using an appropriate for the block.") .defaultValue(false) .build() ); private final Setting interact = sgGeneral.add(new BoolSetting.Builder() .name("interact") - .description("Interacts with the block instead of mining.") .defaultValue(false) .build() ); private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() .name("rotate") - .description("Rotates server-side to the block being mined.") .defaultValue(true) .build() ); @@ -191,28 +174,24 @@ public class Nuker extends Module { private final Setting listMode = sgWhitelist.add(new EnumSetting.Builder() .name("list-mode") - .description("Selection mode.") .defaultValue(ListMode.Blacklist) .build() ); private final Setting> blacklist = sgWhitelist.add(new BlockListSetting.Builder() .name("blacklist") - .description("The blocks you don't want to mine.") .visible(() -> listMode.get() == ListMode.Blacklist) .build() ); private final Setting> whitelist = sgWhitelist.add(new BlockListSetting.Builder() .name("whitelist") - .description("The blocks you want to mine.") .visible(() -> listMode.get() == ListMode.Whitelist) .build() ); private final Setting selectBlockBind = sgWhitelist.add(new KeybindSetting.Builder() .name("select-block-bind") - .description("Adds targeted block to list when this button is pressed.") .defaultValue(Keybind.none()) .build() ); @@ -221,49 +200,42 @@ public class Nuker extends Module { private final Setting swing = sgRender.add(new BoolSetting.Builder() .name("swing") - .description("Whether to swing hand client-side.") .defaultValue(true) .build() ); private final Setting enableRenderBounding = sgRender.add(new BoolSetting.Builder() .name("bounding-box") - .description("Enable rendering bounding box for Cube and Uniform Cube.") .defaultValue(true) .build() ); private final Setting shapeModeBox = sgRender.add(new EnumSetting.Builder() .name("nuke-box-mode") - .description("How the shape for the bounding box is rendered.") .defaultValue(ShapeMode.Both) .build() ); private final Setting sideColorBox = sgRender.add(new ColorSetting.Builder() .name("side-color") - .description("The side color of the bounding box.") .defaultValue(new SettingColor(16,106,144, 100)) .build() ); private final Setting lineColorBox = sgRender.add(new ColorSetting.Builder() .name("line-color") - .description("The line color of the bounding box.") .defaultValue(new SettingColor(16,106,144, 255)) .build() ); private final Setting enableRenderBreaking = sgRender.add(new BoolSetting.Builder() .name("broken-blocks") - .description("Enable rendering bounding box for Cube and Uniform Cube.") .defaultValue(true) .build() ); private final Setting shapeModeBreak = sgRender.add(new EnumSetting.Builder() .name("nuke-block-mode") - .description("How the shapes for broken blocks are rendered.") .defaultValue(ShapeMode.Both) .visible(enableRenderBreaking::get) .build() @@ -271,7 +243,6 @@ public class Nuker extends Module { private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") - .description("The side color of the target block rendering.") .defaultValue(new SettingColor(255, 0, 0, 80)) .visible(enableRenderBreaking::get) .build() @@ -279,7 +250,6 @@ public class Nuker extends Module { private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") - .description("The line color of the target block rendering.") .defaultValue(new SettingColor(255, 0, 0, 255)) .visible(enableRenderBreaking::get) .build() @@ -300,7 +270,7 @@ public class Nuker extends Module { int maxv = 0; public Nuker() { - super(Categories.World, "nuker", "Breaks blocks around you."); + super(Categories.World, "nuker"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/PacketMine.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/PacketMine.java index d2fd88d8da..a3209d11db 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/PacketMine.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/PacketMine.java @@ -35,13 +35,12 @@ public class PacketMine extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgRender = settings.createGroup("render"); // General private final Setting delay = sgGeneral.add(new IntSetting.Builder() .name("delay") - .description("Delay between mining blocks in ticks.") .defaultValue(1) .min(0) .build() @@ -49,21 +48,18 @@ public class PacketMine extends Module { private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() .name("rotate") - .description("Sends rotation packets to the server when mining.") .defaultValue(true) .build() ); private final Setting autoSwitch = sgGeneral.add(new BoolSetting.Builder() .name("auto-switch") - .description("Automatically switches to the best tool when the block is ready to be mined instantly.") .defaultValue(false) .build() ); private final Setting notOnUse = sgGeneral.add(new BoolSetting.Builder() .name("not-on-use") - .description("Won't auto switch if you're using an item.") .defaultValue(true) .visible(autoSwitch::get) .build() @@ -71,7 +67,6 @@ public class PacketMine extends Module { private final Setting obscureBreakingProgress = sgGeneral.add(new BoolSetting.Builder() .name("obscure-breaking-progress") - .description("Spams abort breaking packets to obscure the block mining progress from other players. Does not hide it perfectly.") .defaultValue(false) .build() ); @@ -80,42 +75,36 @@ public class PacketMine extends Module { private final Setting render = sgRender.add(new BoolSetting.Builder() .name("render") - .description("Whether or not to render the block being mined.") .defaultValue(true) .build() ); private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); private final Setting readySideColor = sgRender.add(new ColorSetting.Builder() .name("ready-side-color") - .description("The color of the sides of the blocks that can be broken.") .defaultValue(new SettingColor(0, 204, 0, 10)) .build() ); private final Setting readyLineColor = sgRender.add(new ColorSetting.Builder() .name("ready-line-color") - .description("The color of the lines of the blocks that can be broken.") .defaultValue(new SettingColor(0, 204, 0, 255)) .build() ); private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") - .description("The color of the sides of the blocks being rendered.") .defaultValue(new SettingColor(204, 0, 0, 10)) .build() ); private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") - .description("The color of the lines of the blocks being rendered.") .defaultValue(new SettingColor(204, 0, 0, 255)) .build() ); @@ -126,7 +115,7 @@ public class PacketMine extends Module { private boolean swapped, shouldUpdateSlot; public PacketMine() { - super(Categories.World, "packet-mine", "Sends packets to mine blocks without the mining animation."); + super(Categories.World, "packet-mine"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/SpawnProofer.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/SpawnProofer.java index b1c7856378..28387d3847 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/SpawnProofer.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/SpawnProofer.java @@ -31,7 +31,6 @@ public class SpawnProofer extends Module { private final Setting placeDelay = sgGeneral.add(new IntSetting.Builder() .name("place-delay") - .description("The tick delay between placing blocks.") .defaultValue(1) .range(0, 10) .build() @@ -39,7 +38,6 @@ public class SpawnProofer extends Module { private final Setting placeRange = sgGeneral.add(new DoubleSetting.Builder() .name("place-range") - .description("How far away from the player you can place a block.") .defaultValue(4.5) .min(0) .sliderMax(6) @@ -48,7 +46,6 @@ public class SpawnProofer extends Module { private final Setting wallsRange = sgGeneral.add(new DoubleSetting.Builder() .name("walls-range") - .description("How far away from the player you can place a block behind walls.") .defaultValue(4.5) .min(0) .sliderMax(6) @@ -57,7 +54,6 @@ public class SpawnProofer extends Module { private final Setting blocksPerTick = sgGeneral.add(new IntSetting.Builder() .name("blocks-per-tick") - .description("How many blocks to place in one tick.") .defaultValue(1) .min(1) .build() @@ -65,7 +61,6 @@ public class SpawnProofer extends Module { private final Setting lightLevel = sgGeneral.add(new IntSetting.Builder() .name("light-level") - .description("Light levels to spawn proof. Old spawning light: 7.") .defaultValue(0) .min(0) .sliderMax(15) @@ -74,7 +69,6 @@ public class SpawnProofer extends Module { private final Setting> blocks = sgGeneral.add(new BlockListSetting.Builder() .name("blocks") - .description("Block to use for spawn proofing.") .defaultValue(Blocks.TORCH, Blocks.STONE_BUTTON, Blocks.STONE_SLAB) .filter(this::filterBlocks) .build() @@ -82,14 +76,12 @@ public class SpawnProofer extends Module { private final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("Which spawn types should be spawn proofed.") .defaultValue(Mode.Both) .build() ); private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() .name("rotate") - .description("Rotates towards the blocks being placed.") .defaultValue(true) .build() ); @@ -99,7 +91,7 @@ public class SpawnProofer extends Module { private int timer; public SpawnProofer() { - super(Categories.World, "spawn-proofer", "Automatically spawnproofs unlit areas."); + super(Categories.World, "spawn-proofer"); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/StashFinder.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/StashFinder.java index cd25bf95d5..3bc9693430 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/StashFinder.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/StashFinder.java @@ -51,7 +51,7 @@ public class StashFinder extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgRender = settings.createGroup("render"); private static final List DEFAULT_SUPPORT_BLOCK_BLACKLIST = List.of( Blocks.OXIDIZED_COPPER, @@ -66,14 +66,12 @@ public class StashFinder extends Module { private final Setting>> storageBlocks = sgGeneral.add(new StorageBlockListSetting.Builder() .name("storage-blocks") - .description("Select the storage blocks to search for.") .defaultValue(StorageBlockListSetting.STORAGE_BLOCKS) .build() ); private final Setting minimumStorageCount = sgGeneral.add(new IntSetting.Builder() .name("minimum-storage-count") - .description("The minimum amount of storage blocks in a chunk to record the chunk.") .defaultValue(4) .min(1) .sliderMin(1) @@ -82,14 +80,12 @@ public class StashFinder extends Module { private final Setting> blacklistedBlocks = sgGeneral.add(new BlockListSetting.Builder() .name("blacklisted-support-blocks") - .description("Blocks that prevent counting a storage block entity when it sits on them.") .defaultValue(DEFAULT_SUPPORT_BLOCK_BLACKLIST) .build() ); private final Setting minimumDistance = sgGeneral.add(new IntSetting.Builder() .name("minimum-distance") - .description("The minimum distance you must be from spawn to record a certain chunk.") .defaultValue(0) .min(0) .sliderMax(10000) @@ -98,14 +94,12 @@ public class StashFinder extends Module { private final Setting sendNotifications = sgGeneral.add(new BoolSetting.Builder() .name("notifications") - .description("Sends Minecraft notifications when new stashes are found.") .defaultValue(true) .build() ); private final Setting notificationMode = sgGeneral.add(new EnumSetting.Builder() .name("notification-mode") - .description("The mode to use for notifications.") .defaultValue(Mode.Both) .visible(sendNotifications::get) .build() @@ -113,14 +107,12 @@ public class StashFinder extends Module { private final Setting renderTracer = sgRender.add(new BoolSetting.Builder() .name("render-tracer") - .description("Renders a tracer to the last found stash.") .defaultValue(true) .build() ); private final Setting traceColor = sgRender.add(new ColorSetting.Builder() .name("tracer-color") - .description("Color of the stash tracer.") .defaultValue(new SettingColor(255, 215, 0, 255)) .visible(renderTracer::get) .build() @@ -128,7 +120,6 @@ public class StashFinder extends Module { private final Setting traceArrivalDistance = sgRender.add(new IntSetting.Builder() .name("tracer-hide-at-distance") - .description("Hide the trace when you are this close to the stash.") .defaultValue(16) .min(1) .sliderMin(1) @@ -139,7 +130,6 @@ public class StashFinder extends Module { private final Setting traceMaxDistance = sgRender.add(new IntSetting.Builder() .name("tracer-max-distance") - .description("Hide the trace when you are farther than this distance from the stash.") .defaultValue(2000) .min(10) .sliderMin(50) @@ -150,14 +140,12 @@ public class StashFinder extends Module { private final Setting renderChunkColumn = sgRender.add(new BoolSetting.Builder() .name("render-chunk-column") - .description("Renders a vertical column at the center of traced chunks.") .defaultValue(false) .build() ); private final Setting traceColumnColor = sgRender.add(new ColorSetting.Builder() .name("chunk-column-color") - .description("Color of the stash tracer column.") .defaultValue(new SettingColor(255, 215, 0, 100)) .visible(renderChunkColumn::get) .build() @@ -165,7 +153,6 @@ public class StashFinder extends Module { private final Setting clearTracesBind = sgRender.add(new KeybindSetting.Builder() .name("clear-traces-bind") - .description("Keybind to clear all stash traces.") .defaultValue(Keybind.none()) .build() ); @@ -175,7 +162,7 @@ public class StashFinder extends Module { public List chunks = new ArrayList<>(); public StashFinder() { - super(Categories.World, "stash-finder", "Searches loaded chunks for storage blocks. Saves to /meteor-client"); + super(Categories.World, "stash-finder"); } @Override @@ -236,12 +223,12 @@ private void onChunkData(ChunkDataEvent event) { switch (notificationMode.get()) { case Chat -> sendChatNotification(chunk); case Toast -> { - MeteorToast toast = new MeteorToast.Builder(title).icon(Items.CHEST).text("Found Stash!").build(); + MeteorToast toast = new MeteorToast.Builder(this.getTitle()).icon(Items.CHEST).text("Found Stash!").build(); mc.getToastManager().add(toast); } case Both -> { sendChatNotification(chunk); - MeteorToast toast = new MeteorToast.Builder(title).icon(Items.CHEST).text("Found Stash!").build(); + MeteorToast toast = new MeteorToast.Builder(this.getTitle()).icon(Items.CHEST).text("Found Stash!").build(); mc.getToastManager().add(toast); } } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Timer.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Timer.java index 7f0bd8f516..6b97670b4a 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Timer.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Timer.java @@ -16,7 +16,6 @@ public class Timer extends Module { private final Setting multiplier = sgGeneral.add(new DoubleSetting.Builder() .name("multiplier") - .description("The timer multiplier amount.") .defaultValue(1) .min(0.1) .sliderMin(0.1) @@ -27,7 +26,7 @@ public class Timer extends Module { private double override = 1; public Timer() { - super(Categories.World, "timer", "Changes the speed of everything in your game."); + super(Categories.World, "timer"); } public double getMultiplier() { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/VeinMiner.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/VeinMiner.java index 1060dd4082..ef7a7ac268 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/VeinMiner.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/VeinMiner.java @@ -34,7 +34,7 @@ public class VeinMiner extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgRender = settings.createGroup("render"); private final Set blockNeighbours = Set.of( new Vec3i(1, -1, 1), new Vec3i(0, -1, 1), new Vec3i(-1, -1, 1), @@ -54,21 +54,18 @@ public class VeinMiner extends Module { private final Setting> selectedBlocks = sgGeneral.add(new BlockListSetting.Builder() .name("blocks") - .description("Which blocks to select.") .defaultValue(Blocks.STONE, Blocks.DIRT, Blocks.GRASS_BLOCK) .build() ); private final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("Selection mode.") .defaultValue(ListMode.Blacklist) .build() ); private final Setting depth = sgGeneral.add(new IntSetting.Builder() .name("depth") - .description("Amount of iterations used to scan for similar blocks.") .defaultValue(3) .min(1) .sliderRange(1, 15) @@ -77,7 +74,6 @@ public class VeinMiner extends Module { private final Setting delay = sgGeneral.add(new IntSetting.Builder() .name("delay") - .description("Delay between mining blocks.") .defaultValue(0) .min(0) .sliderRange(0, 20) @@ -86,7 +82,6 @@ public class VeinMiner extends Module { private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() .name("rotate") - .description("Sends rotation packets to the server when mining.") .defaultValue(true) .build() ); @@ -95,35 +90,30 @@ public class VeinMiner extends Module { private final Setting swingHand = sgRender.add(new BoolSetting.Builder() .name("swing-hand") - .description("Swing hand client-side.") .defaultValue(true) .build() ); private final Setting render = sgRender.add(new BoolSetting.Builder() .name("render") - .description("Whether or not to render the block being mined.") .defaultValue(true) .build() ); private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") - .description("The color of the sides of the blocks being rendered.") .defaultValue(new SettingColor(204, 0, 0, 10)) .build() ); private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") - .description("The color of the lines of the blocks being rendered.") .defaultValue(new SettingColor(204, 0, 0, 255)) .build() ); @@ -135,7 +125,7 @@ public class VeinMiner extends Module { private int tick = 0; public VeinMiner() { - super(Categories.World, "vein-miner", "Mines all nearby blocks with this type"); + super(Categories.World, "vein-miner"); } @Override diff --git a/src/main/resources/assets/meteor-client/language/en_us.json b/src/main/resources/assets/meteor-client/language/en_us.json index c27502e5fe..c71eb7572f 100644 --- a/src/main/resources/assets/meteor-client/language/en_us.json +++ b/src/main/resources/assets/meteor-client/language/en_us.json @@ -70,5 +70,3387 @@ "meteor.command.wasp.description": "Sets the auto wasp target.", "meteor.command.wasp.exception.cant_wasp_self": "You cannot target yourself!", "meteor.command.wasp.info.target": "%s set as target.", - "meteor.command.waypoint.description": "Manages waypoints." + "meteor.command.waypoint.description": "Manages waypoints.", + + "category.combat": "Combat", + "category.player": "Player", + "category.movement": "Movement", + "category.render": "Render", + "category.world": "World", + "category.misc": "Misc", + + "module.base.general": "General", + + "module.air-jump": "Air Jump", + "module.air-jump.description": "Lets you jump in the air.", + "module.air-jump.general.maintain-level": "Maintain Level", + "module.air-jump.general.maintain-level.description": "Maintains your current Y level when holding the jump key.", + + "module.auto-fish": "Auto Fish", + "module.auto-fish.description": "Automatically fishes for you.", + "module.auto-fish.general.auto-switch": "Auto Switch", + "module.auto-fish.general.auto-switch.description": "Automatically switch to a fishing rod.", + "module.auto-fish.general.anti-break": "Anti Break", + "module.auto-fish.general.anti-break.description": "Avoid using rods that would break if they were cast.", + "module.auto-fish.general.auto-cast": "Auto Cast", + "module.auto-fish.general.auto-cast.description": "Automatically cast the fishing rod.", + "module.auto-fish.general.cast-delay": "Cast Delay", + "module.auto-fish.general.cast-delay.description": "How long to wait between recasts if the bobber fails to land in water.", + "module.auto-fish.general.cast-delay-variance": "Cast Delay Variance", + "module.auto-fish.general.cast-delay-variance.description": "Maximum amount of randomness added to cast delay.", + "module.auto-fish.general.catch-delay": "Catch Delay", + "module.auto-fish.general.catch-delay.description": "How long to wait after hooking a fish to reel it in.", + "module.auto-fish.general.catch-delay-variance": "Catch Delay Variance", + "module.auto-fish.general.catch-delay-variance.description": "Maximum amount of randomness added to catch delay.", + + "module.name-protect": "Name Protect", + "module.name-protect.description": "Hide player names and skins.", + "module.name-protect.general.name-protect": "Name Protect", + "module.name-protect.general.name-protect.description": "Hides your name client-side.", + "module.name-protect.general.name": "Name", + "module.name-protect.general.name.description": "Name to be replaced with.", + "module.name-protect.general.skin-protect": "Skin Protect", + "module.name-protect.general.skin-protect.description": "Make players become Steves.", + + "module.velocity": "Velocity", + "module.velocity.description": "Prevents you from being moved by external forces.", + "module.velocity.general.knockback": "Knockback", + "module.velocity.general.knockback.description": "Modifies the amount of knockback you take from attacks.", + "module.velocity.general.knockback-horizontal": "Knockback Horizontal", + "module.velocity.general.knockback-horizontal.description": "How much horizontal knockback you will take.", + "module.velocity.general.knockback-vertical": "Knockback Vertical", + "module.velocity.general.knockback-vertical.description": "How much vertical knockback you will take.", + "module.velocity.general.explosions": "Explosions", + "module.velocity.general.explosions.description": "Modifies your knockback from explosions.", + "module.velocity.general.explosions-horizontal": "Explosions Horizontal", + "module.velocity.general.explosions-horizontal.description": "How much velocity you will take from explosions horizontally.", + "module.velocity.general.explosions-vertical": "Explosions Vertical", + "module.velocity.general.explosions-vertical.description": "How much velocity you will take from explosions vertically.", + "module.velocity.general.liquids": "Liquids", + "module.velocity.general.liquids.description": "Modifies the amount you are pushed by flowing liquids.", + "module.velocity.general.liquids-horizontal": "Liquids Horizontal", + "module.velocity.general.liquids-horizontal.description": "How much velocity you will take from liquids horizontally.", + "module.velocity.general.liquids-vertical": "Liquids Vertical", + "module.velocity.general.liquids-vertical.description": "How much velocity you will take from liquids vertically.", + "module.velocity.general.entity-push": "Entity Push", + "module.velocity.general.entity-push.description": "Modifies the amount you are pushed by entities.", + "module.velocity.general.entity-push-amount": "Entity Push Amount", + "module.velocity.general.entity-push-amount.description": "How much you will be pushed.", + "module.velocity.general.blocks": "Blocks", + "module.velocity.general.blocks.description": "Prevents you from being pushed out of blocks.", + "module.velocity.general.sinking": "Sinking", + "module.velocity.general.sinking.description": "Prevents you from sinking in liquids.", + "module.velocity.general.fishing": "Fishing", + "module.velocity.general.fishing.description": "Prevents you from being pulled by fishing rods.", + + "module.no-ghost-blocks": "No Ghost Blocks", + "module.no-ghost-blocks.description": "Attempts to prevent ghost blocks arising.", + "module.no-ghost-blocks.general.breaking": "Breaking", + "module.no-ghost-blocks.general.breaking.description": "Whether to apply for block breaking actions.", + "module.no-ghost-blocks.general.placing": "Placing", + "module.no-ghost-blocks.general.placing.description": "Whether to apply for block placement actions.", + + "module.bed-aura": "Bed Aura", + "module.bed-aura.description": "Automatically places and explodes beds in the Nether and End.", + "module.bed-aura.general.delay": "Delay", + "module.bed-aura.general.delay.description": "The delay between placing beds in ticks.", + "module.bed-aura.general.strict-direction": "Strict Direction", + "module.bed-aura.general.strict-direction.description": "Only places beds in the direction you are facing.", + "module.bed-aura.targeting": "Targeting", + "module.bed-aura.targeting.target-range": "Target Range", + "module.bed-aura.targeting.target-range.description": "The range at which players can be targeted.", + "module.bed-aura.targeting.target-priority": "Target Priority", + "module.bed-aura.targeting.target-priority.description": "How to filter targets within range.", + "module.bed-aura.targeting.min-damage": "Min Damage", + "module.bed-aura.targeting.min-damage.description": "The minimum damage to inflict on your target.", + "module.bed-aura.targeting.max-self-damage": "Max Self Damage", + "module.bed-aura.targeting.max-self-damage.description": "The maximum damage to inflict on yourself.", + "module.bed-aura.targeting.anti-suicide": "Anti Suicide", + "module.bed-aura.targeting.anti-suicide.description": "Will not place and break beds if they will kill you.", + "module.bed-aura.inventory": "Inventory", + "module.bed-aura.inventory.auto-move": "Auto Move", + "module.bed-aura.inventory.auto-move.description": "Moves beds into a selected hotbar slot.", + "module.bed-aura.inventory.auto-move-slot": "Auto Move Slot", + "module.bed-aura.inventory.auto-move-slot.description": "The slot auto move moves beds to.", + "module.bed-aura.inventory.auto-switch": "Auto Switch", + "module.bed-aura.inventory.auto-switch.description": "Switches to and from beds automatically.", + "module.bed-aura.pause": "Pause", + "module.bed-aura.pause.pause-on-eat": "Pause On Eat", + "module.bed-aura.pause.pause-on-eat.description": "Pauses while eating.", + "module.bed-aura.pause.pause-on-drink": "Pause On Drink", + "module.bed-aura.pause.pause-on-drink.description": "Pauses while drinking.", + "module.bed-aura.pause.pause-on-mine": "Pause On Mine", + "module.bed-aura.pause.pause-on-mine.description": "Pauses while mining.", + "module.bed-aura.render": "Render", + "module.bed-aura.render.swing": "Swing", + "module.bed-aura.render.swing.description": "Whether to swing hand client-side.", + "module.bed-aura.render.render": "Render", + "module.bed-aura.render.render.description": "Renders the block where it is placing a bed.", + "module.bed-aura.render.shape-mode": "Shape Mode", + "module.bed-aura.render.shape-mode.description": "How the shapes are rendered.", + "module.bed-aura.render.side-color": "Side Color", + "module.bed-aura.render.side-color.description": "The side color for positions to be placed.", + "module.bed-aura.render.line-color": "Line Color", + "module.bed-aura.render.line-color.description": "The line color for positions to be placed.", + + "module.auto-jump": "Auto Jump", + "module.auto-jump.description": "Automatically jumps.", + "module.auto-jump.general.mode": "Mode", + "module.auto-jump.general.mode.description": "The method of jumping.", + "module.auto-jump.general.jump-if": "Jump If", + "module.auto-jump.general.jump-if.description": "Jump if.", + "module.auto-jump.general.velocity-height": "Velocity Height", + "module.auto-jump.general.velocity-height.description": "The distance that velocity mode moves you.", + + "module.ambience": "Ambience", + "module.ambience.description": "Change the color of various pieces of the environment.", + "module.ambience.sky": "Sky", + "module.ambience.sky.end-sky": "End Sky", + "module.ambience.sky.end-sky.description": "Makes the sky like the end.", + "module.ambience.sky.custom-sky-color": "Custom Sky Color", + "module.ambience.sky.custom-sky-color.description": "Whether the sky color should be changed.", + "module.ambience.sky.overworld-sky-color": "Overworld Sky Color", + "module.ambience.sky.overworld-sky-color.description": "The color of the overworld sky.", + "module.ambience.sky.nether-sky-color": "Nether Sky Color", + "module.ambience.sky.nether-sky-color.description": "The color of the nether sky.", + "module.ambience.sky.end-sky-color": "End Sky Color", + "module.ambience.sky.end-sky-color.description": "The color of the end sky.", + "module.ambience.sky.custom-cloud-color": "Custom Cloud Color", + "module.ambience.sky.custom-cloud-color.description": "Whether the clouds color should be changed.", + "module.ambience.sky.cloud-color": "Cloud Color", + "module.ambience.sky.cloud-color.description": "The color of the clouds.", + "module.ambience.sky.custom-lightning-color": "Custom Lightning Color", + "module.ambience.sky.custom-lightning-color.description": "Whether the lightning color should be changed.", + "module.ambience.sky.lightning-color": "Lightning Color", + "module.ambience.sky.lightning-color.description": "The color of the lightning.", + "module.ambience.world": "World", + "module.ambience.world.custom-grass-color": "Custom Grass Color", + "module.ambience.world.custom-grass-color.description": "Whether the grass color should be changed.", + "module.ambience.world.grass-color": "Grass Color", + "module.ambience.world.grass-color.description": "The color of the grass.", + "module.ambience.world.custom-foliage-color": "Custom Foliage Color", + "module.ambience.world.custom-foliage-color.description": "Whether the foliage color should be changed.", + "module.ambience.world.foliage-color": "Foliage Color", + "module.ambience.world.foliage-color.description": "The color of the foliage.", + "module.ambience.world.custom-water-color": "Custom Water Color", + "module.ambience.world.custom-water-color.description": "Whether the water color should be changed.", + "module.ambience.world.water-color": "Water Color", + "module.ambience.world.water-color.description": "The color of the water.", + "module.ambience.world.custom-lava-color": "Custom Lava Color", + "module.ambience.world.custom-lava-color.description": "Whether the lava color should be changed.", + "module.ambience.world.lava-color": "Lava Color", + "module.ambience.world.lava-color.description": "The color of the lava.", + "module.ambience.world.custom-fog-color": "Custom Fog Color", + "module.ambience.world.custom-fog-color.description": "Whether the fog color should be changed.", + "module.ambience.world.fog-color": "Fog Color", + "module.ambience.world.fog-color.description": "The color of the fog.", + + "module.better-tooltips": "Better Tooltips", + "module.better-tooltips.description": "Displays more useful tooltips for certain items.", + "module.better-tooltips.general.display-when": "Display When", + "module.better-tooltips.general.display-when.description": "When to display previews.", + "module.better-tooltips.general.keybind": "Keybind", + "module.better-tooltips.general.keybind.description": "The bind for keybind mode.", + "module.better-tooltips.general.open-contents": "Open Contents", + "module.better-tooltips.general.open-contents.description": "Opens a GUI window with the inventory of the storage block or book when you click the item.", + "module.better-tooltips.general.keybind-$todo-duplicates$": "Keybind", + "module.better-tooltips.general.keybind.description-$todo-duplicates$": "Key to open contents (containers, books, etc.) when pressed on items.", + "module.better-tooltips.general.pause-in-creative": "Pause In Creative", + "module.better-tooltips.general.pause-in-creative.description": "Pauses middle click open while the player is in creative mode.", + "module.better-tooltips.previews": "Previews", + "module.better-tooltips.previews.containers": "Containers", + "module.better-tooltips.previews.containers.description": "Shows a preview of a containers when hovering over it in an inventory.", + "module.better-tooltips.previews.compact-shulker-tooltip": "Compact Shulker Tooltip", + "module.better-tooltips.previews.compact-shulker-tooltip.description": "Compacts the lines of the shulker tooltip.", + "module.better-tooltips.previews.echests": "Echests", + "module.better-tooltips.previews.echests.description": "Shows a preview of your echest when hovering over it in an inventory.", + "module.better-tooltips.previews.maps": "Maps", + "module.better-tooltips.previews.maps.description": "Shows a preview of a map when hovering over it in an inventory.", + "module.better-tooltips.previews.map-scale": "Map Scale", + "module.better-tooltips.previews.map-scale.description": "The scale of the map preview.", + "module.better-tooltips.previews.books": "Books", + "module.better-tooltips.previews.books.description": "Shows contents of a book when hovering over it in an inventory.", + "module.better-tooltips.previews.banners": "Banners", + "module.better-tooltips.previews.banners.description": "Shows banners' patterns when hovering over it in an inventory. Also works with shields.", + "module.better-tooltips.previews.entities-in-buckets": "Entities In Buckets", + "module.better-tooltips.previews.entities-in-buckets.description": "Shows entities in buckets when hovering over it in an inventory.", + "module.better-tooltips.previews.bundles": "Bundles", + "module.better-tooltips.previews.bundles.description": "Shows a preview of bundle contents when hovering over it in an inventory.", + "module.better-tooltips.previews.food-info": "Food Info", + "module.better-tooltips.previews.food-info.description": "Shows hunger and saturation values for food items.", + "module.better-tooltips.other": "Other", + "module.better-tooltips.other.byte-size": "Byte Size", + "module.better-tooltips.other.byte-size.description": "Displays an item's size in bytes in the tooltip.", + "module.better-tooltips.other.byte-size-format": "Byte Size Format", + "module.better-tooltips.other.byte-size-format.description": "The format by which to display the item's byte size.", + "module.better-tooltips.other.status-effects": "Status Effects", + "module.better-tooltips.other.status-effects.description": "Adds list of status effects to tooltips of food items.", + "module.better-tooltips.hide-flags": "Hide Flags", + "module.better-tooltips.hide-flags.tooltip": "Tooltip", + "module.better-tooltips.hide-flags.tooltip.description": "Show the tooltip when it's hidden.", + "module.better-tooltips.hide-flags.tooltip-components": "Tooltip Components", + "module.better-tooltips.hide-flags.tooltip-components.description": "Shows tooltip components when they're hidden - e.g. enchantments, attributes, lore, etc.", + + "module.notifier": "Notifier", + "module.notifier.description": "Notifies you of different events.", + "module.notifier.totem-pops": "Totem Pops", + "module.notifier.totem-pops.totem-pops": "Totem Pops", + "module.notifier.totem-pops.totem-pops.description": "Notifies you when a player pops a totem.", + "module.notifier.totem-pops.distance-check": "Distance Check", + "module.notifier.totem-pops.distance-check.description": "Limits the distance in which the pops are recognized.", + "module.notifier.totem-pops.player-radius": "Player Radius", + "module.notifier.totem-pops.player-radius.description": "The radius in which to log totem pops.", + "module.notifier.totem-pops.ignore-own": "Ignore Own", + "module.notifier.totem-pops.ignore-own.description": "Ignores your own totem pops.", + "module.notifier.totem-pops.ignore-friends": "Ignore Friends", + "module.notifier.totem-pops.ignore-friends.description": "Ignores friends totem pops.", + "module.notifier.totem-pops.ignore-others": "Ignore Others", + "module.notifier.totem-pops.ignore-others.description": "Ignores other players totem pops.", + "module.notifier.visual-range": "Visual Range", + "module.notifier.visual-range.visual-range": "Visual Range", + "module.notifier.visual-range.visual-range.description": "Notifies you when an entity enters your render distance.", + "module.notifier.visual-range.event": "Event", + "module.notifier.visual-range.event.description": "When to log the entities.", + "module.notifier.visual-range.entities": "Entities", + "module.notifier.visual-range.entities.description": "Which entities to notify about.", + "module.notifier.visual-range.ignore-friends": "Ignore Friends", + "module.notifier.visual-range.ignore-friends.description": "Ignores friends.", + "module.notifier.visual-range.ignore-fake-players": "Ignore Fake Players", + "module.notifier.visual-range.ignore-fake-players.description": "Ignores fake players.", + "module.notifier.visual-range.sound": "Sound", + "module.notifier.visual-range.sound.description": "Emits a sound effect on enter / leave", + "module.notifier.pearl": "Pearl", + "module.notifier.pearl.pearl": "Pearl", + "module.notifier.pearl.pearl.description": "Notifies you when a player is teleported using an ender pearl.", + "module.notifier.pearl.ignore-own": "Ignore Own", + "module.notifier.pearl.ignore-own.description": "Ignores your own pearls.", + "module.notifier.pearl.ignore-friends": "Ignore Friends", + "module.notifier.pearl.ignore-friends.description": "Ignores friends pearls.", + "module.notifier.joins/leaves": "Joins/Leaves", + "module.notifier.joins/leaves.player-joins-leaves": "Player Joins Leaves", + "module.notifier.joins/leaves.player-joins-leaves.description": "How to handle player join/leave notifications.", + "module.notifier.joins/leaves.notification-delay": "Notification Delay", + "module.notifier.joins/leaves.notification-delay.description": "How long to wait in ticks before posting the next join/leave notification in your chat.", + "module.notifier.joins/leaves.simple-notifications": "Simple Notifications", + "module.notifier.joins/leaves.simple-notifications.description": "Display join/leave notifications without a prefix, to reduce chat clutter.", + + "module.item-physics": "Item Physics", + "module.item-physics.description": "Applies physics to items on the ground.", + "module.item-physics.general.random-rotation": "Random Rotation", + "module.item-physics.general.random-rotation.description": "Adds a random rotation to every item.", + + "module.air-place": "Air Place", + "module.air-place.description": "Places a block where your crosshair is pointing at.", + "module.air-place.general.render": "Render", + "module.air-place.general.render.description": "Renders a block overlay where the obsidian will be placed.", + "module.air-place.general.shape-mode": "Shape Mode", + "module.air-place.general.shape-mode.description": "How the shapes are rendered.", + "module.air-place.general.side-color": "Side Color", + "module.air-place.general.side-color.description": "The color of the sides of the blocks being rendered.", + "module.air-place.general.line-color": "Line Color", + "module.air-place.general.line-color.description": "The color of the lines of the blocks being rendered.", + "module.air-place.range": "Range", + "module.air-place.range.custom-range": "Custom Range", + "module.air-place.range.custom-range.description": "Use custom range for air place.", + "module.air-place.range.range": "Range", + "module.air-place.range.range.description": "Custom range to place at.", + + "module.enderman-look": "Enderman Look", + "module.enderman-look.description": "Either looks at all Endermen or prevents you from looking at Endermen.", + "module.enderman-look.general.look-mode": "Look Mode", + "module.enderman-look.general.look-mode.description": "How this module behaves.", + "module.enderman-look.general.stun-hostiles": "Stun Hostiles", + "module.enderman-look.general.stun-hostiles.description": "Automatically stares at hostile endermen to stun them in place.", + + "module.timer": "Timer", + "module.timer.description": "Changes the speed of everything in your game.", + "module.timer.general.multiplier": "Multiplier", + "module.timer.general.multiplier.description": "The timer multiplier amount.", + + "module.surround": "Surround", + "module.surround.description": "Surrounds you in blocks to prevent massive crystal damage.", + "module.surround.general.blocks": "Blocks", + "module.surround.general.blocks.description": "What blocks to use for surround.", + "module.surround.general.delay": "Delay", + "module.surround.general.delay.description": "Delay, in ticks, between block placements.", + "module.surround.general.blocks-per-tick": "Blocks Per Tick", + "module.surround.general.blocks-per-tick.description": "How many blocks to place in one tick.", + "module.surround.general.center": "Center", + "module.surround.general.center.description": "Teleports you to the center of the block.", + "module.surround.general.double-height": "Double Height", + "module.surround.general.double-height.description": "Places obsidian on top of the original surround blocks to prevent people from face-placing you.", + "module.surround.general.only-on-ground": "Only On Ground", + "module.surround.general.only-on-ground.description": "Works only when you are standing on blocks.", + "module.surround.general.air-place": "Air Place", + "module.surround.general.air-place.description": "Allows Surround to place blocks in the air.", + "module.surround.general.toggle-modules": "Toggle Modules", + "module.surround.general.toggle-modules.description": "Turn off other modules when surround is activated.", + "module.surround.general.toggle-back-on": "Toggle Back On", + "module.surround.general.toggle-back-on.description": "Turn the other modules back on when surround is deactivated.", + "module.surround.general.modules": "Modules", + "module.surround.general.modules.description": "Which modules to disable on activation.", + "module.surround.general.rotate": "Rotate", + "module.surround.general.rotate.description": "Automatically faces towards the obsidian being placed.", + "module.surround.general.protect": "Protect", + "module.surround.general.protect.description": "Attempts to break crystals around surround positions to prevent surround break.", + "module.surround.toggles": "Toggles", + "module.surround.toggles.toggle-on-y-change": "Toggle On Y Change", + "module.surround.toggles.toggle-on-y-change.description": "Automatically disables when your y level changes (step, jumping, etc).", + "module.surround.toggles.toggle-on-complete": "Toggle On Complete", + "module.surround.toggles.toggle-on-complete.description": "Toggles off when all blocks are placed.", + "module.surround.toggles.toggle-on-death": "Toggle On Death", + "module.surround.toggles.toggle-on-death.description": "Toggles off when you die.", + "module.surround.render": "Render", + "module.surround.render.swing": "Swing", + "module.surround.render.swing.description": "Render your hand swinging when placing surround blocks.", + "module.surround.render.render": "Render", + "module.surround.render.render.description": "Renders a block overlay where the obsidian will be placed.", + "module.surround.render.below": "Below", + "module.surround.render.below.description": "Renders the block below you.", + "module.surround.render.shape-mode": "Shape Mode", + "module.surround.render.shape-mode.description": "How the shapes are rendered.", + "module.surround.render.safe-side-color": "Safe Side Color", + "module.surround.render.safe-side-color.description": "The side color for safe blocks.", + "module.surround.render.safe-line-color": "Safe Line Color", + "module.surround.render.safe-line-color.description": "The line color for safe blocks.", + "module.surround.render.normal-side-color": "Normal Side Color", + "module.surround.render.normal-side-color.description": "The side color for normal blocks.", + "module.surround.render.normal-line-color": "Normal Line Color", + "module.surround.render.normal-line-color.description": "The line color for normal blocks.", + "module.surround.render.unsafe-side-color": "Unsafe Side Color", + "module.surround.render.unsafe-side-color.description": "The side color for unsafe blocks.", + "module.surround.render.unsafe-line-color": "Unsafe Line Color", + "module.surround.render.unsafe-line-color.description": "The line color for unsafe blocks.", + + "module.no-rotate": "No Rotate", + "module.no-rotate.description": "Attempts to block rotations sent from server to client.", + + "module.long-jump": "Long Jump", + "module.long-jump.description": "Allows you to jump further than normal.", + "module.long-jump.general.mode": "Mode", + "module.long-jump.general.mode.description": "The method of jumping.", + "module.long-jump.general.vanilla-boost-factor": "Vanilla Boost Factor", + "module.long-jump.general.vanilla-boost-factor.description": "The amount by which to boost the jump.", + "module.long-jump.general.burst-initial-speed": "Burst Initial Speed", + "module.long-jump.general.burst-initial-speed.description": "The initial speed of the runup.", + "module.long-jump.general.burst-boost-factor": "Burst Boost Factor", + "module.long-jump.general.burst-boost-factor.description": "The amount by which to boost the jump.", + "module.long-jump.general.only-on-ground": "Only On Ground", + "module.long-jump.general.only-on-ground.description": "Only performs the jump if you are on the ground.", + "module.long-jump.general.on-jump": "On Jump", + "module.long-jump.general.on-jump.description": "Whether the player needs to jump first or not.", + "module.long-jump.general.glide-multiplier": "Glide Multiplier", + "module.long-jump.general.glide-multiplier.description": "The amount by to multiply the glide velocity.", + "module.long-jump.general.timer": "Timer", + "module.long-jump.general.timer.description": "Timer override.", + "module.long-jump.general.auto-disable": "Auto Disable", + "module.long-jump.general.auto-disable.description": "Automatically disabled the module after jumping.", + "module.long-jump.general.disable-on-rubberband": "Disable On Rubberband", + "module.long-jump.general.disable-on-rubberband.description": "Disables the module when you get lagged back.", + + "module.trajectories": "Trajectories", + "module.trajectories.description": "Predicts the trajectory of throwable items.", + "module.trajectories.general.items": "Items", + "module.trajectories.general.items.description": "Items to display trajectories for.", + "module.trajectories.general.other-players": "Other Players", + "module.trajectories.general.other-players.description": "Calculates trajectories for other players.", + "module.trajectories.general.fired-projectiles": "Fired Projectiles", + "module.trajectories.general.fired-projectiles.description": "Calculates trajectories for already fired projectiles.", + "module.trajectories.general.ignore-wither-skulls": "Ignore Wither Skulls", + "module.trajectories.general.ignore-wither-skulls.description": "Whether to ignore fired wither skulls.", + "module.trajectories.general.accurate": "Accurate", + "module.trajectories.general.accurate.description": "Whether or not to calculate more accurate.", + "module.trajectories.general.simulation-steps": "Simulation Steps", + "module.trajectories.general.simulation-steps.description": "How many steps to simulate projectiles. Zero for no limit", + "module.trajectories.render": "Render", + "module.trajectories.render.ignore-rendering-first-ticks": "Ignore Rendering First Ticks", + "module.trajectories.render.ignore-rendering-first-ticks.description": "Ignores rendering the first given ticks, to make the rest of the path more visible.", + "module.trajectories.render.shape-mode": "Shape Mode", + "module.trajectories.render.shape-mode.description": "How the shapes are rendered.", + "module.trajectories.render.side-color": "Side Color", + "module.trajectories.render.side-color.description": "The side color.", + "module.trajectories.render.line-color": "Line Color", + "module.trajectories.render.line-color.description": "The line color.", + "module.trajectories.render.render-position-boxes": "Render Position Boxes", + "module.trajectories.render.render-position-boxes.description": "Renders the actual position the projectile will be at each tick along it's trajectory.", + "module.trajectories.render.position-box-size": "Position Box Size", + "module.trajectories.render.position-box-size.description": "The size of the box drawn at the simulated positions.", + "module.trajectories.render.position-side-color": "Position Side Color", + "module.trajectories.render.position-side-color.description": "The side color.", + "module.trajectories.render.position-line-color": "Position Line Color", + "module.trajectories.render.position-line-color.description": "The line color.", + + "module.chams": "Chams", + "module.chams.description": "Tweaks rendering of entities.", + "module.chams.through-walls": "Through Walls", + "module.chams.through-walls.entities": "Entities", + "module.chams.through-walls.entities.description": "Select entities to show through walls.", + "module.chams.through-walls.shader": "Shader", + "module.chams.through-walls.shader.description": "Renders a shader over of the entities.", + "module.chams.through-walls.color": "Color", + "module.chams.through-walls.color.description": "The color that the shader is drawn with.", + "module.chams.through-walls.ignore-self": "Ignore Self", + "module.chams.through-walls.ignore-self.description": "Ignores yourself drawing the player.", + "module.chams.players": "Players", + "module.chams.players.players": "Players", + "module.chams.players.players.description": "Enables model tweaks for players.", + "module.chams.players.ignore-self": "Ignore Self", + "module.chams.players.ignore-self.description": "Ignores yourself when tweaking player models.", + "module.chams.players.texture": "Texture", + "module.chams.players.texture.description": "Enables player model textures.", + "module.chams.players.color": "Color", + "module.chams.players.color.description": "The color of player models.", + "module.chams.players.scale": "Scale", + "module.chams.players.scale.description": "Players scale.", + "module.chams.crystals": "Crystals", + "module.chams.crystals.crystals": "Crystals", + "module.chams.crystals.crystals.description": "Enables model tweaks for end crystals.", + "module.chams.crystals.scale": "Scale", + "module.chams.crystals.scale.description": "Crystal scale.", + "module.chams.crystals.bounce": "Bounce", + "module.chams.crystals.bounce.description": "How high crystals bounce.", + "module.chams.crystals.rotation-speed": "Rotation Speed", + "module.chams.crystals.rotation-speed.description": "Multiplies the rotation speed of the crystal.", + "module.chams.crystals.texture": "Texture", + "module.chams.crystals.texture.description": "Whether to render crystal model textures.", + "module.chams.crystals.crystal-color": "Crystal Color", + "module.chams.crystals.crystal-color.description": "The color of the of the crystal.", + "module.chams.hand": "Hand", + "module.chams.hand.enabled": "Enabled", + "module.chams.hand.enabled.description": "Enables tweaks of hand rendering.", + "module.chams.hand.texture": "Texture", + "module.chams.hand.texture.description": "Whether to render hand textures.", + "module.chams.hand.hand-color": "Hand Color", + "module.chams.hand.hand-color.description": "The color of your hand.", + + "module.server-spoof": "Server Spoof", + "module.server-spoof.description": "Spoof client brand, resource pack and channels.", + "module.server-spoof.general.spoof-brand": "Spoof Brand", + "module.server-spoof.general.spoof-brand.description": "Whether or not to spoof the brand.", + "module.server-spoof.general.brand": "Brand", + "module.server-spoof.general.brand.description": "Specify the brand that will be send to the server.", + "module.server-spoof.general.resource-pack": "Resource Pack", + "module.server-spoof.general.resource-pack.description": "Spoof accepting server resource pack.", + "module.server-spoof.general.block-channels": "Block Channels", + "module.server-spoof.general.block-channels.description": "Whether or not to block some channels.", + "module.server-spoof.general.channels": "Channels", + "module.server-spoof.general.channels.description": "If the channel contains the keyword, this outgoing channel will be blocked.", + + "module.fullbright": "Fullbright", + "module.fullbright.description": "Lights up your world!", + "module.fullbright.general.mode": "Mode", + "module.fullbright.general.mode.description": "The mode to use for Fullbright.", + "module.fullbright.general.light-type": "Light Type", + "module.fullbright.general.light-type.description": "Which type of light to use for Luminance mode.", + "module.fullbright.general.minimum-light-level": "Minimum Light Level", + "module.fullbright.general.minimum-light-level.description": "Minimum light level when using Luminance mode.", + + "module.freecam": "Freecam", + "module.freecam.description": "Allows the camera to move away from the player.", + "module.freecam.general.speed": "Speed", + "module.freecam.general.speed.description": "Your speed while in freecam.", + "module.freecam.general.speed-scroll-sensitivity": "Speed Scroll Sensitivity", + "module.freecam.general.speed-scroll-sensitivity.description": "Allows you to change speed value using scroll wheel. 0 to disable.", + "module.freecam.general.stay-sneaking": "Stay Sneaking", + "module.freecam.general.stay-sneaking.description": "If you are sneaking when you enter freecam, whether your player should remain sneaking.", + "module.freecam.general.toggle-on-damage": "Toggle On Damage", + "module.freecam.general.toggle-on-damage.description": "Disables freecam when you take damage.", + "module.freecam.general.toggle-on-death": "Toggle On Death", + "module.freecam.general.toggle-on-death.description": "Disables freecam when you die.", + "module.freecam.general.toggle-on-log": "Toggle On Log", + "module.freecam.general.toggle-on-log.description": "Disables freecam when you disconnect from a server.", + "module.freecam.general.reload-chunks": "Reload Chunks", + "module.freecam.general.reload-chunks.description": "Disables cave culling.", + "module.freecam.general.show-hands": "Show Hands", + "module.freecam.general.show-hands.description": "Whether or not to render your hands in freecam.", + "module.freecam.general.rotate": "Rotate", + "module.freecam.general.rotate.description": "Rotates to the block or entity you are looking at.", + "module.freecam.general.static": "Static", + "module.freecam.general.static.description": "Disables settings that move the view.", + "module.freecam.pathing": "Pathing", + "module.freecam.pathing.click-to-path": "Click To Path", + "module.freecam.pathing.click-to-path.description": "Sets a pathfinding goal to any block/entity you click at.", + "module.freecam.pathing.double-click": "Double Click", + "module.freecam.pathing.double-click.description": "Require two clicks to start pathing.", + + "module.exp-thrower": "Exp Thrower", + "module.exp-thrower.description": "Automatically throws XP bottles from your hotbar.", + + "module.auto-totem": "Auto Totem", + "module.auto-totem.description": "Automatically equips a totem in your offhand.", + "module.auto-totem.general.mode": "Mode", + "module.auto-totem.general.mode.description": "Determines when to hold a totem, strict will always hold.", + "module.auto-totem.general.delay": "Delay", + "module.auto-totem.general.delay.description": "The ticks between slot movements.", + "module.auto-totem.general.health": "Health", + "module.auto-totem.general.health.description": "The health to hold a totem at.", + "module.auto-totem.general.elytra": "Elytra", + "module.auto-totem.general.elytra.description": "Will always hold a totem when flying with elytra.", + "module.auto-totem.general.fall": "Fall", + "module.auto-totem.general.fall.description": "Will hold a totem when fall damage could kill you.", + "module.auto-totem.general.explosion": "Explosion", + "module.auto-totem.general.explosion.description": "Will hold a totem when explosion damage could kill you.", + + "module.book-bot": "Book Bot", + "module.book-bot.description": "Automatically writes in books.", + "module.book-bot.general.mode": "Mode", + "module.book-bot.general.mode.description": "What kind of text to write.", + "module.book-bot.general.pages": "Pages", + "module.book-bot.general.pages.description": "The number of pages to write per book.", + "module.book-bot.general.ascii-only": "Ascii Only", + "module.book-bot.general.ascii-only.description": "Only uses the characters in the ASCII charset.", + "module.book-bot.general.delay": "Delay", + "module.book-bot.general.delay.description": "The amount of delay between writing books.", + "module.book-bot.general.sign": "Sign", + "module.book-bot.general.sign.description": "Whether to sign the book.", + "module.book-bot.general.name": "Name", + "module.book-bot.general.name.description": "The name you want to give your books.", + "module.book-bot.general.append-count": "Append Count", + "module.book-bot.general.append-count.description": "Whether to append the number of the book to the title.", + "module.book-bot.general.word-wrap": "Word Wrap", + "module.book-bot.general.word-wrap.description": "Prevents words from being cut in the middle of lines.", + + "module.auto-gap": "Auto Gap", + "module.auto-gap.description": "Automatically eats Gaps or E-Gaps.", + "module.auto-gap.general.allow-egap": "Allow Egap", + "module.auto-gap.general.allow-egap.description": "Allow eating E-Gaps over Gaps if found.", + "module.auto-gap.general.always": "Always", + "module.auto-gap.general.always.description": "If it should always eat.", + "module.auto-gap.general.pause-auras": "Pause Auras", + "module.auto-gap.general.pause-auras.description": "Pauses all auras when eating.", + "module.auto-gap.general.pause-baritone": "Pause Baritone", + "module.auto-gap.general.pause-baritone.description": "Pause baritone when eating.", + "module.auto-gap.potions": "Potions", + "module.auto-gap.potions.before-expiry": "Before Expiry", + "module.auto-gap.potions.before-expiry.description": "If it should eat before potion effects expire.", + "module.auto-gap.potions.expiry-threshold": "Expiry Threshold", + "module.auto-gap.potions.expiry-threshold.description": "Time in ticks before the potion effect expires to start eating.", + "module.auto-gap.potions.potions-regeneration": "Potions Regeneration", + "module.auto-gap.potions.potions-regeneration.description": "If it should eat when Regeneration runs out.", + "module.auto-gap.potions.potions-fire-resistance": "Potions Fire Resistance", + "module.auto-gap.potions.potions-fire-resistance.description": "If it should eat when Fire Resistance runs out. Requires E-Gaps.", + "module.auto-gap.potions.potions-absorption": "Potions Absorption", + "module.auto-gap.potions.potions-absorption.description": "If it should eat when Absorption runs out. Requires E-Gaps.", + "module.auto-gap.health": "Health", + "module.auto-gap.health.health-enabled": "Health Enabled", + "module.auto-gap.health.health-enabled.description": "If it should eat when health drops below threshold.", + "module.auto-gap.health.health-threshold": "Health Threshold", + "module.auto-gap.health.health-threshold.description": "Health threshold to eat at. Includes absorption.", + + "module.middle-click-extra": "Middle Click Extra", + "module.middle-click-extra.description": "Perform various actions when you middle click.", + "module.middle-click-extra.general.mode": "Mode", + "module.middle-click-extra.general.mode.description": "Which item to use when you middle click.", + "module.middle-click-extra.general.send-message": "Send Message", + "module.middle-click-extra.general.send-message.description": "Sends a message when you add a player as a friend.", + "module.middle-click-extra.general.message-to-send": "Message To Send", + "module.middle-click-extra.general.message-to-send.description": "Message to send when you add a player as a friend (use %player for the player's name)", + "module.middle-click-extra.general.quick-swap": "Quick Swap", + "module.middle-click-extra.general.quick-swap.description": "Allows you to use items in your inventory by simulating hotbar key presses. May get flagged by anticheats.", + "module.middle-click-extra.general.swap-back": "Swap Back", + "module.middle-click-extra.general.swap-back.description": "Swap back to your original slot when you finish using an item.", + "module.middle-click-extra.general.disable-in-creative": "Disable In Creative", + "module.middle-click-extra.general.disable-in-creative.description": "Middle click action is disabled in Creative mode.", + "module.middle-click-extra.general.notify": "Notify", + "module.middle-click-extra.general.notify.description": "Notifies you when you do not have the specified item in your hotbar.", + + "module.logout-spots": "Logout Spots", + "module.logout-spots.description": "Displays a box where another player has logged out at.", + "module.logout-spots.general.scale": "Scale", + "module.logout-spots.general.scale.description": "The scale.", + "module.logout-spots.general.full-height": "Full Height", + "module.logout-spots.general.full-height.description": "Displays the height as the player's full height.", + "module.logout-spots.render": "Render", + "module.logout-spots.render.shape-mode": "Shape Mode", + "module.logout-spots.render.shape-mode.description": "How the shapes are rendered.", + "module.logout-spots.render.side-color": "Side Color", + "module.logout-spots.render.side-color.description": "The side color.", + "module.logout-spots.render.line-color": "Line Color", + "module.logout-spots.render.line-color.description": "The line color.", + "module.logout-spots.render.name-color": "Name Color", + "module.logout-spots.render.name-color.description": "The name color.", + "module.logout-spots.render.name-background-color": "Name Background Color", + "module.logout-spots.render.name-background-color.description": "The name background color.", + + "module.sound-blocker": "Sound Blocker", + "module.sound-blocker.description": "Cancels out selected sounds.", + "module.sound-blocker.general.sounds": "Sounds", + "module.sound-blocker.general.sounds.description": "Sounds to block.", + + "module.vein-miner": "Vein Miner", + "module.vein-miner.description": "Mines all nearby blocks with this type", + "module.vein-miner.general.blocks": "Blocks", + "module.vein-miner.general.blocks.description": "Which blocks to select.", + "module.vein-miner.general.mode": "Mode", + "module.vein-miner.general.mode.description": "Selection mode.", + "module.vein-miner.general.depth": "Depth", + "module.vein-miner.general.depth.description": "Amount of iterations used to scan for similar blocks.", + "module.vein-miner.general.delay": "Delay", + "module.vein-miner.general.delay.description": "Delay between mining blocks.", + "module.vein-miner.general.rotate": "Rotate", + "module.vein-miner.general.rotate.description": "Sends rotation packets to the server when mining.", + "module.vein-miner.render": "Render", + "module.vein-miner.render.swing-hand": "Swing Hand", + "module.vein-miner.render.swing-hand.description": "Swing hand client-side.", + "module.vein-miner.render.render": "Render", + "module.vein-miner.render.render.description": "Whether or not to render the block being mined.", + "module.vein-miner.render.shape-mode": "Shape Mode", + "module.vein-miner.render.shape-mode.description": "How the shapes are rendered.", + "module.vein-miner.render.side-color": "Side Color", + "module.vein-miner.render.side-color.description": "The color of the sides of the blocks being rendered.", + "module.vein-miner.render.line-color": "Line Color", + "module.vein-miner.render.line-color.description": "The color of the lines of the blocks being rendered.", + + "module.nuker": "Nuker", + "module.nuker.description": "Breaks blocks around you.", + "module.nuker.general.shape": "Shape", + "module.nuker.general.shape.description": "The shape of nuking algorithm.", + "module.nuker.general.mode": "Mode", + "module.nuker.general.mode.description": "The way the blocks are broken.", + "module.nuker.general.range": "Range", + "module.nuker.general.range.description": "The break range.", + "module.nuker.general.up": "Up", + "module.nuker.general.up.description": "The break range.", + "module.nuker.general.down": "Down", + "module.nuker.general.down.description": "The break range.", + "module.nuker.general.left": "Left", + "module.nuker.general.left.description": "The break range.", + "module.nuker.general.right": "Right", + "module.nuker.general.right.description": "The break range.", + "module.nuker.general.forward": "Forward", + "module.nuker.general.forward.description": "The break range.", + "module.nuker.general.back": "Back", + "module.nuker.general.back.description": "The break range.", + "module.nuker.general.walls-range": "Walls Range", + "module.nuker.general.walls-range.description": "Range in which to break when behind blocks.", + "module.nuker.general.delay": "Delay", + "module.nuker.general.delay.description": "Delay in ticks between breaking blocks.", + "module.nuker.general.max-blocks-per-tick": "Max Blocks Per Tick", + "module.nuker.general.max-blocks-per-tick.description": "Maximum blocks to try to break per tick. Useful when insta mining.", + "module.nuker.general.sort-mode": "Sort Mode", + "module.nuker.general.sort-mode.description": "The blocks you want to mine first.", + "module.nuker.general.packet-mine": "Packet Mine", + "module.nuker.general.packet-mine.description": "Attempt to instamine everything at once.", + "module.nuker.general.only-suitable-tools": "Only Suitable Tools", + "module.nuker.general.only-suitable-tools.description": "Only mines when using an appropriate for the block.", + "module.nuker.general.interact": "Interact", + "module.nuker.general.interact.description": "Interacts with the block instead of mining.", + "module.nuker.general.rotate": "Rotate", + "module.nuker.general.rotate.description": "Rotates server-side to the block being mined.", + "module.nuker.whitelist": "Whitelist", + "module.nuker.whitelist.list-mode": "List Mode", + "module.nuker.whitelist.list-mode.description": "Selection mode.", + "module.nuker.whitelist.blacklist": "Blacklist", + "module.nuker.whitelist.blacklist.description": "The blocks you don't want to mine.", + "module.nuker.whitelist.whitelist": "Whitelist", + "module.nuker.whitelist.whitelist.description": "The blocks you want to mine.", + "module.nuker.whitelist.select-block-bind": "Select Block Bind", + "module.nuker.whitelist.select-block-bind.description": "Adds targeted block to list when this button is pressed.", + "module.nuker.render": "Render", + "module.nuker.render.swing": "Swing", + "module.nuker.render.swing.description": "Whether to swing hand client-side.", + "module.nuker.render.bounding-box": "Bounding Box", + "module.nuker.render.bounding-box.description": "Enable rendering bounding box for Cube and Uniform Cube.", + "module.nuker.render.nuke-box-mode": "Nuke Box Mode", + "module.nuker.render.nuke-box-mode.description": "How the shape for the bounding box is rendered.", + "module.nuker.render.side-color": "Side Color", + "module.nuker.render.side-color.description": "The side color of the bounding box.", + "module.nuker.render.line-color": "Line Color", + "module.nuker.render.line-color.description": "The line color of the bounding box.", + "module.nuker.render.broken-blocks": "Broken Blocks", + "module.nuker.render.broken-blocks.description": "Enable rendering bounding box for Cube and Uniform Cube.", + "module.nuker.render.nuke-block-mode": "Nuke Block Mode", + "module.nuker.render.nuke-block-mode.description": "How the shapes for broken blocks are rendered.", + "module.nuker.render.side-color-$todo-duplicates$": "Side Color", + "module.nuker.render.side-color.description-$todo-duplicates$": "The side color of the target block rendering.", + "module.nuker.render.line-color-$todo-duplicates$": "Line Color", + "module.nuker.render.line-color.description-$todo-duplicates$": "The line color of the target block rendering.", + + "module.auto-trap": "Auto Trap", + "module.auto-trap.description": "Traps people in a box to prevent them from moving.", + "module.auto-trap.general.whitelist": "Whitelist", + "module.auto-trap.general.whitelist.description": "Which blocks to use.", + "module.auto-trap.general.place-range": "Place Range", + "module.auto-trap.general.place-range.description": "The range at which blocks can be placed.", + "module.auto-trap.general.walls-range": "Walls Range", + "module.auto-trap.general.walls-range.description": "Range in which to place when behind blocks.", + "module.auto-trap.general.target-priority": "Target Priority", + "module.auto-trap.general.target-priority.description": "How to select the player to target.", + "module.auto-trap.general.target-range": "Target Range", + "module.auto-trap.general.target-range.description": "The maximum distance to target players.", + "module.auto-trap.general.place-delay": "Place Delay", + "module.auto-trap.general.place-delay.description": "How many ticks between block placements.", + "module.auto-trap.general.blocks-per-tick": "Blocks Per Tick", + "module.auto-trap.general.blocks-per-tick.description": "How many blocks to place in one tick.", + "module.auto-trap.general.top-blocks": "Top Blocks", + "module.auto-trap.general.top-blocks.description": "Which blocks to place on the top half of the target.", + "module.auto-trap.general.bottom-blocks": "Bottom Blocks", + "module.auto-trap.general.bottom-blocks.description": "Which blocks to place on the bottom half of the target.", + "module.auto-trap.general.self-toggle": "Self Toggle", + "module.auto-trap.general.self-toggle.description": "Turns off after placing all blocks.", + "module.auto-trap.general.rotate": "Rotate", + "module.auto-trap.general.rotate.description": "Rotates towards blocks when placing.", + "module.auto-trap.render": "Render", + "module.auto-trap.render.render": "Render", + "module.auto-trap.render.render.description": "Renders an overlay where blocks will be placed.", + "module.auto-trap.render.shape-mode": "Shape Mode", + "module.auto-trap.render.shape-mode.description": "How the shapes are rendered.", + "module.auto-trap.render.side-color": "Side Color", + "module.auto-trap.render.side-color.description": "The side color of the target block rendering.", + "module.auto-trap.render.line-color": "Line Color", + "module.auto-trap.render.line-color.description": "The line color of the target block rendering.", + "module.auto-trap.render.next-side-color": "Next Side Color", + "module.auto-trap.render.next-side-color.description": "The side color of the next block to be placed.", + "module.auto-trap.render.next-line-color": "Next Line Color", + "module.auto-trap.render.next-line-color.description": "The line color of the next block to be placed.", + + "module.wall-hack": "Wall Hack", + "module.wall-hack.description": "Makes blocks translucent.", + "module.wall-hack.general.opacity": "Opacity", + "module.wall-hack.general.opacity.description": "The opacity for rendered blocks.", + "module.wall-hack.general.blocks": "Blocks", + "module.wall-hack.general.blocks.description": "What blocks should be targeted for Wall Hack.", + "module.wall-hack.general.occlude-chunks": "Occlude Chunks", + "module.wall-hack.general.occlude-chunks.description": "Whether caves should occlude underground (may look wonky when on).", + + "module.no-render": "No Render", + "module.no-render.description": "Disables certain animations or overlays from rendering.", + "module.no-render.overlay": "Overlay", + "module.no-render.overlay.portal-overlay": "Portal Overlay", + "module.no-render.overlay.portal-overlay.description": "Disables rendering of the nether portal overlay.", + "module.no-render.overlay.spyglass-overlay": "Spyglass Overlay", + "module.no-render.overlay.spyglass-overlay.description": "Disables rendering of the spyglass overlay.", + "module.no-render.overlay.nausea": "Nausea", + "module.no-render.overlay.nausea.description": "Disables rendering of the nausea overlay.", + "module.no-render.overlay.pumpkin-overlay": "Pumpkin Overlay", + "module.no-render.overlay.pumpkin-overlay.description": "Disables rendering of the pumpkin head overlay", + "module.no-render.overlay.powdered-snow-overlay": "Powdered Snow Overlay", + "module.no-render.overlay.powdered-snow-overlay.description": "Disables rendering of the powdered snow overlay.", + "module.no-render.overlay.fire-overlay": "Fire Overlay", + "module.no-render.overlay.fire-overlay.description": "Disables rendering of the fire overlay.", + "module.no-render.overlay.liquid-overlay": "Liquid Overlay", + "module.no-render.overlay.liquid-overlay.description": "Disables rendering of the liquid overlay.", + "module.no-render.overlay.in-wall-overlay": "In Wall Overlay", + "module.no-render.overlay.in-wall-overlay.description": "Disables rendering of the overlay when inside blocks.", + "module.no-render.overlay.vignette": "Vignette", + "module.no-render.overlay.vignette.description": "Disables rendering of the vignette overlay.", + "module.no-render.overlay.gui-background": "Gui Background", + "module.no-render.overlay.gui-background.description": "Disables rendering of the GUI background overlay.", + "module.no-render.overlay.totem-animation": "Totem Animation", + "module.no-render.overlay.totem-animation.description": "Disables rendering of the totem animation when you pop a totem.", + "module.no-render.overlay.eating-particles": "Eating Particles", + "module.no-render.overlay.eating-particles.description": "Disables rendering of eating particles.", + "module.no-render.overlay.enchantment-glint": "Enchantment Glint", + "module.no-render.overlay.enchantment-glint.description": "Disables rending of the enchantment glint.", + "module.no-render.hud": "HUD", + "module.no-render.hud.boss-bar": "Boss Bar", + "module.no-render.hud.boss-bar.description": "Disable rendering of boss bars.", + "module.no-render.hud.scoreboard": "Scoreboard", + "module.no-render.hud.scoreboard.description": "Disable rendering of the scoreboard.", + "module.no-render.hud.crosshair": "Crosshair", + "module.no-render.hud.crosshair.description": "Disables rendering of the crosshair.", + "module.no-render.hud.title": "Title", + "module.no-render.hud.title.description": "Disables rendering of the title.", + "module.no-render.hud.held-item-name": "Held Item Name", + "module.no-render.hud.held-item-name.description": "Disables rendering of the held item name.", + "module.no-render.hud.obfuscation": "Obfuscation", + "module.no-render.hud.obfuscation.description": "Disables obfuscation styling of characters.", + "module.no-render.hud.potion-icons": "Potion Icons", + "module.no-render.hud.potion-icons.description": "Disables rendering of status effect icons.", + "module.no-render.hud.message-signature-indicator": "Message Signature Indicator", + "module.no-render.hud.message-signature-indicator.description": "Disables chat message signature indicator on the left of the message.", + "module.no-render.world": "World", + "module.no-render.world.weather": "Weather", + "module.no-render.world.weather.description": "Disables rendering of weather.", + "module.no-render.world.world-border": "World Border", + "module.no-render.world.world-border.description": "Disables rendering of the world border.", + "module.no-render.world.blindness": "Blindness", + "module.no-render.world.blindness.description": "Disables rendering of blindness.", + "module.no-render.world.darkness": "Darkness", + "module.no-render.world.darkness.description": "Disables rendering of darkness.", + "module.no-render.world.fog": "Fog", + "module.no-render.world.fog.description": "Disables rendering of fog.", + "module.no-render.world.enchantment-table-book": "Enchantment Table Book", + "module.no-render.world.enchantment-table-book.description": "Disables rendering of books above enchanting tables.", + "module.no-render.world.sign-text": "Sign Text", + "module.no-render.world.sign-text.description": "Disables rendering of text on signs.", + "module.no-render.world.block-break-particles": "Block Break Particles", + "module.no-render.world.block-break-particles.description": "Disables rendering of block-break particles.", + "module.no-render.world.block-break-overlay": "Block Break Overlay", + "module.no-render.world.block-break-overlay.description": "Disables rendering of block-break overlay.", + "module.no-render.world.beacon-beams": "Beacon Beams", + "module.no-render.world.beacon-beams.description": "Disables rendering of beacon beams.", + "module.no-render.world.falling-blocks": "Falling Blocks", + "module.no-render.world.falling-blocks.description": "Disables rendering of falling blocks.", + "module.no-render.world.cave-culling": "Cave Culling", + "module.no-render.world.cave-culling.description": "Disables Minecraft's cave culling algorithm.", + "module.no-render.world.map-markers": "Map Markers", + "module.no-render.world.map-markers.description": "Disables markers on maps.", + "module.no-render.world.map-contents": "Map Contents", + "module.no-render.world.map-contents.description": "Disable rendering of maps.", + "module.no-render.world.banners": "Banners", + "module.no-render.world.banners.description": "Changes rendering of banners.", + "module.no-render.world.firework-explosions": "Firework Explosions", + "module.no-render.world.firework-explosions.description": "Disables rendering of firework explosions.", + "module.no-render.world.particles": "Particles", + "module.no-render.world.particles.description": "Particles to not render.", + "module.no-render.world.barrier-invisibility": "Barrier Invisibility", + "module.no-render.world.barrier-invisibility.description": "Disables barriers being invisible when not holding one.", + "module.no-render.world.texture-rotations": "Texture Rotations", + "module.no-render.world.texture-rotations.description": "Changes texture rotations and model offsets to use a constant value instead of the block position.", + "module.no-render.world.block-entities": "Block Entities", + "module.no-render.world.block-entities.description": "Block entities (chest, shulker block, etc.) to not render.", + "module.no-render.entity": "Entity", + "module.no-render.entity.entities": "Entities", + "module.no-render.entity.entities.description": "Disables rendering of selected entities.", + "module.no-render.entity.drop-spawn-packets": "Drop Spawn Packets", + "module.no-render.entity.drop-spawn-packets.description": "WARNING! Drops all spawn packets of entities selected in the above list.", + "module.no-render.entity.armor": "Armor", + "module.no-render.entity.armor.description": "Disables rendering of armor on entities.", + "module.no-render.entity.invisibility": "Invisibility", + "module.no-render.entity.invisibility.description": "Shows invisible entities.", + "module.no-render.entity.glowing": "Glowing", + "module.no-render.entity.glowing.description": "Disables rendering of the glowing effect", + "module.no-render.entity.spawner-entities": "Spawner Entities", + "module.no-render.entity.spawner-entities.description": "Disables rendering of spinning mobs inside of mob spawners", + "module.no-render.entity.dead-entities": "Dead Entities", + "module.no-render.entity.dead-entities.description": "Disables rendering of dead entities", + "module.no-render.entity.nametags": "Nametags", + "module.no-render.entity.nametags.description": "Disables rendering of entity nametags", + + "module.hand-view": "Hand View", + "module.hand-view.description": "Alters the way items are rendered in your hands.", + "module.hand-view.general.server-rotations": "Server Rotations", + "module.hand-view.general.server-rotations.description": "Makes your hands follow your serverside rotations.", + "module.hand-view.general.old-animations": "Old Animations", + "module.hand-view.general.old-animations.description": "Changes hit animations to those like 1.8", + "module.hand-view.general.skip-swapping-animation": "Skip Swapping Animation", + "module.hand-view.general.skip-swapping-animation.description": "Whether or not to skip the item swapping animation", + "module.hand-view.general.disable-eating-animation": "Disable Eating Animation", + "module.hand-view.general.disable-eating-animation.description": "Disables the eating animation. Potentially desirable if it goes offscreen.", + "module.hand-view.general.swing-mode": "Swing Mode", + "module.hand-view.general.swing-mode.description": "Modifies your client & server hand swinging.", + "module.hand-view.general.swing-speed": "Swing Speed", + "module.hand-view.general.swing-speed.description": "The swing speed of your hands.", + "module.hand-view.general.main-hand-progress": "Main Hand Progress", + "module.hand-view.general.main-hand-progress.description": "The swing progress of your main hand.", + "module.hand-view.general.off-hand-progress": "Off Hand Progress", + "module.hand-view.general.off-hand-progress.description": "The swing progress of your off hand.", + "module.hand-view.main-hand": "Main Hand", + "module.hand-view.main-hand.scale": "Scale", + "module.hand-view.main-hand.scale.description": "The scale of your main hand.", + "module.hand-view.main-hand.position": "Position", + "module.hand-view.main-hand.position.description": "The position of your main hand.", + "module.hand-view.main-hand.rotation": "Rotation", + "module.hand-view.main-hand.rotation.description": "The rotation of your main hand.", + "module.hand-view.off-hand": "Off Hand", + "module.hand-view.off-hand.scale": "Scale", + "module.hand-view.off-hand.scale.description": "The scale of your off hand.", + "module.hand-view.off-hand.position": "Position", + "module.hand-view.off-hand.position.description": "The position of your off hand.", + "module.hand-view.off-hand.rotation": "Rotation", + "module.hand-view.off-hand.rotation.description": "The rotation of your off hand.", + "module.hand-view.arm": "Arm", + "module.hand-view.arm.scale": "Scale", + "module.hand-view.arm.scale.description": "", + "module.hand-view.arm.position": "Position", + "module.hand-view.arm.position.description": "", + "module.hand-view.arm.rotation": "Rotation", + "module.hand-view.arm.rotation.description": "", + + "module.instant-rebreak": "Instant Rebreak", + "module.instant-rebreak.description": "Instantly re-breaks blocks in the same position.", + "module.instant-rebreak.general.delay": "Delay", + "module.instant-rebreak.general.delay.description": "The delay between break attempts.", + "module.instant-rebreak.general.only-pick": "Only Pick", + "module.instant-rebreak.general.only-pick.description": "Only tries to mine the block if you are holding a pickaxe.", + "module.instant-rebreak.general.rotate": "Rotate", + "module.instant-rebreak.general.rotate.description": "Faces the block being mined server side.", + "module.instant-rebreak.render": "Render", + "module.instant-rebreak.render.render": "Render", + "module.instant-rebreak.render.render.description": "Renders an overlay on the block being broken.", + "module.instant-rebreak.render.shape-mode": "Shape Mode", + "module.instant-rebreak.render.shape-mode.description": "How the shapes are rendered.", + "module.instant-rebreak.render.side-color": "Side Color", + "module.instant-rebreak.render.side-color.description": "The color of the sides of the blocks being rendered.", + "module.instant-rebreak.render.line-color": "Line Color", + "module.instant-rebreak.render.line-color.description": "The color of the lines of the blocks being rendered.", + + "module.liquid-interact": "Liquid Interact", + "module.liquid-interact.description": "Allows you to interact with liquids.", + + "module.crystal-aura": "Crystal Aura", + "module.crystal-aura.description": "Automatically places and attacks crystals.", + "module.crystal-aura.general.target-range": "Target Range", + "module.crystal-aura.general.target-range.description": "Range in which to target players.", + "module.crystal-aura.general.predict-movement": "Predict Movement", + "module.crystal-aura.general.predict-movement.description": "Predicts target movement.", + "module.crystal-aura.general.min-damage": "Min Damage", + "module.crystal-aura.general.min-damage.description": "Minimum damage the crystal needs to deal to your target.", + "module.crystal-aura.general.max-damage": "Max Damage", + "module.crystal-aura.general.max-damage.description": "Maximum damage crystals can deal to yourself.", + "module.crystal-aura.general.anti-suicide": "Anti Suicide", + "module.crystal-aura.general.anti-suicide.description": "Will not place and break crystals if they will kill you.", + "module.crystal-aura.general.ignore-nakeds": "Ignore Nakeds", + "module.crystal-aura.general.ignore-nakeds.description": "Ignore players with no items.", + "module.crystal-aura.general.rotate": "Rotate", + "module.crystal-aura.general.rotate.description": "Rotates server-side towards the crystals being hit/placed.", + "module.crystal-aura.general.yaw-steps-mode": "Yaw Steps Mode", + "module.crystal-aura.general.yaw-steps-mode.description": "When to run the yaw steps check.", + "module.crystal-aura.general.yaw-steps": "Yaw Steps", + "module.crystal-aura.general.yaw-steps.description": "Maximum number of degrees its allowed to rotate in one tick.", + "module.crystal-aura.general.entities": "Entities", + "module.crystal-aura.general.entities.description": "Entities to attack.", + "module.crystal-aura.switch": "Switch", + "module.crystal-aura.switch.auto-switch": "Auto Switch", + "module.crystal-aura.switch.auto-switch.description": "Switches to crystals in your hotbar once a target is found.", + "module.crystal-aura.switch.switch-delay": "Switch Delay", + "module.crystal-aura.switch.switch-delay.description": "The delay in ticks to wait to break a crystal after switching hotbar slot.", + "module.crystal-aura.switch.no-gap-switch": "No Gap Switch", + "module.crystal-aura.switch.no-gap-switch.description": "Won't auto switch if you're holding a gapple.", + "module.crystal-aura.switch.no-bow-switch": "No Bow Switch", + "module.crystal-aura.switch.no-bow-switch.description": "Won't auto switch if you're holding a bow.", + "module.crystal-aura.switch.anti-weakness": "Anti Weakness", + "module.crystal-aura.switch.anti-weakness.description": "Switches to tools with so you can break crystals with the weakness effect.", + "module.crystal-aura.place": "Place", + "module.crystal-aura.place.place": "Place", + "module.crystal-aura.place.place.description": "If the CA should place crystals.", + "module.crystal-aura.place.place-delay": "Place Delay", + "module.crystal-aura.place.place-delay.description": "The delay in ticks to wait to place a crystal after it's exploded.", + "module.crystal-aura.place.place-range": "Place Range", + "module.crystal-aura.place.place-range.description": "Range in which to place crystals.", + "module.crystal-aura.place.walls-range": "Walls Range", + "module.crystal-aura.place.walls-range.description": "Range in which to place crystals when behind blocks.", + "module.crystal-aura.place.1.12-placement": "1.12 Placement", + "module.crystal-aura.place.1.12-placement.description": "Uses 1.12 crystal placement.", + "module.crystal-aura.place.support": "Support", + "module.crystal-aura.place.support.description": "Places a support block in air if no other position have been found.", + "module.crystal-aura.place.support-delay": "Support Delay", + "module.crystal-aura.place.support-delay.description": "Delay in ticks after placing support block.", + "module.crystal-aura.face-place": "Face Place", + "module.crystal-aura.face-place.face-place": "Face Place", + "module.crystal-aura.face-place.face-place.description": "Will face-place when target is below a certain health or armor durability threshold.", + "module.crystal-aura.face-place.face-place-health": "Face Place Health", + "module.crystal-aura.face-place.face-place-health.description": "The health the target has to be at to start face placing.", + "module.crystal-aura.face-place.face-place-durability": "Face Place Durability", + "module.crystal-aura.face-place.face-place-durability.description": "The durability threshold percentage to be able to face-place.", + "module.crystal-aura.face-place.face-place-missing-armor": "Face Place Missing Armor", + "module.crystal-aura.face-place.face-place-missing-armor.description": "Automatically starts face placing when a target misses a piece of armor.", + "module.crystal-aura.face-place.force-face-place": "Force Face Place", + "module.crystal-aura.face-place.force-face-place.description": "Starts face place when this button is pressed.", + "module.crystal-aura.break": "Break", + "module.crystal-aura.break.break": "Break", + "module.crystal-aura.break.break.description": "If the CA should break crystals.", + "module.crystal-aura.break.break-delay": "Break Delay", + "module.crystal-aura.break.break-delay.description": "The delay in ticks to wait to break a crystal after it's placed.", + "module.crystal-aura.break.smart-delay": "Smart Delay", + "module.crystal-aura.break.smart-delay.description": "Only breaks crystals when the target can receive damage.", + "module.crystal-aura.break.break-range": "Break Range", + "module.crystal-aura.break.break-range.description": "Range in which to break crystals.", + "module.crystal-aura.break.walls-range": "Walls Range", + "module.crystal-aura.break.walls-range.description": "Range in which to break crystals when behind blocks.", + "module.crystal-aura.break.only-own": "Only Own", + "module.crystal-aura.break.only-own.description": "Only breaks own crystals.", + "module.crystal-aura.break.break-attempts": "Break Attempts", + "module.crystal-aura.break.break-attempts.description": "How many times to hit a crystal before stopping to target it.", + "module.crystal-aura.break.ticks-existed": "Ticks Existed", + "module.crystal-aura.break.ticks-existed.description": "Amount of ticks a crystal needs to have lived for it to be attacked by CrystalAura.", + "module.crystal-aura.break.attack-frequency": "Attack Frequency", + "module.crystal-aura.break.attack-frequency.description": "Maximum hits to do per second.", + "module.crystal-aura.break.fast-break": "Fast Break", + "module.crystal-aura.break.fast-break.description": "Ignores break delay and tries to break the crystal as soon as it's spawned in the world.", + "module.crystal-aura.pause": "Pause", + "module.crystal-aura.pause.pause-on-use": "Pause On Use", + "module.crystal-aura.pause.pause-on-use.description": "Which processes should be paused while using an item.", + "module.crystal-aura.pause.pause-on-mine": "Pause On Mine", + "module.crystal-aura.pause.pause-on-mine.description": "Which processes should be paused while mining a block.", + "module.crystal-aura.pause.pause-on-lag": "Pause On Lag", + "module.crystal-aura.pause.pause-on-lag.description": "Whether to pause if the server is not responding.", + "module.crystal-aura.pause.pause-modules": "Pause Modules", + "module.crystal-aura.pause.pause-modules.description": "Pauses while any of the selected modules are active.", + "module.crystal-aura.pause.pause-health": "Pause Health", + "module.crystal-aura.pause.pause-health.description": "Pauses when you go below a certain health.", + "module.crystal-aura.render": "Render", + "module.crystal-aura.render.swing-mode": "Swing Mode", + "module.crystal-aura.render.swing-mode.description": "How to swing when placing.", + "module.crystal-aura.render.render-mode": "Render Mode", + "module.crystal-aura.render.render-mode.description": "The mode to render in.", + "module.crystal-aura.render.render-place": "Render Place", + "module.crystal-aura.render.render-place.description": "Renders a block overlay over the block the crystals are being placed on.", + "module.crystal-aura.render.place-time": "Place Time", + "module.crystal-aura.render.place-time.description": "How long to render placements.", + "module.crystal-aura.render.render-break": "Render Break", + "module.crystal-aura.render.render-break.description": "Renders a block overlay over the block the crystals are broken on.", + "module.crystal-aura.render.break-time": "Break Time", + "module.crystal-aura.render.break-time.description": "How long to render breaking for.", + "module.crystal-aura.render.smoothness": "Smoothness", + "module.crystal-aura.render.smoothness.description": "How smoothly the render should move around.", + "module.crystal-aura.render.height": "Height", + "module.crystal-aura.render.height.description": "How tall the gradient should be.", + "module.crystal-aura.render.render-time": "Render Time", + "module.crystal-aura.render.render-time.description": "How long to render placements.", + "module.crystal-aura.render.shape-mode": "Shape Mode", + "module.crystal-aura.render.shape-mode.description": "How the shapes are rendered.", + "module.crystal-aura.render.side-color": "Side Color", + "module.crystal-aura.render.side-color.description": "The side color of the block overlay.", + "module.crystal-aura.render.line-color": "Line Color", + "module.crystal-aura.render.line-color.description": "The line color of the block overlay.", + "module.crystal-aura.render.damage": "Damage", + "module.crystal-aura.render.damage.description": "Renders crystal damage text in the block overlay.", + "module.crystal-aura.render.damage-color": "Damage Color", + "module.crystal-aura.render.damage-color.description": "The color of the damage text.", + "module.crystal-aura.render.damage-scale": "Damage Scale", + "module.crystal-aura.render.damage-scale.description": "How big the damage text should be.", + + "module.spider": "Spider", + "module.spider.description": "Allows you to climb walls like a spider.", + "module.spider.general.climb-speed": "Climb Speed", + "module.spider.general.climb-speed.description": "The speed you go up blocks.", + + "module.auto-log": "Auto Log", + "module.auto-log.description": "Automatically disconnects you when certain requirements are met.", + "module.auto-log.general.health": "Health", + "module.auto-log.general.health.description": "Automatically disconnects when health is lower or equal to this value. Set to 0 to disable.", + "module.auto-log.general.predict-incoming-damage": "Predict Incoming Damage", + "module.auto-log.general.predict-incoming-damage.description": "Disconnects when it detects you're about to take enough damage to set you under the 'health' setting.", + "module.auto-log.general.totem-pops": "Totem Pops", + "module.auto-log.general.totem-pops.description": "Disconnects when you have popped this many totems. Set to 0 to disable.", + "module.auto-log.general.only-trusted": "Only Trusted", + "module.auto-log.general.only-trusted.description": "Disconnects when a player not on your friends list appears in render distance.", + "module.auto-log.general.32K": "32K", + "module.auto-log.general.32K.description": "Disconnects when a player near you can instantly kill you.", + "module.auto-log.general.smart-toggle": "Smart Toggle", + "module.auto-log.general.smart-toggle.description": "Disables Auto Log after a low-health logout. WILL re-enable once you heal.", + "module.auto-log.general.toggle-off": "Toggle Off", + "module.auto-log.general.toggle-off.description": "Disables Auto Log after usage.", + "module.auto-log.general.toggle-auto-reconnect": "Toggle Auto Reconnect", + "module.auto-log.general.toggle-auto-reconnect.description": "Whether to disable Auto Reconnect after a logout.", + "module.auto-log.entities": "Entities", + "module.auto-log.entities.entities": "Entities", + "module.auto-log.entities.entities.description": "Disconnects when a specified entity is present within a specified range.", + "module.auto-log.entities.use-total-count": "Use Total Count", + "module.auto-log.entities.use-total-count.description": "Toggle between counting the total number of all selected entities or each entity individually.", + "module.auto-log.entities.combined-entity-threshold": "Combined Entity Threshold", + "module.auto-log.entities.combined-entity-threshold.description": "The minimum total number of selected entities that must be near you before disconnection occurs.", + "module.auto-log.entities.individual-entity-threshold": "Individual Entity Threshold", + "module.auto-log.entities.individual-entity-threshold.description": "The minimum number of entities individually that must be near you before disconnection occurs.", + "module.auto-log.entities.range": "Range", + "module.auto-log.entities.range.description": "How close an entity has to be to you before you disconnect.", + + "module.high-jump": "High Jump", + "module.high-jump.description": "Makes you jump higher than normal.", + "module.high-jump.general.jump-multiplier": "Jump Multiplier", + "module.high-jump.general.jump-multiplier.description": "Jump height multiplier.", + + "module.speed": "Speed", + "module.speed.description": "Modifies your movement speed when moving on the ground.", + "module.speed.general.mode": "Mode", + "module.speed.general.mode.description": "The method of applying speed.", + "module.speed.general.vanilla-speed": "Vanilla Speed", + "module.speed.general.vanilla-speed.description": "The speed in blocks per second.", + "module.speed.general.strafe-speed": "Strafe Speed", + "module.speed.general.strafe-speed.description": "The speed.", + "module.speed.general.speed-limit": "Speed Limit", + "module.speed.general.speed-limit.description": "Limits your speed on servers with very strict anticheats.", + "module.speed.general.timer": "Timer", + "module.speed.general.timer.description": "Timer override.", + "module.speed.general.in-liquids": "In Liquids", + "module.speed.general.in-liquids.description": "Uses speed when in lava or water.", + "module.speed.general.when-sneaking": "When Sneaking", + "module.speed.general.when-sneaking.description": "Uses speed when sneaking.", + "module.speed.general.only-on-ground": "Only On Ground", + "module.speed.general.only-on-ground.description": "Uses speed only when standing on a block.", + + "module.offhand": "Offhand", + "module.offhand.description": "Allows you to hold specified items in your offhand.", + "module.offhand.combat": "Combat", + "module.offhand.combat.item-switch-delay": "Item Switch Delay", + "module.offhand.combat.item-switch-delay.description": "The delay in ticks between slot movements.", + "module.offhand.combat.item": "Item", + "module.offhand.combat.item.description": "Which item to hold in your offhand.", + "module.offhand.combat.hotbar": "Hotbar", + "module.offhand.combat.hotbar.description": "Whether to use items from your hotbar.", + "module.offhand.combat.right-gapple": "Right Gapple", + "module.offhand.combat.right-gapple.description": "Will switch to a gapple when holding right click.(DO NOT USE WITH POTION ON)", + "module.offhand.combat.sword-gapple": "Sword Gapple", + "module.offhand.combat.sword-gapple.description": "Will switch to a gapple when holding a sword and right click.", + "module.offhand.combat.always-gap-on-sword": "Always Gap On Sword", + "module.offhand.combat.always-gap-on-sword.description": "Holds an Enchanted Golden Apple when you are holding a sword.", + "module.offhand.combat.always-pot-on-sword": "Always Pot On Sword", + "module.offhand.combat.always-pot-on-sword.description": "Will switch to a potion when holding a sword", + "module.offhand.combat.sword-pot": "Sword Pot", + "module.offhand.combat.sword-pot.description": "Will switch to a potion when holding a sword and right click.", + "module.offhand.totem": "Totem", + "module.offhand.totem.min-health": "Min Health", + "module.offhand.totem.min-health.description": "Will hold a totem when below this amount of health.", + "module.offhand.totem.elytra": "Elytra", + "module.offhand.totem.elytra.description": "Will always hold a totem while flying with an elytra.", + "module.offhand.totem.falling": "Falling", + "module.offhand.totem.falling.description": "Will hold a totem if fall damage could kill you.", + "module.offhand.totem.explosion": "Explosion", + "module.offhand.totem.explosion.description": "Will hold a totem when explosion damage could kill you.", + + "module.arrow-dodge": "Arrow Dodge", + "module.arrow-dodge.description": "Tries to dodge arrows coming at you.", + "module.arrow-dodge.general.ground-check": "Ground Check", + "module.arrow-dodge.general.ground-check.description": "Tries to prevent you from falling to your death.", + "module.arrow-dodge.general.all-projectiles": "All Projectiles", + "module.arrow-dodge.general.all-projectiles.description": "Dodge all projectiles, not only arrows.", + "module.arrow-dodge.general.ignore-own": "Ignore Own", + "module.arrow-dodge.general.ignore-own.description": "Ignore your own projectiles.", + "module.arrow-dodge.general.simulation-steps": "Simulation Steps", + "module.arrow-dodge.general.simulation-steps.description": "How many steps to simulate projectiles. Zero for no limit.", + "module.arrow-dodge.movement": "Movement", + "module.arrow-dodge.movement.move-type": "Move Type", + "module.arrow-dodge.movement.move-type.description": "The way you are moved by this module.", + "module.arrow-dodge.movement.move-speed": "Move Speed", + "module.arrow-dodge.movement.move-speed.description": "How fast should you be when dodging arrow.", + "module.arrow-dodge.movement.distance-check": "Distance Check", + "module.arrow-dodge.movement.distance-check.description": "How far should an arrow be from the player to be considered not hitting.", + + "module.multitask": "Multitask", + "module.multitask.description": "Lets you use items and attack at the same time.", + "module.multitask.general.attacking-entities": "Attacking Entities", + "module.multitask.general.attacking-entities.description": "Lets you attack entities while using an item.", + + "module.auto-replenish": "Auto Replenish", + "module.auto-replenish.description": "Automatically refills items in your hotbar, main hand, or offhand.", + "module.auto-replenish.general.min-count": "Min Count", + "module.auto-replenish.general.min-count.description": "Replenish a slot when it reaches this item count.", + "module.auto-replenish.general.delay": "Delay", + "module.auto-replenish.general.delay.description": "How long in ticks to wait between replenishing your hotbar.", + "module.auto-replenish.general.offhand": "Offhand", + "module.auto-replenish.general.offhand.description": "Whether or not to replenish items in your offhand.", + "module.auto-replenish.general.unstackable": "Unstackable", + "module.auto-replenish.general.unstackable.description": "Replenish unstackable items.", + "module.auto-replenish.general.same-enchants": "Same Enchants", + "module.auto-replenish.general.same-enchants.description": "Only replace unstackables with items that have the same enchants.", + "module.auto-replenish.general.search-hotbar": "Search Hotbar", + "module.auto-replenish.general.search-hotbar.description": "Combine stacks in your hotbar/offhand as a last resort.", + "module.auto-replenish.general.excluded-items": "Excluded Items", + "module.auto-replenish.general.excluded-items.description": "Items that won't be replenished.", + + "module.break-indicators": "Break Indicators", + "module.break-indicators.description": "Renders the progress of a block being broken.", + "module.break-indicators.general.shape-mode": "Shape Mode", + "module.break-indicators.general.shape-mode.description": "How the shapes are rendered.", + "module.break-indicators.general.packet-mine": "Packet Mine", + "module.break-indicators.general.packet-mine.description": "Whether or not to render blocks being packet mined.", + "module.break-indicators.general.start-color": "Start Color", + "module.break-indicators.general.start-color.description": "The color for the non-broken block.", + "module.break-indicators.general.end-color": "End Color", + "module.break-indicators.general.end-color.description": "The color for the fully-broken block.", + + "module.potion-saver": "Potion Saver", + "module.potion-saver.description": "Stops potion effects ticking when you stand still.", + "module.potion-saver.general.effects": "Effects", + "module.potion-saver.general.effects.description": "The effects to preserve.", + "module.potion-saver.general.only-when-stationary": "Only When Stationary", + "module.potion-saver.general.only-when-stationary.description": "Only freezes effects when you aren't moving.", + + "module.block-esp": "Block Esp", + "module.block-esp.description": "Renders specified blocks through walls.", + "module.block-esp.general.blocks": "Blocks", + "module.block-esp.general.blocks.description": "Blocks to search for.", + "module.block-esp.general.default-block-config": "Default Block Config", + "module.block-esp.general.default-block-config.description": "Default block config.", + "module.block-esp.general.block-configs": "Block Configs", + "module.block-esp.general.block-configs.description": "Config for each block.", + "module.block-esp.general.tracers": "Tracers", + "module.block-esp.general.tracers.description": "Render tracer lines.", + + "module.packet-mine": "Packet Mine", + "module.packet-mine.description": "Sends packets to mine blocks without the mining animation.", + "module.packet-mine.general.delay": "Delay", + "module.packet-mine.general.delay.description": "Delay between mining blocks in ticks.", + "module.packet-mine.general.rotate": "Rotate", + "module.packet-mine.general.rotate.description": "Sends rotation packets to the server when mining.", + "module.packet-mine.general.auto-switch": "Auto Switch", + "module.packet-mine.general.auto-switch.description": "Automatically switches to the best tool when the block is ready to be mined instantly.", + "module.packet-mine.general.not-on-use": "Not On Use", + "module.packet-mine.general.not-on-use.description": "Won't auto switch if you're using an item.", + "module.packet-mine.general.obscure-breaking-progress": "Obscure Breaking Progress", + "module.packet-mine.general.obscure-breaking-progress.description": "Spams abort breaking packets to obscure the block mining progress from other players. Does not hide it perfectly.", + "module.packet-mine.render": "Render", + "module.packet-mine.render.render": "Render", + "module.packet-mine.render.render.description": "Whether or not to render the block being mined.", + "module.packet-mine.render.shape-mode": "Shape Mode", + "module.packet-mine.render.shape-mode.description": "How the shapes are rendered.", + "module.packet-mine.render.ready-side-color": "Ready Side Color", + "module.packet-mine.render.ready-side-color.description": "The color of the sides of the blocks that can be broken.", + "module.packet-mine.render.ready-line-color": "Ready Line Color", + "module.packet-mine.render.ready-line-color.description": "The color of the lines of the blocks that can be broken.", + "module.packet-mine.render.side-color": "Side Color", + "module.packet-mine.render.side-color.description": "The color of the sides of the blocks being rendered.", + "module.packet-mine.render.line-color": "Line Color", + "module.packet-mine.render.line-color.description": "The color of the lines of the blocks being rendered.", + + "module.liquid-filler": "Liquid Filler", + "module.liquid-filler.description": "Places blocks inside of liquid source blocks within range of you.", + "module.liquid-filler.general.place-in": "Place In", + "module.liquid-filler.general.place-in.description": "What type of liquids to place in.", + "module.liquid-filler.general.shape": "Shape", + "module.liquid-filler.general.shape.description": "The shape of placing algorithm.", + "module.liquid-filler.general.place-range": "Place Range", + "module.liquid-filler.general.place-range.description": "The range at which blocks can be placed.", + "module.liquid-filler.general.walls-range": "Walls Range", + "module.liquid-filler.general.walls-range.description": "Range in which to place when behind blocks.", + "module.liquid-filler.general.delay": "Delay", + "module.liquid-filler.general.delay.description": "Delay between actions in ticks.", + "module.liquid-filler.general.max-blocks-per-tick": "Max Blocks Per Tick", + "module.liquid-filler.general.max-blocks-per-tick.description": "Maximum blocks to try to place per tick.", + "module.liquid-filler.general.sort-mode": "Sort Mode", + "module.liquid-filler.general.sort-mode.description": "The blocks you want to place first.", + "module.liquid-filler.general.rotate": "Rotate", + "module.liquid-filler.general.rotate.description": "Automatically rotates towards the space targeted for filling.", + "module.liquid-filler.whitelist": "Whitelist", + "module.liquid-filler.whitelist.list-mode": "List Mode", + "module.liquid-filler.whitelist.list-mode.description": "Selection mode.", + "module.liquid-filler.whitelist.whitelist": "Whitelist", + "module.liquid-filler.whitelist.whitelist.description": "The allowed blocks that it will use to fill up the liquid.", + "module.liquid-filler.whitelist.blacklist": "Blacklist", + "module.liquid-filler.whitelist.blacklist.description": "The denied blocks that it not will use to fill up the liquid.", + + "module.quiver": "Quiver", + "module.quiver.description": "Shoots arrows at yourself.", + "module.quiver.general.effects": "Effects", + "module.quiver.general.effects.description": "Which effects to shoot you with.", + "module.quiver.general.cooldown": "Cooldown", + "module.quiver.general.cooldown.description": "How many ticks between shooting effects (19 minimum for NCP).", + "module.quiver.general.check-effects": "Check Effects", + "module.quiver.general.check-effects.description": "Won't shoot you with effects you already have.", + "module.quiver.general.silent-bow": "Silent Bow", + "module.quiver.general.silent-bow.description": "Takes a bow from your inventory to quiver.", + "module.quiver.general.chat-info": "Chat Info", + "module.quiver.general.chat-info.description": "Sends info about quiver checks in chat.", + "module.quiver.safety": "Safety", + "module.quiver.safety.only-in-holes": "Only In Holes", + "module.quiver.safety.only-in-holes.description": "Only quiver when you're in a hole.", + "module.quiver.safety.only-on-ground": "Only On Ground", + "module.quiver.safety.only-on-ground.description": "Only quiver when you're on the ground.", + "module.quiver.safety.min-health": "Min Health", + "module.quiver.safety.min-health.description": "How much health you must have to quiver.", + + "module.chest-swap": "Chest Swap", + "module.chest-swap.description": "Automatically swaps between a chestplate and an elytra.", + "module.chest-swap.general.chestplate": "Chestplate", + "module.chest-swap.general.chestplate.description": "Which type of chestplate to swap to.", + "module.chest-swap.general.stay-on": "Stay On", + "module.chest-swap.general.stay-on.description": "Stays on and activates when you turn it off.", + "module.chest-swap.general.close-inventory": "Close Inventory", + "module.chest-swap.general.close-inventory.description": "Sends inventory close after swap.", + + "module.fast-use": "Fast Use", + "module.fast-use.description": "Allows you to use items at very high speeds.", + "module.fast-use.general.mode": "Mode", + "module.fast-use.general.mode.description": "Which items to fast use.", + "module.fast-use.general.items": "Items", + "module.fast-use.general.items.description": "Which items should fast place work on in \"Some\" mode.", + "module.fast-use.general.blocks": "Blocks", + "module.fast-use.general.blocks.description": "Fast-places blocks if the mode is \"Some\" mode.", + "module.fast-use.general.cooldown": "Cooldown", + "module.fast-use.general.cooldown.description": "Fast-use cooldown in ticks.", + + "module.anchor": "Anchor", + "module.anchor.description": "Helps you get into holes by stopping your movement completely over a hole.", + "module.anchor.general.max-height": "Max Height", + "module.anchor.general.max-height.description": "The maximum height Anchor will work at.", + "module.anchor.general.min-pitch": "Min Pitch", + "module.anchor.general.min-pitch.description": "The minimum pitch at which anchor will work.", + "module.anchor.general.cancel-jump-in-hole": "Cancel Jump In Hole", + "module.anchor.general.cancel-jump-in-hole.description": "Prevents you from jumping when Anchor is active and Min Pitch is met.", + "module.anchor.general.pull": "Pull", + "module.anchor.general.pull.description": "The pull strength of Anchor.", + "module.anchor.general.pull-speed": "Pull Speed", + "module.anchor.general.pull-speed.description": "How fast to pull towards the hole in blocks per second.", + + "module.anti-anvil": "Anti Anvil", + "module.anti-anvil.description": "Automatically prevents Auto Anvil by placing between you and the anvil.", + "module.anti-anvil.general.swing": "Swing", + "module.anti-anvil.general.swing.description": "Swings your hand client-side when placing.", + "module.anti-anvil.general.rotate": "Rotate", + "module.anti-anvil.general.rotate.description": "Makes you rotate when placing.", + + "module.highway-builder": "Highway Builder", + "module.highway-builder.description": "Automatically builds highways.", + "module.highway-builder.general.width": "Width", + "module.highway-builder.general.width.description": "Width of the highway.", + "module.highway-builder.general.height": "Height", + "module.highway-builder.general.height.description": "Height of the highway.", + "module.highway-builder.general.floor": "Floor", + "module.highway-builder.general.floor.description": "What floor placement mode to use.", + "module.highway-builder.general.railings": "Railings", + "module.highway-builder.general.railings.description": "Builds railings next to the highway.", + "module.highway-builder.general.corner-support-block": "Corner Support Block", + "module.highway-builder.general.corner-support-block.description": "Places a support block underneath the railings, to prevent air placing.", + "module.highway-builder.general.mine-above-railings": "Mine Above Railings", + "module.highway-builder.general.mine-above-railings.description": "Mines blocks above railings.", + "module.highway-builder.general.rotation": "Rotation", + "module.highway-builder.general.rotation.description": "Mode of rotation.", + "module.highway-builder.general.disconnect-on-toggle": "Disconnect On Toggle", + "module.highway-builder.general.disconnect-on-toggle.description": "Automatically disconnects when the module is turned off, for example for not having enough blocks.", + "module.highway-builder.general.pause-on-lag": "Pause On Lag", + "module.highway-builder.general.pause-on-lag.description": "Pauses the current process while the server stops responding.", + "module.highway-builder.general.destroy-crystal-traps": "Destroy Crystal Traps", + "module.highway-builder.general.destroy-crystal-traps.description": "Use a bow to defuse crystal traps safely from a distance. An infinity bow is recommended.", + "module.highway-builder.digging": "Digging", + "module.highway-builder.digging.double-mine": "Double Mine", + "module.highway-builder.digging.double-mine.description": "Whether to double mine blocks when applicable (normal mine and packet mine simultaneously).", + "module.highway-builder.digging.fast-break": "Fast Break", + "module.highway-builder.digging.fast-break.description": "Whether to finish breaking blocks faster than normal while double mining.", + "module.highway-builder.digging.dont-break-tools": "Dont Break Tools", + "module.highway-builder.digging.dont-break-tools.description": "Don't break tools.", + "module.highway-builder.digging.durability-percentage": "Durability Percentage", + "module.highway-builder.digging.durability-percentage.description": "The durability percentage at which to stop using a tool.", + "module.highway-builder.digging.save-pickaxes": "Save Pickaxes", + "module.highway-builder.digging.save-pickaxes.description": "How many pickaxes to ensure are saved. Hitting this number in your inventory will trigger a restock or the module toggling off.", + "module.highway-builder.digging.break-delay": "Break Delay", + "module.highway-builder.digging.break-delay.description": "The delay between breaking blocks.", + "module.highway-builder.digging.blocks-per-tick": "Blocks Per Tick", + "module.highway-builder.digging.blocks-per-tick.description": "The maximum amount of blocks that can be mined in a tick. Only applies to blocks instantly breakable.", + "module.highway-builder.paving": "Paving", + "module.highway-builder.paving.blocks-to-place": "Blocks To Place", + "module.highway-builder.paving.blocks-to-place.description": "Blocks it is allowed to place.", + "module.highway-builder.paving.place-range": "Place Range", + "module.highway-builder.paving.place-range.description": "The maximum distance at which you can place blocks.", + "module.highway-builder.paving.place-delay": "Place Delay", + "module.highway-builder.paving.place-delay.description": "The delay between placing blocks.", + "module.highway-builder.paving.placements-per-tick": "Placements Per Tick", + "module.highway-builder.paving.placements-per-tick.description": "The maximum amount of blocks that can be placed in a tick.", + "module.highway-builder.inventory": "Inventory", + "module.highway-builder.inventory.trash-items": "Trash Items", + "module.highway-builder.inventory.trash-items.description": "Items that are considered trash and can be thrown out.", + "module.highway-builder.inventory.inventory-delay": "Inventory Delay", + "module.highway-builder.inventory.inventory-delay.description": "Delay in ticks on inventory interactions.", + "module.highway-builder.inventory.eject-useless-shulkers": "Eject Useless Shulkers", + "module.highway-builder.inventory.eject-useless-shulkers.description": "Whether you should eject useless shulkers. Warning - will throw out any shulkers that don't contain blocks to place, pickaxes, or food. Be careful with your kits.", + "module.highway-builder.inventory.search-ender-chest": "Search Ender Chest", + "module.highway-builder.inventory.search-ender-chest.description": "Searches your ender chest to find items to use. Be careful with this one, especially if you let it search through shulkers.", + "module.highway-builder.inventory.search-shulkers": "Search Shulkers", + "module.highway-builder.inventory.search-shulkers.description": "Searches through shulkers to find items to use.", + "module.highway-builder.inventory.minimum-empty-slots": "Minimum Empty Slots", + "module.highway-builder.inventory.minimum-empty-slots.description": "The minimum amount of empty slots you want left after mining obsidian.", + "module.highway-builder.inventory.mine-ender-chests": "Mine Ender Chests", + "module.highway-builder.inventory.mine-ender-chests.description": "Mines ender chests for obsidian.", + "module.highway-builder.inventory.echest-blockade-type": "Echest Blockade Type", + "module.highway-builder.inventory.echest-blockade-type.description": "What blockade type to use (the structure placed when mining echests).", + "module.highway-builder.inventory.save-ender-chests": "Save Ender Chests", + "module.highway-builder.inventory.save-ender-chests.description": "How many ender chests to ensure are saved. Hitting this number in your inventory will trigger a restock or the module toggling off.", + "module.highway-builder.inventory.instantly-rebreak-echests": "Instantly Rebreak Echests", + "module.highway-builder.inventory.instantly-rebreak-echests.description": "Whether or not to use the instant rebreak exploit to break echests.", + "module.highway-builder.inventory.rebreak-delay": "Rebreak Delay", + "module.highway-builder.inventory.rebreak-delay.description": "Delay between rebreak attempts.", + "module.highway-builder.render-digging": "Render Digging", + "module.highway-builder.render-digging.render-blocks-to-mine": "Render Blocks To Mine", + "module.highway-builder.render-digging.render-blocks-to-mine.description": "Render blocks to be mined.", + "module.highway-builder.render-digging.blocks-to-mine-shape-mode": "Blocks To Mine Shape Mode", + "module.highway-builder.render-digging.blocks-to-mine-shape-mode.description": "How the blocks to be mined are rendered.", + "module.highway-builder.render-digging.blocks-to-mine-side-color": "Blocks To Mine Side Color", + "module.highway-builder.render-digging.blocks-to-mine-side-color.description": "Color of blocks to be mined.", + "module.highway-builder.render-digging.blocks-to-mine-line-color": "Blocks To Mine Line Color", + "module.highway-builder.render-digging.blocks-to-mine-line-color.description": "Color of blocks to be mined.", + "module.highway-builder.render-paving": "Render Paving", + "module.highway-builder.render-paving.render-blocks-to-place": "Render Blocks To Place", + "module.highway-builder.render-paving.render-blocks-to-place.description": "Render blocks to be placed.", + "module.highway-builder.render-paving.blocks-to-place-shape-mode": "Blocks To Place Shape Mode", + "module.highway-builder.render-paving.blocks-to-place-shape-mode.description": "How the blocks to be placed are rendered.", + "module.highway-builder.render-paving.blocks-to-place-side-color": "Blocks To Place Side Color", + "module.highway-builder.render-paving.blocks-to-place-side-color.description": "Color of blocks to be placed.", + "module.highway-builder.render-paving.blocks-to-place-line-color": "Blocks To Place Line Color", + "module.highway-builder.render-paving.blocks-to-place-line-color.description": "Color of blocks to be placed.", + + "module.breadcrumbs": "Breadcrumbs", + "module.breadcrumbs.description": "Displays a trail behind where you have walked.", + "module.breadcrumbs.general.color": "Color", + "module.breadcrumbs.general.color.description": "The color of the Breadcrumbs trail.", + "module.breadcrumbs.general.max-sections": "Max Sections", + "module.breadcrumbs.general.max-sections.description": "The maximum number of sections.", + "module.breadcrumbs.general.section-length": "Section Length", + "module.breadcrumbs.general.section-length.description": "The section length in blocks.", + + "module.auto-brewer": "Auto Brewer", + "module.auto-brewer.description": "Automatically brews the specified potion.", + "module.auto-brewer.general.potion": "Potion", + "module.auto-brewer.general.potion.description": "The type of potion to brew.", + + "module.storage-esp": "Storage Esp", + "module.storage-esp.description": "Renders all specified storage blocks.", + "module.storage-esp.general.mode": "Mode", + "module.storage-esp.general.mode.description": "Rendering mode.", + "module.storage-esp.general.storage-blocks": "Storage Blocks", + "module.storage-esp.general.storage-blocks.description": "Select the storage blocks to display.", + "module.storage-esp.general.tracers": "Tracers", + "module.storage-esp.general.tracers.description": "Draws tracers to storage blocks.", + "module.storage-esp.general.shape-mode": "Shape Mode", + "module.storage-esp.general.shape-mode.description": "How the shapes are rendered.", + "module.storage-esp.general.fill-opacity": "Fill Opacity", + "module.storage-esp.general.fill-opacity.description": "The opacity of the shape fill.", + "module.storage-esp.general.width": "Width", + "module.storage-esp.general.width.description": "The width of the shader outline.", + "module.storage-esp.general.glow-multiplier": "Glow Multiplier", + "module.storage-esp.general.glow-multiplier.description": "Multiplier for glow effect", + "module.storage-esp.general.chest": "Chest", + "module.storage-esp.general.chest.description": "The color of chests.", + "module.storage-esp.general.trapped-chest": "Trapped Chest", + "module.storage-esp.general.trapped-chest.description": "The color of trapped chests.", + "module.storage-esp.general.barrel": "Barrel", + "module.storage-esp.general.barrel.description": "The color of barrels.", + "module.storage-esp.general.shulker": "Shulker", + "module.storage-esp.general.shulker.description": "The color of Shulker Boxes.", + "module.storage-esp.general.ender-chest": "Ender Chest", + "module.storage-esp.general.ender-chest.description": "The color of Ender Chests.", + "module.storage-esp.general.other": "Other", + "module.storage-esp.general.other.description": "The color of furnaces, dispensers, droppers and hoppers.", + "module.storage-esp.general.fade-distance": "Fade Distance", + "module.storage-esp.general.fade-distance.description": "The distance at which the color will fade.", + "module.storage-esp.opened-rendering": "Opened Rendering", + "module.storage-esp.opened-rendering.hide-opened": "Hide Opened", + "module.storage-esp.opened-rendering.hide-opened.description": "Hides opened containers.", + "module.storage-esp.opened-rendering.opened-color": "Opened Color", + "module.storage-esp.opened-rendering.opened-color.description": "Optional setting to change colors of opened chests, as opposed to not rendering. Disabled at zero opacity.", + + "module.no-status-effects": "No Status Effects", + "module.no-status-effects.description": "Blocks specified status effects.", + "module.no-status-effects.general.blocked-effects": "Blocked Effects", + "module.no-status-effects.general.blocked-effects.description": "Effects to block.", + + "module.attribute-swap": "Attribute Swap", + "module.attribute-swap.description": "Swaps to a target slot when you attack.", + "module.attribute-swap.general.mode": "Mode", + "module.attribute-swap.general.mode.description": "The mode to use.", + "module.attribute-swap.general.target-slot": "Target Slot", + "module.attribute-swap.general.target-slot.description": "Hotbar slot to swap to (1-9).", + "module.attribute-swap.general.swap-back": "Swap Back", + "module.attribute-swap.general.swap-back.description": "Swap back to the original slot after a delay.", + "module.attribute-swap.general.swap-back-delay": "Swap Back Delay", + "module.attribute-swap.general.swap-back-delay.description": "Delay in ticks before swapping back.", + "module.attribute-swap.swapping-options": "Swapping Options", + "module.attribute-swap.swapping-options.shield-breaker": "Shield Breaker", + "module.attribute-swap.swapping-options.shield-breaker.description": "Automatically swaps to an axe if the target is blocking.", + "module.attribute-swap.swapping-options.durability-saver": "Durability Saver", + "module.attribute-swap.swapping-options.durability-saver.description": "Swaps to a non-damageable item to save durability on the main weapon.", + "module.attribute-swap.swapping-options.sword-swapping": "Sword Swapping", + "module.attribute-swap.swapping-options.sword-swapping.description": "Enables smart swapping for sword enchantments.", + "module.attribute-swap.swapping-options.mace-swapping": "Mace Swapping", + "module.attribute-swap.swapping-options.mace-swapping.description": "Enables smart swapping for mace enchantments.", + "module.attribute-swap.swapping-options.other-swapping": "Other Swapping", + "module.attribute-swap.swapping-options.other-swapping.description": "Enables smart swapping for other enchantments like Impaling.", + "module.attribute-swap.sword-enchants": "Sword Enchants", + "module.attribute-swap.sword-enchants.fire-aspect": "Fire Aspect", + "module.attribute-swap.sword-enchants.fire-aspect.description": "Swaps to an item with Fire Aspect to set the target on fire, if target isn't already on fire", + "module.attribute-swap.sword-enchants.looting": "Looting", + "module.attribute-swap.sword-enchants.looting.description": "Swaps to an item with Looting for better drops or more experience. Only prefers for mobs (but fire aspect is priority)", + "module.attribute-swap.sword-enchants.sharpness": "Sharpness", + "module.attribute-swap.sword-enchants.sharpness.description": "Swaps to an item with Sharpness for increased damage against all entities.", + "module.attribute-swap.sword-enchants.smite": "Smite", + "module.attribute-swap.sword-enchants.smite.description": "Swaps to an item with Smite for increased damage against undead mobs.", + "module.attribute-swap.sword-enchants.bane-of-arthropods": "Bane Of Arthropods", + "module.attribute-swap.sword-enchants.bane-of-arthropods.description": "Swaps to an item with Bane of Arthropods for increased damage against arthropods.", + "module.attribute-swap.sword-enchants.sweeping-edge": "Sweeping Edge", + "module.attribute-swap.sword-enchants.sweeping-edge.description": "Swaps to an item with Sweeping Edge for increased sweeping attack damage.", + "module.attribute-swap.mace-enchants": "Mace Enchants", + "module.attribute-swap.mace-enchants.regular-mace": "Regular Mace", + "module.attribute-swap.mace-enchants.regular-mace.description": "Swaps to a regular Mace when falling if no better option is available.", + "module.attribute-swap.mace-enchants.density": "Density", + "module.attribute-swap.mace-enchants.density.description": "Swaps to a Mace with Density to deal increased damage when falling.", + "module.attribute-swap.mace-enchants.breach": "Breach", + "module.attribute-swap.mace-enchants.breach.description": "Swaps to a Mace with Breach to reduce the target's armor effectiveness.", + "module.attribute-swap.mace-enchants.wind-burst": "Wind Burst", + "module.attribute-swap.mace-enchants.wind-burst.description": "Swaps to a Mace with Wind Burst to launch up when hitting while falling.", + "module.attribute-swap.other-enchants": "Other Enchants", + "module.attribute-swap.other-enchants.impaling": "Impaling", + "module.attribute-swap.other-enchants.impaling.description": "Swaps to an item with Impaling for increased damage against aquatic mobs.", + "module.attribute-swap.weapon-options": "Weapon Options", + "module.attribute-swap.weapon-options.only-on-weapon": "Only On Weapon", + "module.attribute-swap.weapon-options.only-on-weapon.description": "Only swaps when holding a selected weapon in hand.", + "module.attribute-swap.weapon-options.sword": "Sword", + "module.attribute-swap.weapon-options.sword.description": "Works while holding a sword.", + "module.attribute-swap.weapon-options.axe": "Axe", + "module.attribute-swap.weapon-options.axe.description": "Works while holding an axe.", + "module.attribute-swap.weapon-options.pickaxe": "Pickaxe", + "module.attribute-swap.weapon-options.pickaxe.description": "Works while holding a pickaxe.", + "module.attribute-swap.weapon-options.shovel": "Shovel", + "module.attribute-swap.weapon-options.shovel.description": "Works while holding a shovel.", + "module.attribute-swap.weapon-options.hoe": "Hoe", + "module.attribute-swap.weapon-options.hoe.description": "Works while holding a hoe.", + "module.attribute-swap.weapon-options.mace": "Mace", + "module.attribute-swap.weapon-options.mace.description": "Works while holding a mace.", + "module.attribute-swap.weapon-options.trident": "Trident", + "module.attribute-swap.weapon-options.trident.description": "Works while holding a trident.", + + "module.echest-farmer": "Echest Farmer", + "module.echest-farmer.description": "Places and breaks EChests to farm obsidian.", + "module.echest-farmer.general.self-toggle": "Self Toggle", + "module.echest-farmer.general.self-toggle.description": "Disables when you reach the desired amount of obsidian.", + "module.echest-farmer.general.ignore-existing": "Ignore Existing", + "module.echest-farmer.general.ignore-existing.description": "Ignores existing obsidian in your inventory and mines the total target amount.", + "module.echest-farmer.general.amount": "Amount", + "module.echest-farmer.general.amount.description": "The amount of obsidian to farm.", + "module.echest-farmer.render": "Render", + "module.echest-farmer.render.swing-hand": "Swing Hand", + "module.echest-farmer.render.swing-hand.description": "Swing hand client-side.", + "module.echest-farmer.render.render": "Render", + "module.echest-farmer.render.render.description": "Renders a block overlay where the obsidian will be placed.", + "module.echest-farmer.render.shape-mode": "Shape Mode", + "module.echest-farmer.render.shape-mode.description": "How the shapes are rendered.", + "module.echest-farmer.render.side-color": "Side Color", + "module.echest-farmer.render.side-color.description": "The color of the sides of the blocks being rendered.", + "module.echest-farmer.render.line-color": "Line Color", + "module.echest-farmer.render.line-color.description": "The color of the lines of the blocks being rendered.", + + "module.self-anvil": "Self Anvil", + "module.self-anvil.description": "Automatically places an anvil on you to prevent other players from going into your hole.", + + "module.flamethrower": "Flamethrower", + "module.flamethrower.description": "Ignites every alive piece of food.", + "module.flamethrower.general.distance": "Distance", + "module.flamethrower.general.distance.description": "The maximum distance the animal has to be to be roasted.", + "module.flamethrower.general.anti-break": "Anti Break", + "module.flamethrower.general.anti-break.description": "Prevents flint and steel from being broken.", + "module.flamethrower.general.put-out-fire": "Put Out Fire", + "module.flamethrower.general.put-out-fire.description": "Tries to put out the fire when animal is low health, so the items don't burn.", + "module.flamethrower.general.target-babies": "Target Babies", + "module.flamethrower.general.target-babies.description": "If checked babies will also be killed.", + "module.flamethrower.general.tick-interval": "Tick Interval", + "module.flamethrower.general.tick-interval.description": "", + "module.flamethrower.general.rotate": "Rotate", + "module.flamethrower.general.rotate.description": "Automatically faces towards the animal roasted.", + "module.flamethrower.general.entities": "Entities", + "module.flamethrower.general.entities.description": "Entities to cook.", + + "module.anti-bed": "Anti Bed", + "module.anti-bed.description": "Places string to prevent beds being placed on you.", + "module.anti-bed.general.place-string-top": "Place String Top", + "module.anti-bed.general.place-string-top.description": "Places string above you.", + "module.anti-bed.general.place-string-middle": "Place String Middle", + "module.anti-bed.general.place-string-middle.description": "Places string in your upper hitbox.", + "module.anti-bed.general.place-string-bottom": "Place String Bottom", + "module.anti-bed.general.place-string-bottom.description": "Places string at your feet.", + "module.anti-bed.general.only-in-hole": "Only In Hole", + "module.anti-bed.general.only-in-hole.description": "Only functions when you are standing in a hole.", + + "module.auto-mend": "Auto Mend", + "module.auto-mend.description": "Automatically replaces items in your offhand with mending when fully repaired.", + "module.auto-mend.general.blacklist": "Blacklist", + "module.auto-mend.general.blacklist.description": "Item blacklist.", + "module.auto-mend.general.force": "Force", + "module.auto-mend.general.force.description": "Replaces item in offhand even if there is some other non-repairable item.", + "module.auto-mend.general.auto-disable": "Auto Disable", + "module.auto-mend.general.auto-disable.description": "Automatically disables when there are no more items to repair.", + + "module.auto-anvil": "Auto Anvil", + "module.auto-anvil.description": "Automatically places anvils above players to destroy helmets.", + "module.auto-anvil.general.target-range": "Target Range", + "module.auto-anvil.general.target-range.description": "The radius in which players get targeted.", + "module.auto-anvil.general.target-priority": "Target Priority", + "module.auto-anvil.general.target-priority.description": "How to select the player to target.", + "module.auto-anvil.general.height": "Height", + "module.auto-anvil.general.height.description": "The height to place anvils at.", + "module.auto-anvil.general.delay": "Delay", + "module.auto-anvil.general.delay.description": "The delay in between anvil placements.", + "module.auto-anvil.general.place-at-feet": "Place At Feet", + "module.auto-anvil.general.place-at-feet.description": "Automatically places a button or pressure plate at the targets feet to break the anvils.", + "module.auto-anvil.general.multi-place": "Multi Place", + "module.auto-anvil.general.multi-place.description": "Places multiple anvils at once.", + "module.auto-anvil.general.toggle-on-break": "Toggle On Break", + "module.auto-anvil.general.toggle-on-break.description": "Toggles when the target's helmet slot is empty.", + "module.auto-anvil.general.rotate": "Rotate", + "module.auto-anvil.general.rotate.description": "Automatically rotates towards the position anvils/pressure plates/buttons are placed.", + + "module.burrow": "Burrow", + "module.burrow.description": "Attempts to clip you into a block.", + "module.burrow.general.block-to-use": "Block To Use", + "module.burrow.general.block-to-use.description": "The block to use for Burrow.", + "module.burrow.general.instant": "Instant", + "module.burrow.general.instant.description": "Jumps with packets rather than vanilla jump.", + "module.burrow.general.automatic": "Automatic", + "module.burrow.general.automatic.description": "Automatically burrows on activate rather than waiting for jump.", + "module.burrow.general.trigger-height": "Trigger Height", + "module.burrow.general.trigger-height.description": "How high you have to jump before a rubberband is triggered.", + "module.burrow.general.rubberband-height": "Rubberband Height", + "module.burrow.general.rubberband-height.description": "How far to attempt to cause rubberband.", + "module.burrow.general.timer": "Timer", + "module.burrow.general.timer.description": "Timer override.", + "module.burrow.general.only-in-holes": "Only In Holes", + "module.burrow.general.only-in-holes.description": "Stops you from burrowing when not in a hole.", + "module.burrow.general.center": "Center", + "module.burrow.general.center.description": "Centers you to the middle of the block before burrowing.", + "module.burrow.general.rotate": "Rotate", + "module.burrow.general.rotate.description": "Faces the block you place server-side.", + + "module.auto-sign": "Auto Sign", + "module.auto-sign.description": "Automatically writes signs. The first sign's text will be used.", + "module.auto-sign.general.delay": "Delay", + "module.auto-sign.general.delay.description": "The tick delay between sign update packets.", + + "module.swarm": "Swarm", + "module.swarm.description": "Allows you to control multiple instances of Meteor from one central host.", + "module.swarm.general.mode": "Mode", + "module.swarm.general.mode.description": "What type of client to run.", + "module.swarm.general.ip": "Ip", + "module.swarm.general.ip.description": "The IP address of the host server.", + "module.swarm.general.port": "Port", + "module.swarm.general.port.description": "The port used for connections.", + + "module.auto-reconnect": "Auto Reconnect", + "module.auto-reconnect.description": "Automatically reconnects when disconnected from a server.", + "module.auto-reconnect.general.delay": "Delay", + "module.auto-reconnect.general.delay.description": "The amount of seconds to wait before reconnecting to the server.", + "module.auto-reconnect.general.hide-buttons": "Hide Buttons", + "module.auto-reconnect.general.hide-buttons.description": "Will hide the buttons related to Auto Reconnect.", + + "module.build-height": "Build Height", + "module.build-height.description": "Allows you to interact with objects at the build limit.", + + "module.time-changer": "Time Changer", + "module.time-changer.description": "Makes you able to set a custom time.", + "module.time-changer.general.time": "Time", + "module.time-changer.general.time.description": "The specified time to be set.", + + "module.hole-esp": "Hole Esp", + "module.hole-esp.description": "Displays holes that you will take less damage in.", + "module.hole-esp.general.horizontal-radius": "Horizontal Radius", + "module.hole-esp.general.horizontal-radius.description": "Horizontal radius in which to search for holes.", + "module.hole-esp.general.vertical-radius": "Vertical Radius", + "module.hole-esp.general.vertical-radius.description": "Vertical radius in which to search for holes.", + "module.hole-esp.general.min-height": "Min Height", + "module.hole-esp.general.min-height.description": "Minimum hole height required to be rendered.", + "module.hole-esp.general.doubles": "Doubles", + "module.hole-esp.general.doubles.description": "Highlights double holes that can be stood across.", + "module.hole-esp.general.ignore-own": "Ignore Own", + "module.hole-esp.general.ignore-own.description": "Ignores rendering the hole you are currently standing in.", + "module.hole-esp.general.webs": "Webs", + "module.hole-esp.general.webs.description": "Whether to show holes that have webs inside of them.", + "module.hole-esp.render": "Render", + "module.hole-esp.render.shape-mode": "Shape Mode", + "module.hole-esp.render.shape-mode.description": "How the shapes are rendered.", + "module.hole-esp.render.height": "Height", + "module.hole-esp.render.height.description": "The height of rendering.", + "module.hole-esp.render.top-quad": "Top Quad", + "module.hole-esp.render.top-quad.description": "Whether to render a quad at the top of the hole.", + "module.hole-esp.render.bottom-quad": "Bottom Quad", + "module.hole-esp.render.bottom-quad.description": "Whether to render a quad at the bottom of the hole.", + "module.hole-esp.render.bedrock-top": "Bedrock Top", + "module.hole-esp.render.bedrock-top.description": "The top color for holes that are completely bedrock.", + "module.hole-esp.render.bedrock-bottom": "Bedrock Bottom", + "module.hole-esp.render.bedrock-bottom.description": "The bottom color for holes that are completely bedrock.", + "module.hole-esp.render.obsidian-top": "Obsidian Top", + "module.hole-esp.render.obsidian-top.description": "The top color for holes that are completely obsidian.", + "module.hole-esp.render.obsidian-bottom": "Obsidian Bottom", + "module.hole-esp.render.obsidian-bottom.description": "The bottom color for holes that are completely obsidian.", + "module.hole-esp.render.mixed-top": "Mixed Top", + "module.hole-esp.render.mixed-top.description": "The top color for holes that have mixed bedrock and obsidian.", + "module.hole-esp.render.mixed-bottom": "Mixed Bottom", + "module.hole-esp.render.mixed-bottom.description": "The bottom color for holes that have mixed bedrock and obsidian.", + + "module.city-esp": "City Esp", + "module.city-esp.description": "Displays blocks that can be broken in order to city another player.", + "module.city-esp.render": "Render", + "module.city-esp.render.shape-mode": "Shape Mode", + "module.city-esp.render.shape-mode.description": "How the shapes are rendered.", + "module.city-esp.render.side-color": "Side Color", + "module.city-esp.render.side-color.description": "The side color of the rendering.", + "module.city-esp.render.line-color": "Line Color", + "module.city-esp.render.line-color.description": "The line color of the rendering.", + + "module.anti-afk": "Anti Afk", + "module.anti-afk.description": "Performs different actions to prevent getting kicked while AFK.", + "module.anti-afk.actions": "Actions", + "module.anti-afk.actions.jump": "Jump", + "module.anti-afk.actions.jump.description": "Jump randomly.", + "module.anti-afk.actions.swing": "Swing", + "module.anti-afk.actions.swing.description": "Swings your hand.", + "module.anti-afk.actions.sneak": "Sneak", + "module.anti-afk.actions.sneak.description": "Sneaks and unsneaks quickly.", + "module.anti-afk.actions.sneak-time": "Sneak Time", + "module.anti-afk.actions.sneak-time.description": "How many ticks to stay sneaked.", + "module.anti-afk.actions.strafe": "Strafe", + "module.anti-afk.actions.strafe.description": "Strafe right and left.", + "module.anti-afk.actions.spin": "Spin", + "module.anti-afk.actions.spin.description": "Spins the player in place.", + "module.anti-afk.actions.spin-mode": "Spin Mode", + "module.anti-afk.actions.spin-mode.description": "The method of rotating.", + "module.anti-afk.actions.speed": "Speed", + "module.anti-afk.actions.speed.description": "The speed to spin you.", + "module.anti-afk.actions.pitch": "Pitch", + "module.anti-afk.actions.pitch.description": "The pitch to send to the server.", + "module.anti-afk.messages": "Messages", + "module.anti-afk.messages.send-messages": "Send Messages", + "module.anti-afk.messages.send-messages.description": "Sends messages to prevent getting kicked for AFK.", + "module.anti-afk.messages.random": "Random", + "module.anti-afk.messages.random.description": "Selects a random message from your message list.", + "module.anti-afk.messages.delay": "Delay", + "module.anti-afk.messages.delay.description": "The delay between specified messages in seconds.", + "module.anti-afk.messages.messages": "Messages", + "module.anti-afk.messages.messages.description": "The messages to choose from.", + + "module.gui-move": "Gui Move", + "module.gui-move.description": "Allows you to perform various actions while in GUIs.", + "module.gui-move.general.guis": "Guis", + "module.gui-move.general.guis.description": "Which GUIs to move in.", + "module.gui-move.general.jump": "Jump", + "module.gui-move.general.jump.description": "Allows you to jump while in GUIs.", + "module.gui-move.general.sneak": "Sneak", + "module.gui-move.general.sneak.description": "Allows you to sneak while in GUIs.", + "module.gui-move.general.sprint": "Sprint", + "module.gui-move.general.sprint.description": "Allows you to sprint while in GUIs.", + "module.gui-move.general.arrows-rotate": "Arrows Rotate", + "module.gui-move.general.arrows-rotate.description": "Allows you to use your arrow keys to rotate while in GUIs.", + "module.gui-move.general.rotate-speed": "Rotate Speed", + "module.gui-move.general.rotate-speed.description": "Rotation speed while in GUIs.", + + "module.trident-boost": "Trident Boost", + "module.trident-boost.description": "Boosts you when using riptide with a trident.", + "module.trident-boost.general.boost": "Boost", + "module.trident-boost.general.boost.description": "How much your velocity is multiplied by when using riptide.", + "module.trident-boost.general.out-of-water": "Out Of Water", + "module.trident-boost.general.out-of-water.description": "Whether riptide should work out of water", + + "module.better-tab": "Better Tab", + "module.better-tab.description": "Various improvements to the tab list.", + "module.better-tab.general.tablist-size": "Tablist Size", + "module.better-tab.general.tablist-size.description": "How many players in total to display in the tablist.", + "module.better-tab.general.column-height": "Column Height", + "module.better-tab.general.column-height.description": "How many players to display in each column.", + "module.better-tab.general.highlight-self": "Highlight Self", + "module.better-tab.general.highlight-self.description": "Highlights yourself in the tablist.", + "module.better-tab.general.self-color": "Self Color", + "module.better-tab.general.self-color.description": "The color to highlight your name with.", + "module.better-tab.general.highlight-friends": "Highlight Friends", + "module.better-tab.general.highlight-friends.description": "Highlights friends in the tablist.", + "module.better-tab.general.accurate-latency": "Accurate Latency", + "module.better-tab.general.accurate-latency.description": "Shows latency as a number in the tablist.", + "module.better-tab.general.gamemode": "Gamemode", + "module.better-tab.general.gamemode.description": "Display gamemode next to the nick.", + + "module.mount-bypass": "Mount Bypass", + "module.mount-bypass.description": "Allows you to bypass the IllegalStacks plugin and put chests on entities.", + + "module.anti-packet-kick": "Anti Packet Kick", + "module.anti-packet-kick.description": "Attempts to prevent you from being disconnected by large packets.", + "module.anti-packet-kick.general.catch-exceptions": "Catch Exceptions", + "module.anti-packet-kick.general.catch-exceptions.description": "Drops corrupted packets.", + "module.anti-packet-kick.general.log-exceptions": "Log Exceptions", + "module.anti-packet-kick.general.log-exceptions.description": "Logs caught exceptions.", + + "module.light-overlay": "Light Overlay", + "module.light-overlay.description": "Shows blocks where mobs can spawn.", + "module.light-overlay.general.horizontal-range": "Horizontal Range", + "module.light-overlay.general.horizontal-range.description": "Horizontal range in blocks.", + "module.light-overlay.general.vertical-range": "Vertical Range", + "module.light-overlay.general.vertical-range.description": "Vertical range in blocks.", + "module.light-overlay.general.see-through-blocks": "See Through Blocks", + "module.light-overlay.general.see-through-blocks.description": "Allows you to see the lines through blocks.", + "module.light-overlay.general.light-level": "Light Level", + "module.light-overlay.general.light-level.description": "Which light levels to render. Old spawning light: 7.", + "module.light-overlay.colors": "Colors", + "module.light-overlay.colors.color": "Color", + "module.light-overlay.colors.color.description": "Color of places where mobs can currently spawn.", + "module.light-overlay.colors.potential-color": "Potential Color", + "module.light-overlay.colors.potential-color.description": "Color of places where mobs can potentially spawn (eg at night).", + + "module.hole-filler": "Hole Filler", + "module.hole-filler.description": "Fills holes with specified blocks.", + "module.hole-filler.general.blocks": "Blocks", + "module.hole-filler.general.blocks.description": "Which blocks can be used to fill holes.", + "module.hole-filler.general.search-radius": "Search Radius", + "module.hole-filler.general.search-radius.description": "Horizontal radius in which to search for holes.", + "module.hole-filler.general.place-range": "Place Range", + "module.hole-filler.general.place-range.description": "How far away from the player you can place a block.", + "module.hole-filler.general.walls-range": "Walls Range", + "module.hole-filler.general.walls-range.description": "How far away from the player you can place a block behind walls.", + "module.hole-filler.general.doubles": "Doubles", + "module.hole-filler.general.doubles.description": "Fills double holes.", + "module.hole-filler.general.rotate": "Rotate", + "module.hole-filler.general.rotate.description": "Automatically rotates towards the holes being filled.", + "module.hole-filler.general.place-delay": "Place Delay", + "module.hole-filler.general.place-delay.description": "The ticks delay between placement.", + "module.hole-filler.general.blocks-per-tick": "Blocks Per Tick", + "module.hole-filler.general.blocks-per-tick.description": "How many blocks to place in one tick.", + "module.hole-filler.smart": "Smart", + "module.hole-filler.smart.smart": "Smart", + "module.hole-filler.smart.smart.description": "Take more factors into account before filling a hole.", + "module.hole-filler.smart.force-fill": "Force Fill", + "module.hole-filler.smart.force-fill.description": "Fills all holes around you regardless of target checks.", + "module.hole-filler.smart.predict-movement": "Predict Movement", + "module.hole-filler.smart.predict-movement.description": "Predict target movement to account for ping.", + "module.hole-filler.smart.ticks-to-predict": "Ticks To Predict", + "module.hole-filler.smart.ticks-to-predict.description": "How many ticks ahead we should predict for.", + "module.hole-filler.smart.ignore-safe": "Ignore Safe", + "module.hole-filler.smart.ignore-safe.description": "Ignore players in safe holes.", + "module.hole-filler.smart.only-moving": "Only Moving", + "module.hole-filler.smart.only-moving.description": "Ignore players if they're standing still.", + "module.hole-filler.smart.target-range": "Target Range", + "module.hole-filler.smart.target-range.description": "How far away to target players.", + "module.hole-filler.smart.feet-range": "Feet Range", + "module.hole-filler.smart.feet-range.description": "How far from a hole a player's feet must be to fill it.", + "module.hole-filler.render": "Render", + "module.hole-filler.render.swing": "Swing", + "module.hole-filler.render.swing.description": "Swing the player's hand when placing.", + "module.hole-filler.render.render": "Render", + "module.hole-filler.render.render.description": "Renders an overlay where blocks will be placed.", + "module.hole-filler.render.shape-mode": "Shape Mode", + "module.hole-filler.render.shape-mode.description": "How the shapes are rendered.", + "module.hole-filler.render.side-color": "Side Color", + "module.hole-filler.render.side-color.description": "The side color of the target block rendering.", + "module.hole-filler.render.line-color": "Line Color", + "module.hole-filler.render.line-color.description": "The line color of the target block rendering.", + "module.hole-filler.render.next-side-color": "Next Side Color", + "module.hole-filler.render.next-side-color.description": "The side color of the next block to be placed.", + "module.hole-filler.render.next-line-color": "Next Line Color", + "module.hole-filler.render.next-line-color.description": "The line color of the next block to be placed.", + + "module.message-aura": "Message Aura", + "module.message-aura.description": "Sends a specified message to any player that enters render distance.", + "module.message-aura.general.message": "Message", + "module.message-aura.general.message.description": "The specified message sent to the player.", + "module.message-aura.general.ignore-friends": "Ignore Friends", + "module.message-aura.general.ignore-friends.description": "Will not send any messages to people friended.", + + "module.fast-climb": "Fast Climb", + "module.fast-climb.description": "Allows you to climb faster.", + "module.fast-climb.general.timer-mode": "Timer Mode", + "module.fast-climb.general.timer-mode.description": "Use timer.", + "module.fast-climb.general.climb-speed": "Climb Speed", + "module.fast-climb.general.climb-speed.description": "Your climb speed.", + "module.fast-climb.general.timer": "Timer", + "module.fast-climb.general.timer.description": "The timer value for Timer.", + + "module.sprint": "Sprint", + "module.sprint.description": "Automatically sprints.", + "module.sprint.general.sprint-mode": "Sprint Mode", + "module.sprint.general.sprint-mode.description": "What mode of sprinting.", + "module.sprint.general.keep-sprint": "Keep Sprint", + "module.sprint.general.keep-sprint.description": "Whether to keep sprinting after attacking.", + "module.sprint.general.unsprint-on-hit": "Unsprint On Hit", + "module.sprint.general.unsprint-on-hit.description": "Whether to stop sprinting before attacking, to ensure you get crits and sweep attacks.", + "module.sprint.general.unsprint-in-water": "Unsprint In Water", + "module.sprint.general.unsprint-in-water.description": "Whether to stop sprinting when in water.", + "module.sprint.general.sprint-while-stationary": "Sprint While Stationary", + "module.sprint.general.sprint-while-stationary.description": "Sprint even when not moving.", + + "module.xray": "Xray", + "module.xray.description": "Only renders specified blocks. Good for mining.", + "module.xray.general.whitelist": "Whitelist", + "module.xray.general.whitelist.description": "Which blocks to show x-rayed.", + "module.xray.general.opacity": "Opacity", + "module.xray.general.opacity.description": "The opacity for all other blocks.", + "module.xray.general.exposed-only": "Exposed Only", + "module.xray.general.exposed-only.description": "Show only exposed ores.", + + "module.notebot": "Notebot", + "module.notebot.description": "Plays noteblock nicely", + "module.notebot.general.tick-delay": "Tick Delay", + "module.notebot.general.tick-delay.description": "The delay when loading a song.", + "module.notebot.general.concurrent-tune-blocks": "Concurrent Tune Blocks", + "module.notebot.general.concurrent-tune-blocks.description": "How many noteblocks can be tuned at the same time. On Paper it is recommended to set it to 1 to avoid bugs.", + "module.notebot.general.mode": "Mode", + "module.notebot.general.mode.description": "Select mode of notebot", + "module.notebot.general.instrument-detect-mode": "Instrument Detect Mode", + "module.notebot.general.instrument-detect-mode.description": "Select an instrument detect mode. Can be useful when server has a plugin that modifies noteblock state (e.g ItemsAdder) but noteblock can still play the right note", + "module.notebot.general.polyphonic": "Polyphonic", + "module.notebot.general.polyphonic.description": "Whether or not to allow multiple notes to be played at the same time", + "module.notebot.general.auto-rotate": "Auto Rotate", + "module.notebot.general.auto-rotate.description": "Should client look at note block when it wants to hit it", + "module.notebot.general.auto-play": "Auto Play", + "module.notebot.general.auto-play.description": "Auto plays random songs", + "module.notebot.general.round-out-of-range": "Round Out Of Range", + "module.notebot.general.round-out-of-range.description": "Rounds out of range notes", + "module.notebot.general.swing-arm": "Swing Arm", + "module.notebot.general.swing-arm.description": "Should swing arm on hit", + "module.notebot.general.check-noteblocks-again-delay": "Check Noteblocks Again Delay", + "module.notebot.general.check-noteblocks-again-delay.description": "How much delay should be between end of tuning and checking again", + "module.notebot.note-map": "Note Map", + "module.notebot.note-map.Harp": "Harp", + "module.notebot.note-map.Harp.description": "", + "module.notebot.note-map.Basedrum": "Basedrum", + "module.notebot.note-map.Basedrum.description": "", + "module.notebot.note-map.Snare": "Snare", + "module.notebot.note-map.Snare.description": "", + "module.notebot.note-map.Hat": "Hat", + "module.notebot.note-map.Hat.description": "", + "module.notebot.note-map.Bass": "Bass", + "module.notebot.note-map.Bass.description": "", + "module.notebot.note-map.Flute": "Flute", + "module.notebot.note-map.Flute.description": "", + "module.notebot.note-map.Bell": "Bell", + "module.notebot.note-map.Bell.description": "", + "module.notebot.note-map.Guitar": "Guitar", + "module.notebot.note-map.Guitar.description": "", + "module.notebot.note-map.Chime": "Chime", + "module.notebot.note-map.Chime.description": "", + "module.notebot.note-map.Xylophone": "Xylophone", + "module.notebot.note-map.Xylophone.description": "", + "module.notebot.note-map.IronXylophone": "IronXylophone", + "module.notebot.note-map.IronXylophone.description": "", + "module.notebot.note-map.CowBell": "CowBell", + "module.notebot.note-map.CowBell.description": "", + "module.notebot.note-map.Didgeridoo": "Didgeridoo", + "module.notebot.note-map.Didgeridoo.description": "", + "module.notebot.note-map.Bit": "Bit", + "module.notebot.note-map.Bit.description": "", + "module.notebot.note-map.Banjo": "Banjo", + "module.notebot.note-map.Banjo.description": "", + "module.notebot.note-map.Pling": "Pling", + "module.notebot.note-map.Pling.description": "", + "module.notebot.render": "Render", + "module.notebot.render.render-text": "Render Text", + "module.notebot.render.render-text.description": "Whether or not to render the text above noteblocks.", + "module.notebot.render.render-boxes": "Render Boxes", + "module.notebot.render.render-boxes.description": "Whether or not to render the outline around the noteblocks.", + "module.notebot.render.shape-mode": "Shape Mode", + "module.notebot.render.shape-mode.description": "How the shapes are rendered.", + "module.notebot.render.untuned-side-color": "Untuned Side Color", + "module.notebot.render.untuned-side-color.description": "The color of the sides of the untuned blocks being rendered.", + "module.notebot.render.untuned-line-color": "Untuned Line Color", + "module.notebot.render.untuned-line-color.description": "The color of the lines of the untuned blocks being rendered.", + "module.notebot.render.tuned-side-color": "Tuned Side Color", + "module.notebot.render.tuned-side-color.description": "The color of the sides of the tuned blocks being rendered.", + "module.notebot.render.tuned-line-color": "Tuned Line Color", + "module.notebot.render.tuned-line-color.description": "The color of the lines of the tuned blocks being rendered.", + "module.notebot.render.hit-side-color": "Hit Side Color", + "module.notebot.render.hit-side-color.description": "The color of the sides being rendered on noteblock tune hit.", + "module.notebot.render.hit-line-color": "Hit Line Color", + "module.notebot.render.hit-line-color.description": "The color of the lines being rendered on noteblock tune hit.", + "module.notebot.render.scanned-noteblock-side-color": "Scanned Noteblock Side Color", + "module.notebot.render.scanned-noteblock-side-color.description": "The color of the sides of the scanned noteblocks being rendered.", + "module.notebot.render.scanned-noteblock-line-color": "Scanned Noteblock Line Color", + "module.notebot.render.scanned-noteblock-line-color.description": "The color of the lines of the scanned noteblocks being rendered.", + "module.notebot.render.note-text-scale": "Note Text Scale", + "module.notebot.render.note-text-scale.description": "The scale.", + "module.notebot.render.show-scanned-noteblocks": "Show Scanned Noteblocks", + "module.notebot.render.show-scanned-noteblocks.description": "Show scanned Noteblocks", + + "module.item-highlight": "Item Highlight", + "module.item-highlight.description": "Highlights selected items when in guis", + "module.item-highlight.general.items": "Items", + "module.item-highlight.general.items.description": "Items to highlight.", + "module.item-highlight.general.color": "Color", + "module.item-highlight.general.color.description": "The color to highlight the items with.", + + "module.auto-mount": "Auto Mount", + "module.auto-mount.description": "Automatically mounts entities.", + "module.auto-mount.general.check-saddle": "Check Saddle", + "module.auto-mount.general.check-saddle.description": "Checks if the entity contains a saddle before mounting.", + "module.auto-mount.general.rotate": "Rotate", + "module.auto-mount.general.rotate.description": "Faces the entity you mount.", + "module.auto-mount.general.entities": "Entities", + "module.auto-mount.general.entities.description": "Rideable entities.", + + "module.zoom": "Zoom", + "module.zoom.description": "Zooms your view.", + "module.zoom.general.zoom": "Zoom", + "module.zoom.general.zoom.description": "How much to zoom.", + "module.zoom.general.scroll-sensitivity": "Scroll Sensitivity", + "module.zoom.general.scroll-sensitivity.description": "Allows you to change zoom value using scroll wheel. 0 to disable.", + "module.zoom.general.smooth": "Smooth", + "module.zoom.general.smooth.description": "Smooth transition.", + "module.zoom.general.cinematic": "Cinematic", + "module.zoom.general.cinematic.description": "Enables cinematic camera.", + "module.zoom.general.hide-HUD": "Hide HUD", + "module.zoom.general.hide-HUD.description": "Whether or not to hide the Minecraft HUD.", + "module.zoom.general.show-hands": "Show Hands", + "module.zoom.general.show-hands.description": "Whether or not to render your hands.", + + "module.bow-spam": "Bow Spam", + "module.bow-spam.description": "Spams bows and crossbows.", + "module.bow-spam.general.charge": "Charge", + "module.bow-spam.general.charge.description": "How long to charge the bow before releasing in ticks.", + "module.bow-spam.general.when-holding-right-click": "When Holding Right Click", + "module.bow-spam.general.when-holding-right-click.description": "Works only when holding right click.", + "module.bow-spam.crossbows": "Crossbows", + "module.bow-spam.crossbows.spam-crossbows": "Spam Crossbows", + "module.bow-spam.crossbows.spam-crossbows.description": "Whether to spam loaded crossbows; takes priority over charging bows.", + "module.bow-spam.crossbows.crossbow-delay": "Crossbow Delay", + "module.bow-spam.crossbows.crossbow-delay.description": "Delay between shooting crossbows in ticks.", + "module.bow-spam.crossbows.search-inventory": "Search Inventory", + "module.bow-spam.crossbows.search-inventory.description": "Whether to search your inventory to find loaded crossbows.", + + "module.free-look": "Free Look", + "module.free-look.description": "Allows more rotation options in third person.", + "module.free-look.general.mode": "Mode", + "module.free-look.general.mode.description": "Which entity to rotate.", + "module.free-look.general.toggle-perspective": "Toggle Perspective", + "module.free-look.general.toggle-perspective.description": "Changes your perspective on toggle.", + "module.free-look.general.camera-sensitivity": "Camera Sensitivity", + "module.free-look.general.camera-sensitivity.description": "How fast the camera moves in camera mode.", + "module.free-look.arrows": "Arrows", + "module.free-look.arrows.arrows-control-opposite": "Arrows Control Opposite", + "module.free-look.arrows.arrows-control-opposite.description": "Allows you to control the other entities rotation with the arrow keys.", + "module.free-look.arrows.arrow-speed": "Arrow Speed", + "module.free-look.arrows.arrow-speed.description": "Rotation speed with arrow keys.", + + "module.auto-walk": "Auto Walk", + "module.auto-walk.description": "Automatically walks forward.", + "module.auto-walk.general.mode": "Mode", + "module.auto-walk.general.mode.description": "Walking mode.", + "module.auto-walk.general.simple-direction": "Simple Direction", + "module.auto-walk.general.simple-direction.description": "The direction to walk in simple mode.", + "module.auto-walk.general.disable-on-input": "Disable On Input", + "module.auto-walk.general.disable-on-input.description": "Disable module on manual movement input", + "module.auto-walk.general.disable-on-y-change": "Disable On Y Change", + "module.auto-walk.general.disable-on-y-change.description": "Disable module if player moves vertically", + "module.auto-walk.general.no-unloaded-chunks": "No Unloaded Chunks", + "module.auto-walk.general.no-unloaded-chunks.description": "Do not allow movement into unloaded chunks", + + "module.self-trap": "Self Trap", + "module.self-trap.description": "Places blocks above your head.", + "module.self-trap.general.whitelist": "Whitelist", + "module.self-trap.general.whitelist.description": "Which blocks to use.", + "module.self-trap.general.top-mode": "Top Mode", + "module.self-trap.general.top-mode.description": "Which positions to place on your top half.", + "module.self-trap.general.bottom-mode": "Bottom Mode", + "module.self-trap.general.bottom-mode.description": "Which positions to place on your bottom half.", + "module.self-trap.general.place-delay": "Place Delay", + "module.self-trap.general.place-delay.description": "How many ticks between block placements.", + "module.self-trap.general.center": "Center", + "module.self-trap.general.center.description": "Centers you on the block you are standing on before placing.", + "module.self-trap.general.turn-off": "Turn Off", + "module.self-trap.general.turn-off.description": "Turns off after placing.", + "module.self-trap.general.rotate": "Rotate", + "module.self-trap.general.rotate.description": "Sends rotation packets to the server when placing.", + "module.self-trap.render": "Render", + "module.self-trap.render.render": "Render", + "module.self-trap.render.render.description": "Renders a block overlay where the blocks will be placed.", + "module.self-trap.render.shape-mode": "Shape Mode", + "module.self-trap.render.shape-mode.description": "How the shapes are rendered.", + "module.self-trap.render.side-color": "Side Color", + "module.self-trap.render.side-color.description": "The color of the sides of the blocks being rendered.", + "module.self-trap.render.line-color": "Line Color", + "module.self-trap.render.line-color.description": "The color of the lines of the blocks being rendered.", + + "module.safe-walk": "Safe Walk", + "module.safe-walk.description": "Prevents you from walking off blocks.", + "module.safe-walk.general.minimum-fall-distance": "Minimum Fall Distance", + "module.safe-walk.general.minimum-fall-distance.description": "The minimum number of blocks you are expected to fall before the module activates.", + "module.safe-walk.general.sneak": "Sneak", + "module.safe-walk.general.sneak.description": "Sneak when approaching edge of block.", + "module.safe-walk.general.safe-sneak": "Safe Sneak", + "module.safe-walk.general.safe-sneak.description": "Prevent you from falling if sneak doesn't trigger correctly.", + "module.safe-walk.general.sneak-on-sprint": "Sneak On Sprint", + "module.safe-walk.general.sneak-on-sprint.description": "Sneak even when sprinting at the block edge.", + "module.safe-walk.general.edge-distance": "Edge Distance", + "module.safe-walk.general.edge-distance.description": "Distance offset before reaching an edge.", + "module.safe-walk.render": "Render", + "module.safe-walk.render.render": "Render", + "module.safe-walk.render.render.description": "Render edge distance helper.", + "module.safe-walk.render.render-player-box": "Render Player Box", + "module.safe-walk.render.render-player-box.description": "Render player box helper.", + + "module.auto-wasp": "Auto Wasp", + "module.auto-wasp.description": "Wasps for you. Unable to traverse around blocks, assumes a clear straight line to the target.", + "module.auto-wasp.general.horizontal-speed": "Horizontal Speed", + "module.auto-wasp.general.horizontal-speed.description": "Horizontal elytra speed.", + "module.auto-wasp.general.vertical-speed": "Vertical Speed", + "module.auto-wasp.general.vertical-speed.description": "Vertical elytra speed.", + "module.auto-wasp.general.avoid-landing": "Avoid Landing", + "module.auto-wasp.general.avoid-landing.description": "Will try to avoid landing if your target is on the ground.", + "module.auto-wasp.general.predict-movement": "Predict Movement", + "module.auto-wasp.general.predict-movement.description": "Tries to predict the targets position according to their movement.", + "module.auto-wasp.general.only-friends": "Only Friends", + "module.auto-wasp.general.only-friends.description": "Will only follow friends.", + "module.auto-wasp.general.action-on-target-loss": "Action On Target Loss", + "module.auto-wasp.general.action-on-target-loss.description": "What to do if you lose the target.", + "module.auto-wasp.general.offset": "Offset", + "module.auto-wasp.general.offset.description": "How many blocks offset to wasp at from the target.", + + "module.break-delay": "Break Delay", + "module.break-delay.description": "Changes the delay between breaking blocks.", + "module.break-delay.general.cooldown": "Cooldown", + "module.break-delay.general.cooldown.description": "Block break cooldown in ticks.", + "module.break-delay.general.no-insta-break": "No Insta Break", + "module.break-delay.general.no-insta-break.description": "Prevents you from misbreaking blocks if you can instantly break them.", + + "module.auto-armor": "Auto Armor", + "module.auto-armor.description": "Automatically equips armor.", + "module.auto-armor.general.preferred-protection": "Preferred Protection", + "module.auto-armor.general.preferred-protection.description": "Which type of protection to prefer.", + "module.auto-armor.general.swap-delay": "Swap Delay", + "module.auto-armor.general.swap-delay.description": "The delay between equipping armor pieces.", + "module.auto-armor.general.avoided-enchantments": "Avoided Enchantments", + "module.auto-armor.general.avoided-enchantments.description": "Enchantments that should be avoided.", + "module.auto-armor.general.blast-prot-leggings": "Blast Prot Leggings", + "module.auto-armor.general.blast-prot-leggings.description": "Uses blast protection for leggings regardless of preferred protection.", + "module.auto-armor.general.anti-break": "Anti Break", + "module.auto-armor.general.anti-break.description": "Takes off armor if it is about to break.", + "module.auto-armor.general.ignore-elytra": "Ignore Elytra", + "module.auto-armor.general.ignore-elytra.description": "Will not replace your elytra if you have it equipped.", + + "module.pop-chams": "Pop Chams", + "module.pop-chams.description": "Renders a ghost where players pop totem.", + "module.pop-chams.general.only-one": "Only One", + "module.pop-chams.general.only-one.description": "Only allow one ghost per player.", + "module.pop-chams.general.render-time": "Render Time", + "module.pop-chams.general.render-time.description": "How long the ghost is rendered in seconds.", + "module.pop-chams.general.y-modifier": "Y Modifier", + "module.pop-chams.general.y-modifier.description": "How much should the Y position of the ghost change per second.", + "module.pop-chams.general.scale-modifier": "Scale Modifier", + "module.pop-chams.general.scale-modifier.description": "How much should the scale of the ghost change per second.", + "module.pop-chams.general.fade-out": "Fade Out", + "module.pop-chams.general.fade-out.description": "Fades out the color.", + "module.pop-chams.general.shape-mode": "Shape Mode", + "module.pop-chams.general.shape-mode.description": "How the shapes are rendered.", + "module.pop-chams.general.side-color": "Side Color", + "module.pop-chams.general.side-color.description": "The side color.", + "module.pop-chams.general.line-color": "Line Color", + "module.pop-chams.general.line-color.description": "The line color.", + + "module.ghost-hand": "Ghost Hand", + "module.ghost-hand.description": "Opens containers through walls.", + + "module.slippy": "Slippy", + "module.slippy.description": "Changes the base friction level of blocks.", + "module.slippy.general.friction": "Friction", + "module.slippy.general.friction.description": "The base friction level.", + "module.slippy.general.list-mode": "List Mode", + "module.slippy.general.list-mode.description": "The mode to select blocks.", + "module.slippy.general.ignored-blocks": "Ignored Blocks", + "module.slippy.general.ignored-blocks.description": "Decide which blocks not to slip on", + "module.slippy.general.allowed-blocks": "Allowed Blocks", + "module.slippy.general.allowed-blocks.description": "Decide which blocks to slip on", + + "module.auto-tool": "Auto Tool", + "module.auto-tool.description": "Automatically switches to the most effective tool when performing an action.", + "module.auto-tool.general.prefer": "Prefer", + "module.auto-tool.general.prefer.description": "Either to prefer Silk Touch, Fortune, or none.", + "module.auto-tool.general.silk-touch-for-ender-chest": "Silk Touch For Ender Chest", + "module.auto-tool.general.silk-touch-for-ender-chest.description": "Mines Ender Chests only with the Silk Touch enchantment.", + "module.auto-tool.general.fortune-for-ores-and-crops": "Fortune For Ores And Crops", + "module.auto-tool.general.fortune-for-ores-and-crops.description": "Mines Ores and crops only with the Fortune enchantment.", + "module.auto-tool.general.anti-break": "Anti Break", + "module.auto-tool.general.anti-break.description": "Stops you from breaking your tool.", + "module.auto-tool.general.anti-break-percentage": "Anti Break Percentage", + "module.auto-tool.general.anti-break-percentage.description": "The durability percentage to stop using a tool.", + "module.auto-tool.general.switch-back": "Switch Back", + "module.auto-tool.general.switch-back.description": "Switches your hand to whatever was selected when releasing your attack key.", + "module.auto-tool.general.switch-delay": "Switch Delay", + "module.auto-tool.general.switch-delay.description": "Delay in ticks before switching tools.", + "module.auto-tool.whitelist": "Whitelist", + "module.auto-tool.whitelist.list-mode": "List Mode", + "module.auto-tool.whitelist.list-mode.description": "Selection mode.", + "module.auto-tool.whitelist.whitelist": "Whitelist", + "module.auto-tool.whitelist.whitelist.description": "The tools you want to use.", + "module.auto-tool.whitelist.blacklist": "Blacklist", + "module.auto-tool.whitelist.blacklist.description": "The tools you don't want to use.", + + "module.anti-hunger": "Anti Hunger", + "module.anti-hunger.description": "Reduces (does NOT remove) hunger consumption.", + "module.anti-hunger.general.sprint": "Sprint", + "module.anti-hunger.general.sprint.description": "Spoofs sprinting packets.", + "module.anti-hunger.general.on-ground": "On Ground", + "module.anti-hunger.general.on-ground.description": "Spoofs the onGround flag.", + + "module.auto-clicker": "Auto Clicker", + "module.auto-clicker.description": "Automatically clicks.", + "module.auto-clicker.general.while-in-screens": "While In Screens", + "module.auto-clicker.general.while-in-screens.description": "Whether to click while a screen is open.", + "module.auto-clicker.general.mode-left": "Mode Left", + "module.auto-clicker.general.mode-left.description": "The method of clicking for left clicks.", + "module.auto-clicker.general.delay-left": "Delay Left", + "module.auto-clicker.general.delay-left.description": "The amount of delay between left clicks in ticks.", + "module.auto-clicker.general.mode-right": "Mode Right", + "module.auto-clicker.general.mode-right.description": "The method of clicking for right clicks.", + "module.auto-clicker.general.delay-right": "Delay Right", + "module.auto-clicker.general.delay-right.description": "The amount of delay between right clicks in ticks.", + + "module.auto-shearer": "Auto Shearer", + "module.auto-shearer.description": "Automatically shears sheep.", + "module.auto-shearer.general.distance": "Distance", + "module.auto-shearer.general.distance.description": "The maximum distance the sheep have to be to be sheared.", + "module.auto-shearer.general.anti-break": "Anti Break", + "module.auto-shearer.general.anti-break.description": "Prevents shears from being broken.", + "module.auto-shearer.general.rotate": "Rotate", + "module.auto-shearer.general.rotate.description": "Automatically faces towards the animal being sheared.", + + "module.boss-stack": "Boss Stack", + "module.boss-stack.description": "Stacks boss bars to make your HUD less cluttered.", + "module.boss-stack.general.stack": "Stack", + "module.boss-stack.general.stack.description": "Stacks boss bars and adds a counter to the text.", + "module.boss-stack.general.hide-name": "Hide Name", + "module.boss-stack.general.hide-name.description": "Hides the names of boss bars.", + "module.boss-stack.general.bar-spacing": "Bar Spacing", + "module.boss-stack.general.bar-spacing.description": "The spacing reduction between each boss bar.", + + "module.camera-tweaks": "Camera Tweaks", + "module.camera-tweaks.description": "Allows modification of the third person camera.", + "module.camera-tweaks.general.clip": "Clip", + "module.camera-tweaks.general.clip.description": "Allows the camera to clip through blocks.", + "module.camera-tweaks.general.camera-distance": "Camera Distance", + "module.camera-tweaks.general.camera-distance.description": "The distance the third person camera is from the player.", + "module.camera-tweaks.scrolling": "Scrolling", + "module.camera-tweaks.scrolling.scrolling": "Scrolling", + "module.camera-tweaks.scrolling.scrolling.description": "Allows you to scroll to change camera distance.", + "module.camera-tweaks.scrolling.bind": "Bind", + "module.camera-tweaks.scrolling.bind.description": "Binds camera distance scrolling to a key.", + "module.camera-tweaks.scrolling.sensitivity": "Sensitivity", + "module.camera-tweaks.scrolling.sensitivity.description": "Sensitivity of the scroll wheel when changing the cameras distance.", + + "module.auto-weapon": "Auto Weapon", + "module.auto-weapon.description": "Finds the best weapon to use in your hotbar.", + "module.auto-weapon.general.weapon": "Weapon", + "module.auto-weapon.general.weapon.description": "What type of weapon to use.", + "module.auto-weapon.general.threshold": "Threshold", + "module.auto-weapon.general.threshold.description": "If the non-preferred weapon produces this much damage this will favor it over your preferred weapon.", + "module.auto-weapon.general.anti-break": "Anti Break", + "module.auto-weapon.general.anti-break.description": "Prevents you from breaking your weapon.", + + "module.better-chat": "Better Chat", + "module.better-chat.description": "Improves your chat experience in various ways.", + "module.better-chat.general.annoy": "Annoy", + "module.better-chat.general.annoy.description": "Makes your messages aNnOyInG.", + "module.better-chat.general.fancy-chat": "Fancy Chat", + "module.better-chat.general.fancy-chat.description": "Makes your messages ғᴀɴᴄʏ!", + "module.better-chat.general.timestamps": "Timestamps", + "module.better-chat.general.timestamps.description": "Adds client-side time stamps to the beginning of chat messages.", + "module.better-chat.general.show-seconds": "Show Seconds", + "module.better-chat.general.show-seconds.description": "Shows seconds in the chat message timestamps", + "module.better-chat.general.player-heads": "Player Heads", + "module.better-chat.general.player-heads.description": "Displays player heads next to their messages.", + "module.better-chat.general.coords-protection": "Coords Protection", + "module.better-chat.general.coords-protection.description": "Prevents you from sending messages in chat that may contain coordinates.", + "module.better-chat.general.keep-history": "Keep History", + "module.better-chat.general.keep-history.description": "Prevents the chat history from being cleared when disconnecting.", + "module.better-chat.filter": "Filter", + "module.better-chat.filter.anti-spam": "Anti Spam", + "module.better-chat.filter.anti-spam.description": "Blocks duplicate messages from filling your chat.", + "module.better-chat.filter.depth": "Depth", + "module.better-chat.filter.depth.description": "How many messages to filter.", + "module.better-chat.filter.anti-clear": "Anti Clear", + "module.better-chat.filter.anti-clear.description": "Prevents servers from clearing chat.", + "module.better-chat.filter.filter-regex": "Filter Regex", + "module.better-chat.filter.filter-regex.description": "Filter out chat messages that match the regex filter.", + "module.better-chat.filter.regex-filter": "Regex Filter", + "module.better-chat.filter.regex-filter.description": "Regex filter used for filtering chat messages.", + "module.better-chat.longer-chat": "Longer Chat", + "module.better-chat.longer-chat.infinite-chat-box": "Infinite Chat Box", + "module.better-chat.longer-chat.infinite-chat-box.description": "Lets you type infinitely long messages.", + "module.better-chat.longer-chat.longer-chat-history": "Longer Chat History", + "module.better-chat.longer-chat.longer-chat-history.description": "Extends chat length.", + "module.better-chat.longer-chat.extra-lines": "Extra Lines", + "module.better-chat.longer-chat.extra-lines.description": "The amount of extra chat lines.", + "module.better-chat.prefix": "Prefix", + "module.better-chat.prefix.prefix": "Prefix", + "module.better-chat.prefix.prefix.description": "Adds a prefix to your chat messages.", + "module.better-chat.prefix.random": "Random", + "module.better-chat.prefix.random.description": "Uses a random number as your prefix.", + "module.better-chat.prefix.text": "Text", + "module.better-chat.prefix.text.description": "The text to add as your prefix.", + "module.better-chat.prefix.small-caps": "Small Caps", + "module.better-chat.prefix.small-caps.description": "Uses small caps in the prefix.", + "module.better-chat.suffix": "Suffix", + "module.better-chat.suffix.suffix": "Suffix", + "module.better-chat.suffix.suffix.description": "Adds a suffix to your chat messages.", + "module.better-chat.suffix.random": "Random", + "module.better-chat.suffix.random.description": "Uses a random number as your suffix.", + "module.better-chat.suffix.text": "Text", + "module.better-chat.suffix.text.description": "The text to add as your suffix.", + "module.better-chat.suffix.small-caps": "Small Caps", + "module.better-chat.suffix.small-caps.description": "Uses small caps in the suffix.", + + "module.offhand-crash": "Offhand Crash", + "module.offhand-crash.description": "An exploit that can crash other players by swapping back and forth between your main hand and offhand.", + "module.offhand-crash.general.do-crash": "Do Crash", + "module.offhand-crash.general.do-crash.description": "Sends X number of offhand swap sound packets to the server per tick.", + "module.offhand-crash.general.speed": "Speed", + "module.offhand-crash.general.speed.description": "The amount of swaps per tick.", + "module.offhand-crash.general.anti-crash": "Anti Crash", + "module.offhand-crash.general.anti-crash.description": "Attempts to prevent you from crashing yourself.", + + "module.auto-breed": "Auto Breed", + "module.auto-breed.description": "Automatically breeds specified animals.", + "module.auto-breed.general.entities": "Entities", + "module.auto-breed.general.entities.description": "Entities to breed.", + "module.auto-breed.general.range": "Range", + "module.auto-breed.general.range.description": "How far away the animals can be to be bred.", + "module.auto-breed.general.hand-for-breeding": "Hand For Breeding", + "module.auto-breed.general.hand-for-breeding.description": "The hand to use for breeding.", + "module.auto-breed.general.mob-age-filter": "Mob Age Filter", + "module.auto-breed.general.mob-age-filter.description": "Determines the age of the mobs to target (baby, adult, or both).", + + "module.spawn-proofer": "Spawn Proofer", + "module.spawn-proofer.description": "Automatically spawnproofs unlit areas.", + "module.spawn-proofer.general.place-delay": "Place Delay", + "module.spawn-proofer.general.place-delay.description": "The tick delay between placing blocks.", + "module.spawn-proofer.general.place-range": "Place Range", + "module.spawn-proofer.general.place-range.description": "How far away from the player you can place a block.", + "module.spawn-proofer.general.walls-range": "Walls Range", + "module.spawn-proofer.general.walls-range.description": "How far away from the player you can place a block behind walls.", + "module.spawn-proofer.general.blocks-per-tick": "Blocks Per Tick", + "module.spawn-proofer.general.blocks-per-tick.description": "How many blocks to place in one tick.", + "module.spawn-proofer.general.light-level": "Light Level", + "module.spawn-proofer.general.light-level.description": "Light levels to spawn proof. Old spawning light: 7.", + "module.spawn-proofer.general.blocks": "Blocks", + "module.spawn-proofer.general.blocks.description": "Block to use for spawn proofing.", + "module.spawn-proofer.general.mode": "Mode", + "module.spawn-proofer.general.mode.description": "Which spawn types should be spawn proofed.", + "module.spawn-proofer.general.rotate": "Rotate", + "module.spawn-proofer.general.rotate.description": "Rotates towards the blocks being placed.", + + "module.step": "Step", + "module.step.description": "Allows you to walk up full blocks instantly.", + "module.step.general.height": "Height", + "module.step.general.height.description": "Step height.", + "module.step.general.active-when": "Active When", + "module.step.general.active-when.description": "Step is active when you meet these requirements.", + "module.step.general.safe-step": "Safe Step", + "module.step.general.safe-step.description": "Doesn't let you step out of a hole if you are low on health or there is a crystal nearby.", + "module.step.general.step-health": "Step Health", + "module.step.general.step-health.description": "The health you stop being able to step at.", + + "module.entity-owner": "Entity Owner", + "module.entity-owner.description": "Displays the name of the player who owns the entity you're looking at.", + "module.entity-owner.general.scale": "Scale", + "module.entity-owner.general.scale.description": "The scale of the text.", + + "module.scaffold": "Scaffold", + "module.scaffold.description": "Automatically places blocks under you.", + "module.scaffold.general.blocks": "Blocks", + "module.scaffold.general.blocks.description": "Selected blocks.", + "module.scaffold.general.blocks-filter": "Blocks Filter", + "module.scaffold.general.blocks-filter.description": "How to use the block list setting", + "module.scaffold.general.fast-tower": "Fast Tower", + "module.scaffold.general.fast-tower.description": "Whether or not to scaffold upwards faster.", + "module.scaffold.general.tower-speed": "Tower Speed", + "module.scaffold.general.tower-speed.description": "The speed at which to tower.", + "module.scaffold.general.while-moving": "While Moving", + "module.scaffold.general.while-moving.description": "Allows you to tower while moving.", + "module.scaffold.general.only-on-click": "Only On Click", + "module.scaffold.general.only-on-click.description": "Only places blocks when holding right click.", + "module.scaffold.general.swing": "Swing", + "module.scaffold.general.swing.description": "Renders your client-side swing.", + "module.scaffold.general.auto-switch": "Auto Switch", + "module.scaffold.general.auto-switch.description": "Automatically swaps to a block before placing.", + "module.scaffold.general.rotate": "Rotate", + "module.scaffold.general.rotate.description": "Rotates towards the blocks being placed.", + "module.scaffold.general.air-place": "Air Place", + "module.scaffold.general.air-place.description": "Allow air place. This also allows you to modify scaffold radius.", + "module.scaffold.general.ahead-distance": "Ahead Distance", + "module.scaffold.general.ahead-distance.description": "How far ahead to place blocks.", + "module.scaffold.general.closest-block-range": "Closest Block Range", + "module.scaffold.general.closest-block-range.description": "How far can scaffold place blocks when you are in air.", + "module.scaffold.general.radius": "Radius", + "module.scaffold.general.radius.description": "Scaffold radius.", + "module.scaffold.general.blocks-per-tick": "Blocks Per Tick", + "module.scaffold.general.blocks-per-tick.description": "How many blocks to place in one tick.", + "module.scaffold.render": "Render", + "module.scaffold.render.render": "Render", + "module.scaffold.render.render.description": "Whether to render blocks that have been placed.", + "module.scaffold.render.shape-mode": "Shape Mode", + "module.scaffold.render.shape-mode.description": "How the shapes are rendered.", + "module.scaffold.render.side-color": "Side Color", + "module.scaffold.render.side-color.description": "The side color of the target block rendering.", + "module.scaffold.render.line-color": "Line Color", + "module.scaffold.render.line-color.description": "The line color of the target block rendering.", + + "module.sneak": "Sneak", + "module.sneak.description": "Sneaks for you", + "module.sneak.general.mode": "Mode", + "module.sneak.general.mode.description": "Which method to sneak.", + + "module.no-slow": "No Slow", + "module.no-slow.description": "Allows you to move normally when using objects that will slow you.", + "module.no-slow.general.items": "Items", + "module.no-slow.general.items.description": "Whether or not using items will slow you.", + "module.no-slow.general.web": "Web", + "module.no-slow.general.web.description": "Whether or not cobwebs will not slow you down.", + "module.no-slow.general.web-timer": "Web Timer", + "module.no-slow.general.web-timer.description": "The timer value for WebMode Timer.", + "module.no-slow.general.honey-block": "Honey Block", + "module.no-slow.general.honey-block.description": "Whether or not honey blocks will not slow you down.", + "module.no-slow.general.soul-sand": "Soul Sand", + "module.no-slow.general.soul-sand.description": "Whether or not soul sand will not slow you down.", + "module.no-slow.general.slime-block": "Slime Block", + "module.no-slow.general.slime-block.description": "Whether or not slime blocks will not slow you down.", + "module.no-slow.general.berry-bush": "Berry Bush", + "module.no-slow.general.berry-bush.description": "Whether or not berry bushes will not slow you down.", + "module.no-slow.general.air-strict": "Air Strict", + "module.no-slow.general.air-strict.description": "Will attempt to bypass anti-cheats like 2b2t's. Only works while in air.", + "module.no-slow.general.fluid-drag": "Fluid Drag", + "module.no-slow.general.fluid-drag.description": "Whether or not fluid drag will not slow you down.", + "module.no-slow.general.sneaking": "Sneaking", + "module.no-slow.general.sneaking.description": "Whether or not sneaking will not slow you down.", + "module.no-slow.general.hunger": "Hunger", + "module.no-slow.general.hunger.description": "Whether or not hunger will not slow you down.", + "module.no-slow.general.slowness": "Slowness", + "module.no-slow.general.slowness.description": "Whether or not slowness will not slow you down.", + + "module.fake-player": "Fake Player", + "module.fake-player.description": "Spawns a client-side fake player for testing usages. No need to be active.", + "module.fake-player.general.name": "Name", + "module.fake-player.general.name.description": "The name of the fake player.", + "module.fake-player.general.copy-inv": "Copy Inv", + "module.fake-player.general.copy-inv.description": "Copies your inventory to the fake player.", + "module.fake-player.general.health": "Health", + "module.fake-player.general.health.description": "The fake player's default health.", + + "module.nametags": "Nametags", + "module.nametags.description": "Displays customizable nametags above players, items and other entities.", + "module.nametags.general.entities": "Entities", + "module.nametags.general.entities.description": "Select entities to draw nametags on.", + "module.nametags.general.scale": "Scale", + "module.nametags.general.scale.description": "The scale of the nametag.", + "module.nametags.general.ignore-self": "Ignore Self", + "module.nametags.general.ignore-self.description": "Ignore yourself when in third person or freecam.", + "module.nametags.general.ignore-friends": "Ignore Friends", + "module.nametags.general.ignore-friends.description": "Ignore rendering nametags for friends.", + "module.nametags.general.ignore-bots": "Ignore Bots", + "module.nametags.general.ignore-bots.description": "Only render non-bot nametags.", + "module.nametags.general.culling": "Culling", + "module.nametags.general.culling.description": "Only render a certain number of nametags at a certain distance.", + "module.nametags.general.culling-range": "Culling Range", + "module.nametags.general.culling-range.description": "Only render nametags within this distance of your player.", + "module.nametags.general.culling-count": "Culling Count", + "module.nametags.general.culling-count.description": "Only render this many nametags.", + "module.nametags.players": "Players", + "module.nametags.players.health": "Health", + "module.nametags.players.health.description": "Shows the player's health.", + "module.nametags.players.gamemode": "Gamemode", + "module.nametags.players.gamemode.description": "Shows the player's GameMode.", + "module.nametags.players.distance": "Distance", + "module.nametags.players.distance.description": "Shows the distance between you and the player.", + "module.nametags.players.ping": "Ping", + "module.nametags.players.ping.description": "Shows the player's ping.", + "module.nametags.players.items": "Items", + "module.nametags.players.items.description": "Displays armor and hand items above the name tags.", + "module.nametags.players.item-spacing": "Item Spacing", + "module.nametags.players.item-spacing.description": "The spacing between items.", + "module.nametags.players.ignore-empty-slots": "Ignore Empty Slots", + "module.nametags.players.ignore-empty-slots.description": "Doesn't add spacing where an empty item stack would be.", + "module.nametags.players.durability": "Durability", + "module.nametags.players.durability.description": "Displays item durability as either a total, percentage, or neither.", + "module.nametags.players.display-enchants": "Display Enchants", + "module.nametags.players.display-enchants.description": "Displays item enchantments on the items.", + "module.nametags.players.shown-enchantments": "Shown Enchantments", + "module.nametags.players.shown-enchantments.description": "The enchantments that are shown on nametags.", + "module.nametags.players.enchantment-position": "Enchantment Position", + "module.nametags.players.enchantment-position.description": "Where the enchantments are rendered.", + "module.nametags.players.enchant-name-length": "Enchant Name Length", + "module.nametags.players.enchant-name-length.description": "The length enchantment names are trimmed to.", + "module.nametags.players.enchant-text-scale": "Enchant Text Scale", + "module.nametags.players.enchant-text-scale.description": "The scale of the enchantment text.", + "module.nametags.items": "Items", + "module.nametags.items.show-count": "Show Count", + "module.nametags.items.show-count.description": "Displays the number of items in the stack.", + "module.nametags.render": "Render", + "module.nametags.render.background-color": "Background Color", + "module.nametags.render.background-color.description": "The color of the nametag background.", + "module.nametags.render.name-color": "Name Color", + "module.nametags.render.name-color.description": "The color of the nametag names.", + "module.nametags.render.ping-color": "Ping Color", + "module.nametags.render.ping-color.description": "The color of the nametag ping.", + "module.nametags.render.gamemode-color": "Gamemode Color", + "module.nametags.render.gamemode-color.description": "The color of the nametag gamemode.", + "module.nametags.render.distance-color-mode": "Distance Color Mode", + "module.nametags.render.distance-color-mode.description": "The mode to color the nametag distance with.", + "module.nametags.render.distance-color": "Distance Color", + "module.nametags.render.distance-color.description": "The color of the nametag distance.", + + "module.esp": "Esp", + "module.esp.description": "Renders entities through walls.", + "module.esp.general.mode": "Mode", + "module.esp.general.mode.description": "Rendering mode.", + "module.esp.general.highlight-target": "Highlight Target", + "module.esp.general.highlight-target.description": "highlights the currently targeted entity differently", + "module.esp.general.target-hitbox": "Target Hitbox", + "module.esp.general.target-hitbox.description": "draw the hitbox of the target entity", + "module.esp.general.outline-width": "Outline Width", + "module.esp.general.outline-width.description": "The width of the shader outline.", + "module.esp.general.glow-multiplier": "Glow Multiplier", + "module.esp.general.glow-multiplier.description": "Multiplier for glow effect", + "module.esp.general.ignore-self": "Ignore Self", + "module.esp.general.ignore-self.description": "Ignores yourself drawing the shader.", + "module.esp.general.shape-mode": "Shape Mode", + "module.esp.general.shape-mode.description": "How the shapes are rendered.", + "module.esp.general.fill-opacity": "Fill Opacity", + "module.esp.general.fill-opacity.description": "The opacity of the shape fill.", + "module.esp.general.fade-distance": "Fade Distance", + "module.esp.general.fade-distance.description": "The distance from an entity where the color begins to fade.", + "module.esp.general.entities": "Entities", + "module.esp.general.entities.description": "Select specific entities.", + "module.esp.colors": "Colors", + "module.esp.colors.distance-colors": "Distance Colors", + "module.esp.colors.distance-colors.description": "Changes the color of tracers depending on distance.", + "module.esp.colors.show-friend-colors": "Show Friend Colors", + "module.esp.colors.show-friend-colors.description": "Whether or not to override the distance color of friends with the friend color.", + "module.esp.colors.players-color": "Players Color", + "module.esp.colors.players-color.description": "The other player's color.", + "module.esp.colors.animals-color": "Animals Color", + "module.esp.colors.animals-color.description": "The animal's color.", + "module.esp.colors.water-animals-color": "Water Animals Color", + "module.esp.colors.water-animals-color.description": "The water animal's color.", + "module.esp.colors.monsters-color": "Monsters Color", + "module.esp.colors.monsters-color.description": "The monster's color.", + "module.esp.colors.ambient-color": "Ambient Color", + "module.esp.colors.ambient-color.description": "The ambient's color.", + "module.esp.colors.misc-color": "Misc Color", + "module.esp.colors.misc-color.description": "The misc color.", + "module.esp.colors.target-color": "Target Color", + "module.esp.colors.target-color.description": "The target color.", + "module.esp.colors.target-hitbox-color": "Target Hitbox Color", + "module.esp.colors.target-hitbox-color.description": "The target hitbox color.", + + "module.rotation": "Rotation", + "module.rotation.description": "Changes/locks your yaw and pitch.", + "module.rotation.yaw": "Yaw", + "module.rotation.yaw.yaw-lock-mode": "Yaw Lock Mode", + "module.rotation.yaw.yaw-lock-mode.description": "The way in which your yaw is locked.", + "module.rotation.yaw.yaw-angle": "Yaw Angle", + "module.rotation.yaw.yaw-angle.description": "Yaw angle in degrees.", + "module.rotation.pitch": "Pitch", + "module.rotation.pitch.pitch-lock-mode": "Pitch Lock Mode", + "module.rotation.pitch.pitch-lock-mode.description": "The way in which your pitch is locked.", + "module.rotation.pitch.pitch-angle": "Pitch Angle", + "module.rotation.pitch.pitch-angle.description": "Pitch angle in degrees.", + + "module.elytra-fly": "Elytra Fly", + "module.elytra-fly.description": "Gives you more control over your elytra.", + "module.elytra-fly.general.mode": "Mode", + "module.elytra-fly.general.mode.description": "The mode of flying.", + "module.elytra-fly.general.auto-take-off": "Auto Take Off", + "module.elytra-fly.general.auto-take-off.description": "Automatically takes off when you hold jump without needing to double jump.", + "module.elytra-fly.general.fall-multiplier": "Fall Multiplier", + "module.elytra-fly.general.fall-multiplier.description": "Controls how fast will you go down naturally.", + "module.elytra-fly.general.horizontal-speed": "Horizontal Speed", + "module.elytra-fly.general.horizontal-speed.description": "How fast you go forward and backward.", + "module.elytra-fly.general.vertical-speed": "Vertical Speed", + "module.elytra-fly.general.vertical-speed.description": "How fast you go up and down.", + "module.elytra-fly.general.acceleration": "Acceleration", + "module.elytra-fly.general.acceleration.description": "", + "module.elytra-fly.general.acceleration-step": "Acceleration Step", + "module.elytra-fly.general.acceleration-step.description": "", + "module.elytra-fly.general.acceleration-start": "Acceleration Start", + "module.elytra-fly.general.acceleration-start.description": "", + "module.elytra-fly.general.stop-in-water": "Stop In Water", + "module.elytra-fly.general.stop-in-water.description": "Stops flying in water.", + "module.elytra-fly.general.no-unloaded-chunks": "No Unloaded Chunks", + "module.elytra-fly.general.no-unloaded-chunks.description": "Stops you from going into unloaded chunks.", + "module.elytra-fly.general.auto-hover": "Auto Hover", + "module.elytra-fly.general.auto-hover.description": "Automatically hover .3 blocks off ground when holding shift.", + "module.elytra-fly.general.no-crash": "No Crash", + "module.elytra-fly.general.no-crash.description": "Stops you from going into walls.", + "module.elytra-fly.general.crash-look-ahead": "Crash Look Ahead", + "module.elytra-fly.general.crash-look-ahead.description": "Distance to look ahead when flying.", + "module.elytra-fly.general.insta-drop": "Insta Drop", + "module.elytra-fly.general.insta-drop.description": "Makes you drop out of flight instantly.", + "module.elytra-fly.general.pitch40-lower-bounds": "Pitch40 Lower Bounds", + "module.elytra-fly.general.pitch40-lower-bounds.description": "The bottom height boundary for pitch40. You must be at least 40 blocks above this boundary when starting the module.\nAfter descending below this boundary you will start pitching upwards.", + "module.elytra-fly.general.pitch40-upper-bounds": "Pitch40 Upper Bounds", + "module.elytra-fly.general.pitch40-upper-bounds.description": "The upper height boundary for pitch40. You must be above this boundary when starting the module.\nWhen ascending above this boundary, if you are not already, you will start pitching downwards.", + "module.elytra-fly.general.pitch40-rotate-speed-up": "Pitch40 Rotate Speed Up", + "module.elytra-fly.general.pitch40-rotate-speed-up.description": "The speed for pitch rotation upwards (degrees per tick).", + "module.elytra-fly.general.pitch40-rotate-speed-down": "Pitch40 Rotate Speed Down", + "module.elytra-fly.general.pitch40-rotate-speed-down.description": "The speed for pitch rotation downwards (degrees per tick).", + "module.elytra-fly.general.auto-jump": "Auto Jump", + "module.elytra-fly.general.auto-jump.description": "Automatically jumps for you.", + "module.elytra-fly.general.yaw-lock": "Yaw Lock", + "module.elytra-fly.general.yaw-lock.description": "Whether to enable yaw lock or not", + "module.elytra-fly.general.yaw": "Yaw", + "module.elytra-fly.general.yaw.description": "The yaw angle to look at when using simple rotation lock in bounce mode.", + "module.elytra-fly.general.pitch-lock": "Pitch Lock", + "module.elytra-fly.general.pitch-lock.description": "Whether to lock your pitch angle.", + "module.elytra-fly.general.pitch": "Pitch", + "module.elytra-fly.general.pitch.description": "The pitch angle to look at when using the bounce mode.", + "module.elytra-fly.general.restart": "Restart", + "module.elytra-fly.general.restart.description": "Restarts flying with the elytra when rubberbanding.", + "module.elytra-fly.general.restart-delay": "Restart Delay", + "module.elytra-fly.general.restart-delay.description": "How many ticks to wait before restarting the elytra again after rubberbanding.", + "module.elytra-fly.general.sprint-constantly": "Sprint Constantly", + "module.elytra-fly.general.sprint-constantly.description": "Sprints all the time. If turned off, it will only sprint when the player is touching the ground.", + "module.elytra-fly.general.manual-takeoff": "Manual Takeoff", + "module.elytra-fly.general.manual-takeoff.description": "Does not automatically take off.", + "module.elytra-fly.inventory": "Inventory", + "module.elytra-fly.inventory.elytra-replace": "Elytra Replace", + "module.elytra-fly.inventory.elytra-replace.description": "Replaces broken elytra with a new elytra.", + "module.elytra-fly.inventory.replace-durability": "Replace Durability", + "module.elytra-fly.inventory.replace-durability.description": "The durability threshold your elytra will be replaced at.", + "module.elytra-fly.inventory.chest-swap": "Chest Swap", + "module.elytra-fly.inventory.chest-swap.description": "Enables ChestSwap when toggling this module.", + "module.elytra-fly.inventory.replenish-fireworks": "Replenish Fireworks", + "module.elytra-fly.inventory.replenish-fireworks.description": "Moves fireworks into a selected hotbar slot.", + "module.elytra-fly.inventory.replenish-slot": "Replenish Slot", + "module.elytra-fly.inventory.replenish-slot.description": "The slot auto move moves fireworks to.", + "module.elytra-fly.autopilot": "Autopilot", + "module.elytra-fly.autopilot.auto-pilot": "Auto Pilot", + "module.elytra-fly.autopilot.auto-pilot.description": "Moves forward while elytra flying.", + "module.elytra-fly.autopilot.use-fireworks": "Use Fireworks", + "module.elytra-fly.autopilot.use-fireworks.description": "Uses firework rockets every second of your choice.", + "module.elytra-fly.autopilot.firework-delay": "Firework Delay", + "module.elytra-fly.autopilot.firework-delay.description": "The delay in seconds in between using fireworks if \"Use Fireworks\" is enabled.", + "module.elytra-fly.autopilot.minimum-height": "Minimum Height", + "module.elytra-fly.autopilot.minimum-height.description": "The minimum height for autopilot.", + + "module.auto-respawn": "Auto Respawn", + "module.auto-respawn.description": "Automatically respawns after death.", + + "module.entity-control": "Entity Control", + "module.entity-control.description": "Lets you control rideable entities without a saddle.", + "module.entity-control.control": "Control", + "module.entity-control.control.entities": "Entities", + "module.entity-control.control.entities.description": "Target entities.", + "module.entity-control.control.spoof-saddle*": "Spoof Saddle*", + "module.entity-control.control.spoof-saddle*.description": "Lets you control rideable entities without them being saddled. Only works on older server versions.", + "module.entity-control.control.max-jump": "Max Jump", + "module.entity-control.control.max-jump.description": "Sets jump power to maximum.", + "module.entity-control.control.lock-yaw": "Lock Yaw", + "module.entity-control.control.lock-yaw.description": "Locks the Entity's yaw.", + "module.entity-control.control.cancel-server-packets": "Cancel Server Packets", + "module.entity-control.control.cancel-server-packets.description": "Cancels incoming vehicle move packets. WILL desync you from the server if you make an invalid movement.", + "module.entity-control.speed": "Speed", + "module.entity-control.speed.speed": "Speed", + "module.entity-control.speed.speed.description": "Makes you go faster horizontally when riding entities.", + "module.entity-control.speed.horizontal-speed": "Horizontal Speed", + "module.entity-control.speed.horizontal-speed.description": "Horizontal speed in blocks per second.", + "module.entity-control.speed.only-on-ground": "Only On Ground", + "module.entity-control.speed.only-on-ground.description": "Use speed only when standing on a block.", + "module.entity-control.speed.in-water": "In Water", + "module.entity-control.speed.in-water.description": "Use speed when in water.", + "module.entity-control.flight": "Flight", + "module.entity-control.flight.fly": "Fly", + "module.entity-control.flight.fly.description": "Allows you to fly with entities.", + "module.entity-control.flight.vertical-speed": "Vertical Speed", + "module.entity-control.flight.vertical-speed.description": "Vertical speed in blocks per second.", + "module.entity-control.flight.fall-speed": "Fall Speed", + "module.entity-control.flight.fall-speed.description": "How fast you will fall in blocks per second. Set to a small value to prevent fly kicks.", + "module.entity-control.flight.anti-fly-kick": "Anti Fly Kick", + "module.entity-control.flight.anti-fly-kick.description": "Whether to prevent the server from kicking you for flying.", + "module.entity-control.flight.delay": "Delay", + "module.entity-control.flight.delay.description": "The amount of delay, in ticks, between flying down a bit and return to original position", + + "module.stash-finder": "Stash Finder", + "module.stash-finder.description": "Searches loaded chunks for storage blocks. Saves to /meteor-client", + "module.stash-finder.general.storage-blocks": "Storage Blocks", + "module.stash-finder.general.storage-blocks.description": "Select the storage blocks to search for.", + "module.stash-finder.general.minimum-storage-count": "Minimum Storage Count", + "module.stash-finder.general.minimum-storage-count.description": "The minimum amount of storage blocks in a chunk to record the chunk.", + "module.stash-finder.general.blacklisted-support-blocks": "Blacklisted Support Blocks", + "module.stash-finder.general.blacklisted-support-blocks.description": "Blocks that prevent counting a storage block entity when it sits on them.", + "module.stash-finder.general.minimum-distance": "Minimum Distance", + "module.stash-finder.general.minimum-distance.description": "The minimum distance you must be from spawn to record a certain chunk.", + "module.stash-finder.general.notifications": "Notifications", + "module.stash-finder.general.notifications.description": "Sends Minecraft notifications when new stashes are found.", + "module.stash-finder.general.notification-mode": "Notification Mode", + "module.stash-finder.general.notification-mode.description": "The mode to use for notifications.", + "module.stash-finder.render": "Render", + "module.stash-finder.render.render-tracer": "Render Tracer", + "module.stash-finder.render.render-tracer.description": "Renders a tracer to the last found stash.", + "module.stash-finder.render.tracer-color": "Tracer Color", + "module.stash-finder.render.tracer-color.description": "Color of the stash tracer.", + "module.stash-finder.render.tracer-hide-at-distance": "Tracer Hide At Distance", + "module.stash-finder.render.tracer-hide-at-distance.description": "Hide the trace when you are this close to the stash.", + "module.stash-finder.render.tracer-max-distance": "Tracer Max Distance", + "module.stash-finder.render.tracer-max-distance.description": "Hide the trace when you are farther than this distance from the stash.", + "module.stash-finder.render.render-chunk-column": "Render Chunk Column", + "module.stash-finder.render.render-chunk-column.description": "Renders a vertical column at the center of traced chunks.", + "module.stash-finder.render.chunk-column-color": "Chunk Column Color", + "module.stash-finder.render.chunk-column-color.description": "Color of the stash tracer column.", + "module.stash-finder.render.clear-traces-bind": "Clear Traces Bind", + "module.stash-finder.render.clear-traces-bind.description": "Keybind to clear all stash traces.", + + "module.better-beacons": "Better Beacons", + "module.better-beacons.description": "Select effects unaffected by beacon level.", + + "module.auto-nametag": "Auto Nametag", + "module.auto-nametag.description": "Automatically uses nametags on entities without a nametag. WILL nametag ALL entities in the specified distance.", + "module.auto-nametag.general.entities": "Entities", + "module.auto-nametag.general.entities.description": "Which entities to nametag.", + "module.auto-nametag.general.range": "Range", + "module.auto-nametag.general.range.description": "The maximum range an entity can be to be nametagged.", + "module.auto-nametag.general.priority": "Priority", + "module.auto-nametag.general.priority.description": "Priority sort", + "module.auto-nametag.general.renametag": "Renametag", + "module.auto-nametag.general.renametag.description": "Allows already nametagged entities to be renamed.", + "module.auto-nametag.general.rotate": "Rotate", + "module.auto-nametag.general.rotate.description": "Automatically faces towards the mob being nametagged.", + + "module.elytra-boost": "Elytra Boost", + "module.elytra-boost.description": "Boosts your elytra as if you used a firework.", + "module.elytra-boost.general.anti-consume": "Anti Consume", + "module.elytra-boost.general.anti-consume.description": "Prevents fireworks from being consumed when using Elytra Boost.", + "module.elytra-boost.general.firework-duration": "Firework Duration", + "module.elytra-boost.general.firework-duration.description": "The duration of the firework.", + "module.elytra-boost.general.play-sound": "Play Sound", + "module.elytra-boost.general.play-sound.description": "Plays the firework sound when a boost is triggered.", + "module.elytra-boost.general.keybind": "Keybind", + "module.elytra-boost.general.keybind.description": "The keybind to boost.", + + "module.blink": "Blink", + "module.blink.description": "Allows you to essentially teleport while suspending motion updates.", + "module.blink.general.render-original": "Render Original", + "module.blink.general.render-original.description": "Renders your player model at the original position.", + "module.blink.general.pulse-delay": "Pulse Delay", + "module.blink.general.pulse-delay.description": "After the duration in ticks has elapsed, send all packets and start blinking again. 0 to disable.", + "module.blink.general.cancel-blink": "Cancel Blink", + "module.blink.general.cancel-blink.description": "Cancels sending packets and sends you back to your original position.", + + "module.block-selection": "Block Selection", + "module.block-selection.description": "Modifies how your block selection is rendered.", + "module.block-selection.general.advanced": "Advanced", + "module.block-selection.general.advanced.description": "Shows a more advanced outline on different types of shape blocks.", + "module.block-selection.general.single-side": "Single Side", + "module.block-selection.general.single-side.description": "Only renders the side you are looking at.", + "module.block-selection.general.shape-mode": "Shape Mode", + "module.block-selection.general.shape-mode.description": "How the shapes are rendered.", + "module.block-selection.general.side-color": "Side Color", + "module.block-selection.general.side-color.description": "The side color.", + "module.block-selection.general.line-color": "Line Color", + "module.block-selection.general.line-color.description": "The line color.", + "module.block-selection.general.hide-when-inside-block": "Hide When Inside Block", + "module.block-selection.general.hide-when-inside-block.description": "Hide selection when inside target block.", + + "module.auto-city": "Auto City", + "module.auto-city.description": "Automatically mine blocks next to someone's feet.", + "module.auto-city.general.target-range": "Target Range", + "module.auto-city.general.target-range.description": "The radius in which players get targeted.", + "module.auto-city.general.break-range": "Break Range", + "module.auto-city.general.break-range.description": "How close a block must be to you to be considered.", + "module.auto-city.general.switch-mode": "Switch Mode", + "module.auto-city.general.switch-mode.description": "How to switch to a pickaxe.", + "module.auto-city.general.support": "Support", + "module.auto-city.general.support.description": "If there is no block below a city block it will place one before mining.", + "module.auto-city.general.place-range": "Place Range", + "module.auto-city.general.place-range.description": "How far away to try and place a block.", + "module.auto-city.general.rotate": "Rotate", + "module.auto-city.general.rotate.description": "Automatically rotates you towards the city block.", + "module.auto-city.general.chat-info": "Chat Info", + "module.auto-city.general.chat-info.description": "Whether the module should send messages in chat.", + "module.auto-city.render": "Render", + "module.auto-city.render.swing-hand": "Swing Hand", + "module.auto-city.render.swing-hand.description": "Whether to render your hand swinging.", + "module.auto-city.render.render-block": "Render Block", + "module.auto-city.render.render-block.description": "Whether to render the block being broken.", + "module.auto-city.render.shape-mode": "Shape Mode", + "module.auto-city.render.shape-mode.description": "How the shapes are rendered.", + "module.auto-city.render.side-color": "Side Color", + "module.auto-city.render.side-color.description": "The side color of the rendering.", + "module.auto-city.render.line-color": "Line Color", + "module.auto-city.render.line-color.description": "The line color of the rendering.", + + "module.waypoints": "Waypoints", + "module.waypoints.description": "Allows you to create waypoints.", + "module.waypoints.general.text-render-distance": "Text Render Distance", + "module.waypoints.general.text-render-distance.description": "Maximum distance from the center of the screen at which text will be rendered.", + "module.waypoints.general.waypoint-fade-distance": "Waypoint Fade Distance", + "module.waypoints.general.waypoint-fade-distance.description": "The distance to a waypoint at which it begins to start fading.", + "module.waypoints.death-position": "Death Position", + "module.waypoints.death-position.max-death-positions": "Max Death Positions", + "module.waypoints.death-position.max-death-positions.description": "The amount of death positions to save, 0 to disable", + "module.waypoints.death-position.chat": "Chat", + "module.waypoints.death-position.chat.description": "Send a chat message with your position once you die", + + "module.auto-web": "Auto Web", + "module.auto-web.description": "Automatically places webs on other players.", + "module.auto-web.general.place-range": "Place Range", + "module.auto-web.general.place-range.description": "The range at which webs can be placed.", + "module.auto-web.general.walls-range": "Walls Range", + "module.auto-web.general.walls-range.description": "Range in which to place webs when behind blocks.", + "module.auto-web.general.target-priority": "Target Priority", + "module.auto-web.general.target-priority.description": "How to filter targets within range.", + "module.auto-web.general.target-range": "Target Range", + "module.auto-web.general.target-range.description": "The maximum distance to target players.", + "module.auto-web.general.predict-movement": "Predict Movement", + "module.auto-web.general.predict-movement.description": "Predict target movement to account for ping.", + "module.auto-web.general.ticks-to-predict": "Ticks To Predict", + "module.auto-web.general.ticks-to-predict.description": "How many ticks ahead we should predict for.", + "module.auto-web.general.doubles": "Doubles", + "module.auto-web.general.doubles.description": "Places webs in the target's upper hitbox as well as the lower hitbox.", + "module.auto-web.general.rotate": "Rotate", + "module.auto-web.general.rotate.description": "Rotates towards the webs when placing.", + "module.auto-web.render": "Render", + "module.auto-web.render.render": "Render", + "module.auto-web.render.render.description": "Renders an overlay where webs are placed.", + "module.auto-web.render.shape-mode": "Shape Mode", + "module.auto-web.render.shape-mode.description": "How the shapes are rendered.", + "module.auto-web.render.side-color": "Side Color", + "module.auto-web.render.side-color.description": "The side color of the placed web rendering.", + "module.auto-web.render.line-color": "Line Color", + "module.auto-web.render.line-color.description": "The line color of the placed web rendering.", + + "module.auto-eat": "Auto Eat", + "module.auto-eat.description": "Automatically eats food.", + "module.auto-eat.general.blacklist": "Blacklist", + "module.auto-eat.general.blacklist.description": "Which items to not eat.", + "module.auto-eat.general.pause-auras": "Pause Auras", + "module.auto-eat.general.pause-auras.description": "Pauses all auras when eating.", + "module.auto-eat.general.pause-baritone": "Pause Baritone", + "module.auto-eat.general.pause-baritone.description": "Pause baritone when eating.", + "module.auto-eat.threshold": "Threshold", + "module.auto-eat.threshold.threshold-mode": "Threshold Mode", + "module.auto-eat.threshold.threshold-mode.description": "The threshold mode to trigger auto eat.", + "module.auto-eat.threshold.health-threshold": "Health Threshold", + "module.auto-eat.threshold.health-threshold.description": "The level of health you eat at.", + "module.auto-eat.threshold.hunger-threshold": "Hunger Threshold", + "module.auto-eat.threshold.hunger-threshold.description": "The level of hunger you eat at.", + + "module.hitboxes": "Hitboxes", + "module.hitboxes.description": "Expands an entity's hitboxes.", + "module.hitboxes.general.entities": "Entities", + "module.hitboxes.general.entities.description": "Which entities to target.", + "module.hitboxes.general.expand": "Expand", + "module.hitboxes.general.expand.description": "How much to expand the hitbox of the entity.", + "module.hitboxes.general.ignore-friends": "Ignore Friends", + "module.hitboxes.general.ignore-friends.description": "Doesn't expand the hitboxes of friends.", + "module.hitboxes.weapon-options": "Weapon Options", + "module.hitboxes.weapon-options.only-on-weapon": "Only On Weapon", + "module.hitboxes.weapon-options.only-on-weapon.description": "Only modifies hitbox when holding a weapon in hand.", + "module.hitboxes.weapon-options.sword": "Sword", + "module.hitboxes.weapon-options.sword.description": "Enable when holding a sword.", + "module.hitboxes.weapon-options.axe": "Axe", + "module.hitboxes.weapon-options.axe.description": "Enable when holding an axe.", + "module.hitboxes.weapon-options.pickaxe": "Pickaxe", + "module.hitboxes.weapon-options.pickaxe.description": "Enable when holding a pickaxe.", + "module.hitboxes.weapon-options.shovel": "Shovel", + "module.hitboxes.weapon-options.shovel.description": "Enable when holding a shovel.", + "module.hitboxes.weapon-options.hoe": "Hoe", + "module.hitboxes.weapon-options.hoe.description": "Enable when holding a hoe.", + "module.hitboxes.weapon-options.mace": "Mace", + "module.hitboxes.weapon-options.mace.description": "Enable when holding a mace.", + "module.hitboxes.weapon-options.spear": "Spear", + "module.hitboxes.weapon-options.spear.description": "Enable when holding a spear.", + "module.hitboxes.weapon-options.trident": "Trident", + "module.hitboxes.weapon-options.trident.description": "Enable when holding a trident.", + + "module.trail": "Trail", + "module.trail.description": "Renders a customizable trail behind your player.", + "module.trail.general.particles": "Particles", + "module.trail.general.particles.description": "Particles to draw.", + "module.trail.general.pause-when-stationary": "Pause When Stationary", + "module.trail.general.pause-when-stationary.description": "Whether or not to add particles when you are not moving.", + + "module.self-web": "Self Web", + "module.self-web.description": "Automatically places webs on you.", + "module.self-web.general.mode": "Mode", + "module.self-web.general.mode.description": "The mode to use for selfweb.", + "module.self-web.general.range": "Range", + "module.self-web.general.range.description": "How far away the player has to be from you to place webs. Requires Mode to Smart.", + "module.self-web.general.double-place": "Double Place", + "module.self-web.general.double-place.description": "Places webs in your upper hitbox as well.", + "module.self-web.general.auto-toggle": "Auto Toggle", + "module.self-web.general.auto-toggle.description": "Toggles off after placing the webs.", + "module.self-web.general.rotate": "Rotate", + "module.self-web.general.rotate.description": "Forces you to rotate downwards when placing webs.", + + "module.flight": "Flight", + "module.flight.description": "FLYYYY! No Fall is recommended with this module.", + "module.flight.general.mode": "Mode", + "module.flight.general.mode.description": "The mode for Flight.", + "module.flight.general.speed": "Speed", + "module.flight.general.speed.description": "Your speed when flying.", + "module.flight.general.vertical-speed-match": "Vertical Speed Match", + "module.flight.general.vertical-speed-match.description": "Matches your vertical speed to your horizontal speed, otherwise uses vanilla ratio.", + "module.flight.general.no-sneak": "No Sneak", + "module.flight.general.no-sneak.description": "Prevents you from sneaking while flying.", + "module.flight.anti-kick": "Anti Kick", + "module.flight.anti-kick.mode": "Mode", + "module.flight.anti-kick.mode.description": "The mode for anti kick.", + "module.flight.anti-kick.delay": "Delay", + "module.flight.anti-kick.delay.description": "The amount of delay, in ticks, between flying down a bit and return to original position", + "module.flight.anti-kick.off-time": "Off Time", + "module.flight.anti-kick.off-time.description": "The amount of delay, in ticks, to fly down a bit to reset floating ticks.", + + "module.reverse-step": "Reverse Step", + "module.reverse-step.description": "Allows you to fall down blocks at a greater speed.", + "module.reverse-step.general.fall-speed": "Fall Speed", + "module.reverse-step.general.fall-speed.description": "How fast to fall in blocks per second.", + "module.reverse-step.general.fall-distance": "Fall Distance", + "module.reverse-step.general.fall-distance.description": "The maximum fall distance this setting will activate at.", + "module.reverse-step.general.vehicles": "Vehicles", + "module.reverse-step.general.vehicles.description": "Whether or not reverse step should affect vehicles.", + + "module.blur": "Blur", + "module.blur.description": "Blurs background when in GUI screens.", + "module.blur.general.strength": "Strength", + "module.blur.general.strength.description": "How strong the blur should be.", + "module.blur.general.fade-time": "Fade Time", + "module.blur.general.fade-time.description": "How long the fade will last in milliseconds.", + "module.blur.screens": "Screens", + "module.blur.screens.meteor": "Meteor", + "module.blur.screens.meteor.description": "Applies blur to Meteor screens.", + "module.blur.screens.inventories": "Inventories", + "module.blur.screens.inventories.description": "Applies blur to inventory screens.", + "module.blur.screens.chat": "Chat", + "module.blur.screens.chat.description": "Applies blur when in chat.", + "module.blur.screens.other": "Other", + "module.blur.screens.other.description": "Applies blur to all other screen types.", + + "module.discord-presence": "Discord Presence", + "module.discord-presence.description": "Displays Meteor as your presence on Discord.", + "module.discord-presence.line-1": "Line 1", + "module.discord-presence.line-1.line-1-messages": "Line 1 Messages", + "module.discord-presence.line-1.line-1-messages.description": "Messages used for the first line.", + "module.discord-presence.line-1.line-1-update-delay": "Line 1 Update Delay", + "module.discord-presence.line-1.line-1-update-delay.description": "How fast to update the first line in ticks.", + "module.discord-presence.line-1.line-1-select-mode": "Line 1 Select Mode", + "module.discord-presence.line-1.line-1-select-mode.description": "How to select messages for the first line.", + "module.discord-presence.line-2": "Line 2", + "module.discord-presence.line-2.line-2-messages": "Line 2 Messages", + "module.discord-presence.line-2.line-2-messages.description": "Messages used for the second line.", + "module.discord-presence.line-2.line-2-update-delay": "Line 2 Update Delay", + "module.discord-presence.line-2.line-2-update-delay.description": "How fast to update the second line in ticks.", + "module.discord-presence.line-2.line-2-select-mode": "Line 2 Select Mode", + "module.discord-presence.line-2.line-2-select-mode.description": "How to select messages for the second line.", + + "module.void-esp": "Void Esp", + "module.void-esp.description": "Renders holes in bedrock layers that lead to the void.", + "module.void-esp.general.air-only": "Air Only", + "module.void-esp.general.air-only.description": "Checks bedrock only for air blocks.", + "module.void-esp.general.horizontal-radius": "Horizontal Radius", + "module.void-esp.general.horizontal-radius.description": "Horizontal radius in which to search for holes.", + "module.void-esp.general.hole-height": "Hole Height", + "module.void-esp.general.hole-height.description": "The minimum hole height to be rendered.", + "module.void-esp.general.nether-roof": "Nether Roof", + "module.void-esp.general.nether-roof.description": "Check for holes in nether roof.", + "module.void-esp.render": "Render", + "module.void-esp.render.shape-mode": "Shape Mode", + "module.void-esp.render.shape-mode.description": "How the shapes are rendered.", + "module.void-esp.render.fill-color": "Fill Color", + "module.void-esp.render.fill-color.description": "The color that fills holes in the void.", + "module.void-esp.render.line-color": "Line Color", + "module.void-esp.render.line-color.description": "The color to draw lines of holes to the void.", + + "module.reach": "Reach", + "module.reach.description": "Gives you super long arms.", + "module.reach.general.extra-block-reach": "Extra Block Reach", + "module.reach.general.extra-block-reach.description": "The distance to add to your block reach.", + "module.reach.general.extra-entity-reach": "Extra Entity Reach", + "module.reach.general.extra-entity-reach.description": "The distance to add to your entity reach.", + + "module.speed-mine": "Speed Mine", + "module.speed-mine.description": "Allows you to quickly mine blocks.", + "module.speed-mine.general.mode": "Mode", + "module.speed-mine.general.mode.description": "", + "module.speed-mine.general.blocks": "Blocks", + "module.speed-mine.general.blocks.description": "Selected blocks.", + "module.speed-mine.general.blocks-filter": "Blocks Filter", + "module.speed-mine.general.blocks-filter.description": "How to use the blocks setting.", + "module.speed-mine.general.modifier": "Modifier", + "module.speed-mine.general.modifier.description": "Mining speed modifier. An additional value of 0.2 is equivalent to one haste level (1.2 = haste 1).", + "module.speed-mine.general.haste-amplifier": "Haste Amplifier", + "module.speed-mine.general.haste-amplifier.description": "What value of haste to give you. Above 2 not recommended.", + "module.speed-mine.general.instamine": "Instamine", + "module.speed-mine.general.instamine.description": "Whether or not to instantly mine blocks under certain conditions.", + "module.speed-mine.general.grim-bypass": "Grim Bypass", + "module.speed-mine.general.grim-bypass.description": "Bypasses Grim's fastbreak check, working as of 2.3.58", + + "module.inventory-tweaks": "Inventory Tweaks", + "module.inventory-tweaks.description": "Various inventory related utilities.", + "module.inventory-tweaks.general.mouse-drag-item-move": "Mouse Drag Item Move", + "module.inventory-tweaks.general.mouse-drag-item-move.description": "Moving mouse over items while holding shift will transfer it to the other container.", + "module.inventory-tweaks.general.xcarry": "Xcarry", + "module.inventory-tweaks.general.xcarry.description": "Allows you to store four extra item stacks in your crafting grid.", + "module.inventory-tweaks.general.uncap-bundle-scrolling": "Uncap Bundle Scrolling", + "module.inventory-tweaks.general.uncap-bundle-scrolling.description": "Whether to uncap the bundle scrolling feature to let you select any item.", + "module.inventory-tweaks.sorting": "Sorting", + "module.inventory-tweaks.sorting.sorting-enabled": "Sorting Enabled", + "module.inventory-tweaks.sorting.sorting-enabled.description": "Automatically sorts stacks in inventory.", + "module.inventory-tweaks.sorting.sorting-key": "Sorting Key", + "module.inventory-tweaks.sorting.sorting-key.description": "Key to trigger the sort.", + "module.inventory-tweaks.sorting.sorting-delay": "Sorting Delay", + "module.inventory-tweaks.sorting.sorting-delay.description": "Delay in ticks between moving items when sorting.", + "module.inventory-tweaks.sorting.disable-in-creative": "Disable In Creative", + "module.inventory-tweaks.sorting.disable-in-creative.description": "Disables the inventory sorter when in creative mode.", + "module.inventory-tweaks.anti-drop": "Anti Drop", + "module.inventory-tweaks.anti-drop.anti-drop-items": "Anti Drop Items", + "module.inventory-tweaks.anti-drop.anti-drop-items.description": "Items to prevent dropping. Doesn't work in creative inventory screen.", + "module.inventory-tweaks.anti-drop.item-frames": "Item Frames", + "module.inventory-tweaks.anti-drop.item-frames.description": "Prevent anti-drop items from being placed in item frames or pots", + "module.inventory-tweaks.anti-drop.override-bind": "Override Bind", + "module.inventory-tweaks.anti-drop.override-bind.description": "Hold this bind to temporarily bypass anti-drop", + "module.inventory-tweaks.auto-drop": "Auto Drop", + "module.inventory-tweaks.auto-drop.auto-drop-items": "Auto Drop Items", + "module.inventory-tweaks.auto-drop.auto-drop-items.description": "Items to drop.", + "module.inventory-tweaks.auto-drop.exclude-equipped": "Exclude Equipped", + "module.inventory-tweaks.auto-drop.exclude-equipped.description": "Whether or not to drop items equipped in armor slots.", + "module.inventory-tweaks.auto-drop.exclude-hotbar": "Exclude Hotbar", + "module.inventory-tweaks.auto-drop.exclude-hotbar.description": "Whether or not to drop items from your hotbar.", + "module.inventory-tweaks.auto-drop.only-full-stacks": "Only Full Stacks", + "module.inventory-tweaks.auto-drop.only-full-stacks.description": "Only drops the items if the stack is full.", + "module.inventory-tweaks.steal-and-dump": "Steal and Dump", + "module.inventory-tweaks.steal-and-dump.steal-screens": "Steal Screens", + "module.inventory-tweaks.steal-and-dump.steal-screens.description": "Select the screens to display buttons and auto steal.", + "module.inventory-tweaks.steal-and-dump.inventory-buttons": "Inventory Buttons", + "module.inventory-tweaks.steal-and-dump.inventory-buttons.description": "Shows steal and dump buttons in container guis.", + "module.inventory-tweaks.steal-and-dump.steal-drop": "Steal Drop", + "module.inventory-tweaks.steal-and-dump.steal-drop.description": "Drop items to the ground instead of stealing them.", + "module.inventory-tweaks.steal-and-dump.drop-backwards": "Drop Backwards", + "module.inventory-tweaks.steal-and-dump.drop-backwards.description": "Drop items behind you.", + "module.inventory-tweaks.steal-and-dump.dump-filter": "Dump Filter", + "module.inventory-tweaks.steal-and-dump.dump-filter.description": "Dump mode.", + "module.inventory-tweaks.steal-and-dump.dump-items": "Dump Items", + "module.inventory-tweaks.steal-and-dump.dump-items.description": "Items to dump.", + "module.inventory-tweaks.steal-and-dump.steal-filter": "Steal Filter", + "module.inventory-tweaks.steal-and-dump.steal-filter.description": "Steal mode.", + "module.inventory-tweaks.steal-and-dump.steal-items": "Steal Items", + "module.inventory-tweaks.steal-and-dump.steal-items.description": "Items to steal.", + "module.inventory-tweaks.auto-steal": "Auto Steal", + "module.inventory-tweaks.auto-steal.auto-steal": "Auto Steal", + "module.inventory-tweaks.auto-steal.auto-steal.description": "Automatically removes all possible items when you open a container.", + "module.inventory-tweaks.auto-steal.auto-dump": "Auto Dump", + "module.inventory-tweaks.auto-steal.auto-dump.description": "Automatically dumps all possible items when you open a container.", + "module.inventory-tweaks.auto-steal.delay": "Delay", + "module.inventory-tweaks.auto-steal.delay.description": "The minimum delay between stealing the next stack in milliseconds.", + "module.inventory-tweaks.auto-steal.initial-delay": "Initial Delay", + "module.inventory-tweaks.auto-steal.initial-delay.description": "The initial delay before stealing in milliseconds. 0 to use normal delay instead.", + "module.inventory-tweaks.auto-steal.random": "Random", + "module.inventory-tweaks.auto-steal.random.description": "Randomly adds a delay of up to the specified time in milliseconds.", + + "module.no-fall": "No Fall", + "module.no-fall.description": "Attempts to prevent you from taking fall damage.", + "module.no-fall.general.mode": "Mode", + "module.no-fall.general.mode.description": "The way you are saved from fall damage.", + "module.no-fall.general.placed-item": "Placed Item", + "module.no-fall.general.placed-item.description": "Which block to place.", + "module.no-fall.general.air-place-mode": "Air Place Mode", + "module.no-fall.general.air-place-mode.description": "Whether place mode places before you die or before you take damage.", + "module.no-fall.general.anchor": "Anchor", + "module.no-fall.general.anchor.description": "Centers the player and reduces movement when using bucket or air place mode.", + "module.no-fall.general.anti-bounce": "Anti Bounce", + "module.no-fall.general.anti-bounce.description": "Disables bouncing on slime-block and bed upon landing.", + "module.no-fall.general.pause-on-mace": "Pause On Mace", + "module.no-fall.general.pause-on-mace.description": "Pauses NoFall when using a mace.", + + "module.no-interact": "No Interact", + "module.no-interact.description": "Blocks interactions with certain types of inputs.", + "module.no-interact.blocks": "Blocks", + "module.no-interact.blocks.block-mine": "Block Mine", + "module.no-interact.blocks.block-mine.description": "Cancels block mining.", + "module.no-interact.blocks.block-mine-mode": "Block Mine Mode", + "module.no-interact.blocks.block-mine-mode.description": "List mode to use for block mine.", + "module.no-interact.blocks.block-interact": "Block Interact", + "module.no-interact.blocks.block-interact.description": "Cancels block interaction.", + "module.no-interact.blocks.block-interact-mode": "Block Interact Mode", + "module.no-interact.blocks.block-interact-mode.description": "List mode to use for block interact.", + "module.no-interact.blocks.block-interact-hand": "Block Interact Hand", + "module.no-interact.blocks.block-interact-hand.description": "Cancels block interaction if performed by this hand.", + "module.no-interact.entities": "Entities", + "module.no-interact.entities.entity-hit": "Entity Hit", + "module.no-interact.entities.entity-hit.description": "Cancel entity hitting.", + "module.no-interact.entities.entity-hit-mode": "Entity Hit Mode", + "module.no-interact.entities.entity-hit-mode.description": "List mode to use for entity hit.", + "module.no-interact.entities.entity-interact": "Entity Interact", + "module.no-interact.entities.entity-interact.description": "Cancel entity interaction.", + "module.no-interact.entities.entity-interact-mode": "Entity Interact Mode", + "module.no-interact.entities.entity-interact-mode.description": "List mode to use for entity interact.", + "module.no-interact.entities.entity-interact-hand": "Entity Interact Hand", + "module.no-interact.entities.entity-interact-hand.description": "Cancels entity interaction if performed by this hand.", + "module.no-interact.entities.friends": "Friends", + "module.no-interact.entities.friends.description": "Friends cancel mode.", + "module.no-interact.entities.babies": "Babies", + "module.no-interact.entities.babies.description": "Baby entity cancel mode.", + "module.no-interact.entities.nametagged": "Nametagged", + "module.no-interact.entities.nametagged.description": "Nametagged entity cancel mode.", + + "module.portals": "Portals", + "module.portals.description": "Allows you to use GUIs normally while in a Nether Portal.", + + "module.marker": "Marker", + "module.marker.description": "Renders shapes. Useful for large scale projects", + + "module.criticals": "Criticals", + "module.criticals.description": "Performs critical attacks when you hit your target.", + "module.criticals.general.mode": "Mode", + "module.criticals.general.mode.description": "The mode on how Criticals will function.", + "module.criticals.general.only-killaura": "Only Killaura", + "module.criticals.general.only-killaura.description": "Only performs crits when using killaura.", + "module.criticals.mace": "Mace", + "module.criticals.mace.smash-attack": "Smash Attack", + "module.criticals.mace.smash-attack.description": "Will always perform smash attacks when using a mace.", + "module.criticals.mace.additional-height": "Additional Height", + "module.criticals.mace.additional-height.description": "The amount of additional height to spoof. More height means more damage.", + + "module.tunnel-esp": "Tunnel Esp", + "module.tunnel-esp.description": "Highlights tunnels.", + "module.tunnel-esp.general.height": "Height", + "module.tunnel-esp.general.height.description": "Height of the rendered box.", + "module.tunnel-esp.general.connected": "Connected", + "module.tunnel-esp.general.connected.description": "If neighbouring holes should be connected.", + "module.tunnel-esp.general.shape-mode": "Shape Mode", + "module.tunnel-esp.general.shape-mode.description": "How the shapes are rendered.", + "module.tunnel-esp.general.side-color": "Side Color", + "module.tunnel-esp.general.side-color.description": "The side color.", + "module.tunnel-esp.general.line-color": "Line Color", + "module.tunnel-esp.general.line-color.description": "The line color.", + + "module.auto-smelter": "Auto Smelter", + "module.auto-smelter.description": "Automatically smelts items from your inventory", + "module.auto-smelter.general.fuel-items": "Fuel Items", + "module.auto-smelter.general.fuel-items.description": "Items to use as fuel", + "module.auto-smelter.general.smeltable-items": "Smeltable Items", + "module.auto-smelter.general.smeltable-items.description": "Items to smelt", + "module.auto-smelter.general.disable-when-out-of-items": "Disable When Out Of Items", + "module.auto-smelter.general.disable-when-out-of-items.description": "Disable the module when you run out of items", + + "module.anchor-aura": "Anchor Aura", + "module.anchor-aura.description": "Automatically places and breaks Respawn Anchors to harm entities.", + "module.anchor-aura.general.target-range": "Target Range", + "module.anchor-aura.general.target-range.description": "Range in which to target players.", + "module.anchor-aura.general.target-priority": "Target Priority", + "module.anchor-aura.general.target-priority.description": "How to select the player to target.", + "module.anchor-aura.general.min-damage": "Min Damage", + "module.anchor-aura.general.min-damage.description": "The minimum damage to inflict on your target.", + "module.anchor-aura.general.max-self-damage": "Max Self Damage", + "module.anchor-aura.general.max-self-damage.description": "The maximum damage to inflict on yourself.", + "module.anchor-aura.general.anti-suicide": "Anti Suicide", + "module.anchor-aura.general.anti-suicide.description": "Will not place and break anchors if they will kill you.", + "module.anchor-aura.general.swap-back": "Swap Back", + "module.anchor-aura.general.swap-back.description": "Switches to your previous slot after using anchors.", + "module.anchor-aura.general.rotate": "Rotate", + "module.anchor-aura.general.rotate.description": "Rotates server-side towards the anchors being placed/broken.", + "module.anchor-aura.place": "Place", + "module.anchor-aura.place.place": "Place", + "module.anchor-aura.place.place.description": "Allows Anchor Aura to place anchors.", + "module.anchor-aura.place.place-delay": "Place Delay", + "module.anchor-aura.place.place-delay.description": "The tick delay between placing anchors.", + "module.anchor-aura.place.place-range": "Place Range", + "module.anchor-aura.place.place-range.description": "The range at which anchors can be placed.", + "module.anchor-aura.place.walls-range": "Walls Range", + "module.anchor-aura.place.walls-range.description": "Range in which to place anchors when behind blocks.", + "module.anchor-aura.place.air-place": "Air Place", + "module.anchor-aura.place.air-place.description": "Allows Anchor Aura to place anchors in the air.", + "module.anchor-aura.break": "Break", + "module.anchor-aura.break.charge-delay": "Charge Delay", + "module.anchor-aura.break.charge-delay.description": "The tick delay it takes to charge anchors.", + "module.anchor-aura.break.break-delay": "Break Delay", + "module.anchor-aura.break.break-delay.description": "The tick delay it takes to break anchors.", + "module.anchor-aura.break.break-range": "Break Range", + "module.anchor-aura.break.break-range.description": "Range in which to break anchors.", + "module.anchor-aura.break.walls-range": "Walls Range", + "module.anchor-aura.break.walls-range.description": "Range in which to break anchors when behind blocks.", + "module.anchor-aura.pause": "Pause", + "module.anchor-aura.pause.pause-on-use": "Pause On Use", + "module.anchor-aura.pause.pause-on-use.description": "Pauses while using an item.", + "module.anchor-aura.pause.pause-on-mine": "Pause On Mine", + "module.anchor-aura.pause.pause-on-mine.description": "Pauses while mining blocks.", + "module.anchor-aura.pause.pause-on-CA": "Pause On CA", + "module.anchor-aura.pause.pause-on-CA.description": "Pauses while Crystal Aura is placing.", + "module.anchor-aura.render": "Render", + "module.anchor-aura.render.swing": "Swing", + "module.anchor-aura.render.swing.description": "Whether to swing your hand client-side.", + "module.anchor-aura.render.render": "Render", + "module.anchor-aura.render.render.description": "Renders the block where it is placing an anchor.", + "module.anchor-aura.render.shape-mode": "Shape Mode", + "module.anchor-aura.render.shape-mode.description": "How the shapes are rendered.", + "module.anchor-aura.render.side-color": "Side Color", + "module.anchor-aura.render.side-color.description": "The side color for positions to be placed.", + "module.anchor-aura.render.line-color": "Line Color", + "module.anchor-aura.render.line-color.description": "The line color for positions to be placed.", + + "module.anti-void": "Anti Void", + "module.anti-void.description": "Attempts to prevent you from falling into the void.", + "module.anti-void.general.mode": "Mode", + "module.anti-void.general.mode.description": "The method to prevent you from falling into the void.", + + "module.kill-aura": "Kill Aura", + "module.kill-aura.description": "Attacks specified entities around you.", + "module.kill-aura.general.attack-when-holding": "Attack When Holding", + "module.kill-aura.general.attack-when-holding.description": "Only attacks an entity when a specified item is in your hand.", + "module.kill-aura.general.selected-weapon-types": "Selected Weapon Types", + "module.kill-aura.general.selected-weapon-types.description": "Which types of weapons to attack with (if you select the diamond sword, any type of sword may be used to attack).", + "module.kill-aura.general.rotate": "Rotate", + "module.kill-aura.general.rotate.description": "Determines when you should rotate towards the target.", + "module.kill-aura.general.auto-switch": "Auto Switch", + "module.kill-aura.general.auto-switch.description": "Switches to an acceptable weapon when attacking the target.", + "module.kill-aura.general.swap-back": "Swap Back", + "module.kill-aura.general.swap-back.description": "Switches to your previous slot when done attacking the target.", + "module.kill-aura.general.shield-mode": "Shield Mode", + "module.kill-aura.general.shield-mode.description": "Will try and use an axe to break target shields.", + "module.kill-aura.general.only-on-click": "Only On Click", + "module.kill-aura.general.only-on-click.description": "Only attacks when holding left click.", + "module.kill-aura.general.only-on-look": "Only On Look", + "module.kill-aura.general.only-on-look.description": "Only attacks when looking at an entity.", + "module.kill-aura.general.pause-baritone": "Pause Baritone", + "module.kill-aura.general.pause-baritone.description": "Freezes Baritone temporarily until you are finished attacking the entity.", + "module.kill-aura.targeting": "Targeting", + "module.kill-aura.targeting.entities": "Entities", + "module.kill-aura.targeting.entities.description": "Entities to attack.", + "module.kill-aura.targeting.priority": "Priority", + "module.kill-aura.targeting.priority.description": "How to filter targets within range.", + "module.kill-aura.targeting.max-targets": "Max Targets", + "module.kill-aura.targeting.max-targets.description": "How many entities to target at once.", + "module.kill-aura.targeting.range": "Range", + "module.kill-aura.targeting.range.description": "The maximum range the entity can be to attack it.", + "module.kill-aura.targeting.walls-range": "Walls Range", + "module.kill-aura.targeting.walls-range.description": "The maximum range the entity can be attacked through walls.", + "module.kill-aura.targeting.mob-age-filter": "Mob Age Filter", + "module.kill-aura.targeting.mob-age-filter.description": "Determines the age of the mobs to target (baby, adult, or both).", + "module.kill-aura.targeting.ignore-named": "Ignore Named", + "module.kill-aura.targeting.ignore-named.description": "Whether or not to attack mobs with a name.", + "module.kill-aura.targeting.ignore-passive": "Ignore Passive", + "module.kill-aura.targeting.ignore-passive.description": "Will only attack sometimes passive mobs if they are targeting you.", + "module.kill-aura.targeting.ignore-tamed": "Ignore Tamed", + "module.kill-aura.targeting.ignore-tamed.description": "Will avoid attacking mobs you tamed.", + "module.kill-aura.timing": "Timing", + "module.kill-aura.timing.pause-on-lag": "Pause On Lag", + "module.kill-aura.timing.pause-on-lag.description": "Pauses if the server is lagging.", + "module.kill-aura.timing.pause-on-use": "Pause On Use", + "module.kill-aura.timing.pause-on-use.description": "Does not attack while using an item.", + "module.kill-aura.timing.pause-on-CA": "Pause On CA", + "module.kill-aura.timing.pause-on-CA.description": "Does not attack while CA is placing.", + "module.kill-aura.timing.TPS-sync": "TPS Sync", + "module.kill-aura.timing.TPS-sync.description": "Tries to sync attack delay with the server's TPS.", + "module.kill-aura.timing.custom-delay": "Custom Delay", + "module.kill-aura.timing.custom-delay.description": "Use a custom delay instead of the vanilla cooldown.", + "module.kill-aura.timing.hit-delay": "Hit Delay", + "module.kill-aura.timing.hit-delay.description": "How fast you hit the entity in ticks.", + "module.kill-aura.timing.switch-delay": "Switch Delay", + "module.kill-aura.timing.switch-delay.description": "How many ticks to wait before hitting an entity after switching hotbar slots.", + + "module.parkour": "Parkour", + "module.parkour.description": "Automatically jumps at the edges of blocks.", + "module.parkour.general.edge-distance": "Edge Distance", + "module.parkour.general.edge-distance.description": "How far from the edge should you jump.", + + "module.spam": "Spam", + "module.spam.description": "Spams specified messages in chat.", + "module.spam.general.messages": "Messages", + "module.spam.general.messages.description": "Messages to use for spam.", + "module.spam.general.delay": "Delay", + "module.spam.general.delay.description": "The delay between specified messages in ticks.", + "module.spam.general.disable-on-leave": "Disable On Leave", + "module.spam.general.disable-on-leave.description": "Disables spam when you leave a server.", + "module.spam.general.disable-on-disconnect": "Disable On Disconnect", + "module.spam.general.disable-on-disconnect.description": "Disables spam when you are disconnected from a server.", + "module.spam.general.randomise": "Randomise", + "module.spam.general.randomise.description": "Selects a random message from your spam message list.", + "module.spam.general.auto-split-messages": "Auto Split Messages", + "module.spam.general.auto-split-messages.description": "Automatically split up large messages after a certain length", + "module.spam.general.split-length": "Split Length", + "module.spam.general.split-length.description": "The length after which to split messages in chat", + "module.spam.general.split-delay": "Split Delay", + "module.spam.general.split-delay.description": "The delay between split messages in ticks.", + "module.spam.general.bypass": "Bypass", + "module.spam.general.bypass.description": "Add random text at the end of the message to try to bypass anti spams.", + "module.spam.general.include-uppercase-characters": "Include Uppercase Characters", + "module.spam.general.include-uppercase-characters.description": "Whether the bypass text should include uppercase characters.", + "module.spam.general.length": "Length", + "module.spam.general.length.description": "Number of characters used to bypass anti spam.", + + "module.collisions": "Collisions", + "module.collisions.description": "Adds collision boxes to certain blocks/areas.", + "module.collisions.general.blocks": "Blocks", + "module.collisions.general.blocks.description": "What blocks should be added collision box.", + "module.collisions.general.magma": "Magma", + "module.collisions.general.magma.description": "Prevents you from walking over magma blocks.", + "module.collisions.general.unloaded-chunks": "Unloaded Chunks", + "module.collisions.general.unloaded-chunks.description": "Stops you from going into unloaded chunks.", + "module.collisions.general.ignore-border": "Ignore Border", + "module.collisions.general.ignore-border.description": "Removes world border collision.", + + "module.click-tp": "Click Tp", + "module.click-tp.description": "Teleports you to the block you click on.", + + "module.packet-canceller": "Packet Canceller", + "module.packet-canceller.description": "Allows you to cancel certain packets.", + "module.packet-canceller.general.S2C-packets": "S2C Packets", + "module.packet-canceller.general.S2C-packets.description": "Server-to-client packets to cancel.", + "module.packet-canceller.general.C2S-packets": "C2S Packets", + "module.packet-canceller.general.C2S-packets.description": "Client-to-server packets to cancel.", + + "module.tracers": "Tracers", + "module.tracers.description": "Displays tracer lines to specified entities.", + "module.tracers.general.entities": "Entities", + "module.tracers.general.entities.description": "Select specific entities.", + "module.tracers.general.ignore-self": "Ignore Self", + "module.tracers.general.ignore-self.description": "Doesn't draw tracers to yourself when in third person or freecam.", + "module.tracers.general.ignore-friends": "Ignore Friends", + "module.tracers.general.ignore-friends.description": "Doesn't draw tracers to friends.", + "module.tracers.general.show-invisible": "Show Invisible", + "module.tracers.general.show-invisible.description": "Shows invisible entities.", + "module.tracers.appearance": "Appearance", + "module.tracers.appearance.style": "Style", + "module.tracers.appearance.style.description": "What display mode should be used", + "module.tracers.appearance.target": "Target", + "module.tracers.appearance.target.description": "What part of the entity to target.", + "module.tracers.appearance.stem": "Stem", + "module.tracers.appearance.stem.description": "Draw a line through the center of the tracer target.", + "module.tracers.appearance.max-distance": "Max Distance", + "module.tracers.appearance.max-distance.description": "Maximum distance for tracers to show.", + "module.tracers.appearance.distance-offscreen": "Distance Offscreen", + "module.tracers.appearance.distance-offscreen.description": "Offscreen's distance from center.", + "module.tracers.appearance.size-offscreen": "Size Offscreen", + "module.tracers.appearance.size-offscreen.description": "Offscreen's size.", + "module.tracers.appearance.blink-offscreen": "Blink Offscreen", + "module.tracers.appearance.blink-offscreen.description": "Make offscreen Blink.", + "module.tracers.appearance.blink-offscreen-speed": "Blink Offscreen Speed", + "module.tracers.appearance.blink-offscreen-speed.description": "Offscreen's blink speed.", + "module.tracers.colors": "Colors", + "module.tracers.colors.distance-colors": "Distance Colors", + "module.tracers.colors.distance-colors.description": "Changes the color of tracers depending on distance.", + "module.tracers.colors.show-friend-colors": "Show Friend Colors", + "module.tracers.colors.show-friend-colors.description": "Whether or not to override the distance color of friends with the friend color.", + "module.tracers.colors.players-colors": "Players Colors", + "module.tracers.colors.players-colors.description": "The player's color.", + "module.tracers.colors.animals-color": "Animals Color", + "module.tracers.colors.animals-color.description": "The animal's color.", + "module.tracers.colors.water-animals-color": "Water Animals Color", + "module.tracers.colors.water-animals-color.description": "The water animal's color.", + "module.tracers.colors.monsters-color": "Monsters Color", + "module.tracers.colors.monsters-color.description": "The monster's color.", + "module.tracers.colors.ambient-color": "Ambient Color", + "module.tracers.colors.ambient-color.description": "The ambient color.", + "module.tracers.colors.misc-color": "Misc Color", + "module.tracers.colors.misc-color.description": "The misc color.", + + "module.auto-exp": "Auto Exp", + "module.auto-exp.description": "Automatically repairs your armor and tools in pvp.", + "module.auto-exp.general.mode": "Mode", + "module.auto-exp.general.mode.description": "Which items to repair.", + "module.auto-exp.general.replenish": "Replenish", + "module.auto-exp.general.replenish.description": "Automatically replenishes exp into a selected hotbar slot.", + "module.auto-exp.general.only-on-ground": "Only On Ground", + "module.auto-exp.general.only-on-ground.description": "Only throw when the player is on the ground.", + "module.auto-exp.general.exp-slot": "Exp Slot", + "module.auto-exp.general.exp-slot.description": "The slot to replenish exp into.", + "module.auto-exp.general.min-threshold": "Min Threshold", + "module.auto-exp.general.min-threshold.description": "The minimum durability percentage that an item needs to fall to, to be repaired.", + "module.auto-exp.general.max-threshold": "Max Threshold", + "module.auto-exp.general.max-threshold.description": "The maximum durability percentage to repair items to.", + + "module.jesus": "Jesus", + "module.jesus.description": "Walk on liquids and powder snow like Jesus.", + "module.jesus.general.powder-snow": "Powder Snow", + "module.jesus.general.powder-snow.description": "Walk on powder snow.", + "module.jesus.water": "Water", + "module.jesus.water.mode": "Mode", + "module.jesus.water.mode.description": "How to treat the water.", + "module.jesus.water.dip-if-burning": "Dip If Burning", + "module.jesus.water.dip-if-burning.description": "Lets you go into the water when you are burning.", + "module.jesus.water.dip-on-sneak": "Dip On Sneak", + "module.jesus.water.dip-on-sneak.description": "Lets you go into the water when your sneak key is held.", + "module.jesus.water.dip-on-fall": "Dip On Fall", + "module.jesus.water.dip-on-fall.description": "Lets you go into the water when you fall over a certain height.", + "module.jesus.water.dip-fall-height": "Dip Fall Height", + "module.jesus.water.dip-fall-height.description": "The fall height at which you will go into the water.", + "module.jesus.lava": "Lava", + "module.jesus.lava.mode": "Mode", + "module.jesus.lava.mode.description": "How to treat the lava.", + "module.jesus.lava.dip-if-resistant": "Dip If Resistant", + "module.jesus.lava.dip-if-resistant.description": "Lets you go into the lava if you have Fire Resistance effect.", + "module.jesus.lava.dip-on-sneak": "Dip On Sneak", + "module.jesus.lava.dip-on-sneak.description": "Lets you go into the lava when your sneak key is held.", + "module.jesus.lava.dip-on-fall": "Dip On Fall", + "module.jesus.lava.dip-on-fall.description": "Lets you go into the lava when you fall over a certain height.", + "module.jesus.lava.dip-fall-height": "Dip Fall Height", + "module.jesus.lava.dip-fall-height.description": "The fall height at which you will go into the lava.", + + "module.no-mining-trace": "No Mining Trace", + "module.no-mining-trace.description": "Allows you to mine blocks through entities.", + "module.no-mining-trace.general.blacklisted-entities": "Blacklisted Entities", + "module.no-mining-trace.general.blacklisted-entities.description": "Entities you will interact with as normal.", + "module.no-mining-trace.general.only-when-holding-a-pickaxe": "Only When Holding A Pickaxe", + "module.no-mining-trace.general.only-when-holding-a-pickaxe.description": "Whether or not to work only when holding a pickaxe.", + + "module.bow-aimbot": "Bow Aimbot", + "module.bow-aimbot.description": "Automatically aims your bow for you.", + "module.bow-aimbot.general.range": "Range", + "module.bow-aimbot.general.range.description": "The maximum range the entity can be to aim at it.", + "module.bow-aimbot.general.entities": "Entities", + "module.bow-aimbot.general.entities.description": "Entities to attack.", + "module.bow-aimbot.general.priority": "Priority", + "module.bow-aimbot.general.priority.description": "What type of entities to target.", + "module.bow-aimbot.general.babies": "Babies", + "module.bow-aimbot.general.babies.description": "Whether or not to attack baby variants of the entity.", + "module.bow-aimbot.general.nametagged": "Nametagged", + "module.bow-aimbot.general.nametagged.description": "Whether or not to attack mobs with a name tag.", + "module.bow-aimbot.general.pause-on-combat": "Pause On Combat", + "module.bow-aimbot.general.pause-on-combat.description": "Freezes Baritone temporarily until you released the bow." } From 514469bf92d326611d394ed3ff17b1c6f61d9fb5 Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:00:42 -0500 Subject: [PATCH 28/52] max excavator & infinity miner --- .../systems/modules/world/Excavator.java | 1 - .../systems/modules/world/InfinityMiner.java | 1 - .../assets/meteor-client/language/en_us.json | 34 +++++++++++++++++++ 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Excavator.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Excavator.java index 00cd4656ae..f359176d50 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Excavator.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Excavator.java @@ -22,7 +22,6 @@ import net.minecraft.util.hit.BlockHitResult; import org.lwjgl.glfw.GLFW; -// todo map public class Excavator extends Module { private final IBaritone baritone = BaritoneAPI.getProvider().getPrimaryBaritone(); private final SettingGroup sgGeneral = settings.getDefaultGroup(); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/InfinityMiner.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/InfinityMiner.java index 4b0968bd3a..f30ada1fc7 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/InfinityMiner.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/InfinityMiner.java @@ -34,7 +34,6 @@ import java.util.List; import java.util.function.Predicate; -// todo map public class InfinityMiner extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); private final SettingGroup sgWhenFull = settings.createGroup("when-full"); diff --git a/src/main/resources/assets/meteor-client/language/en_us.json b/src/main/resources/assets/meteor-client/language/en_us.json index c71eb7572f..382d3e0762 100644 --- a/src/main/resources/assets/meteor-client/language/en_us.json +++ b/src/main/resources/assets/meteor-client/language/en_us.json @@ -362,6 +362,22 @@ "module.enderman-look.general.stun-hostiles": "Stun Hostiles", "module.enderman-look.general.stun-hostiles.description": "Automatically stares at hostile endermen to stun them in place.", + "module.excavator": "Excavator", + "module.excavator.description": "Excavate a selection area.", + "module.excavator.general.selection-bind": "Selection Bind", + "module.excavator.general.selection-bind.description": "Bind to draw selection.", + "module.excavator.general.log-selection": "Log Selection", + "module.excavator.general.log-selection.description": "Logs the selection coordinates to the chat.", + "module.excavator.general.keep-active": "Keep Active", + "module.excavator.general.keep-active.description": "Keep the module active after finishing the excavation.", + "module.excavator.rendering": "Rendering", + "module.excavator.rendering.shape-mode": "Shape Mode", + "module.excavator.rendering.shape-mode.description": "How the shapes are rendered.", + "module.excavator.rendering.side-color": "Side Color", + "module.excavator.rendering.side-color.description": "The side color.", + "module.excavator.rendering.line-color": "Line Color", + "module.excavator.rendering.line-color.description": "The line color.", + "module.timer": "Timer", "module.timer.description": "Changes the speed of everything in your game.", "module.timer.general.multiplier": "Multiplier", @@ -1459,6 +1475,24 @@ "module.highway-builder.render-paving.blocks-to-place-line-color": "Blocks To Place Line Color", "module.highway-builder.render-paving.blocks-to-place-line-color.description": "Color of blocks to be placed.", + "module.infinity-miner": "Infinity Miner", + "module.infinity-miner.description": "Allows you to essentially mine forever by mining repair blocks when the durability gets low. Needs a mending pickaxe.", + "module.infinity-miner.general.target-blocks": "Target Blocks", + "module.infinity-miner.general.target-blocks.description": "The target blocks to mine.", + "module.infinity-miner.general.target-items": "Target Items", + "module.infinity-miner.general.target-items.description": "The target items to collect.", + "module.infinity-miner.general.repair-blocks": "Repair Blocks", + "module.infinity-miner.general.repair-blocks.description": "The repair blocks to mine.", + "module.infinity-miner.general.start-repairing": "Start Repairing", + "module.infinity-miner.general.start-repairing.description": "The durability percentage at which to start repairing.", + "module.infinity-miner.general.start-mining": "Start Mining", + "module.infinity-miner.general.start-mining.description": "The durability percentage at which to start mining.", + "module.infinity-miner.when-full": "When Full", + "module.infinity-miner.when-full.walk-home": "Walk Home", + "module.infinity-miner.when-full.walk-home.description": "Will walk 'home' when your inventory is full.", + "module.infinity-miner.when-full.log-out": "Log Out", + "module.infinity-miner.when-full.log-out.description": "Logs out when your inventory is full. Will walk home FIRST if walk home is enabled.", + "module.breadcrumbs": "Breadcrumbs", "module.breadcrumbs.description": "Displays a trail behind where you have walked.", "module.breadcrumbs.general.color": "Color", From 0de96768c62f564c5cf4d5c492b576e61e76acc3 Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:03:40 -0500 Subject: [PATCH 29/52] solve setting name conflicts --- .../systems/modules/render/BetterTooltips.java | 2 +- .../meteorclient/systems/modules/world/Nuker.java | 4 ++-- .../assets/meteor-client/language/en_us.json | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BetterTooltips.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BetterTooltips.java index 3aacb344e3..f716f1b042 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BetterTooltips.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BetterTooltips.java @@ -86,7 +86,7 @@ public class BetterTooltips extends Module { ); private final Setting openContentsKey = sgGeneral.add(new KeybindSetting.Builder() - .name("keybind") + .name("open-contents-keybind") .defaultValue(Keybind.fromButton(GLFW_MOUSE_BUTTON_MIDDLE)) .visible(openContents::get) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Nuker.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Nuker.java index c364769bb6..481517600a 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Nuker.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Nuker.java @@ -242,14 +242,14 @@ public class Nuker extends Module { ); private final Setting sideColor = sgRender.add(new ColorSetting.Builder() - .name("side-color") + .name("breaking-side-color") .defaultValue(new SettingColor(255, 0, 0, 80)) .visible(enableRenderBreaking::get) .build() ); private final Setting lineColor = sgRender.add(new ColorSetting.Builder() - .name("line-color") + .name("breaking-line-color") .defaultValue(new SettingColor(255, 0, 0, 255)) .visible(enableRenderBreaking::get) .build() diff --git a/src/main/resources/assets/meteor-client/language/en_us.json b/src/main/resources/assets/meteor-client/language/en_us.json index 382d3e0762..39ba55f291 100644 --- a/src/main/resources/assets/meteor-client/language/en_us.json +++ b/src/main/resources/assets/meteor-client/language/en_us.json @@ -253,8 +253,8 @@ "module.better-tooltips.general.keybind.description": "The bind for keybind mode.", "module.better-tooltips.general.open-contents": "Open Contents", "module.better-tooltips.general.open-contents.description": "Opens a GUI window with the inventory of the storage block or book when you click the item.", - "module.better-tooltips.general.keybind-$todo-duplicates$": "Keybind", - "module.better-tooltips.general.keybind.description-$todo-duplicates$": "Key to open contents (containers, books, etc.) when pressed on items.", + "module.better-tooltips.general.open-contents-keybind": "Open Contents Keybind", + "module.better-tooltips.general.open-contents-keybind.description": "Key to open contents (containers, books, etc.) when pressed on items.", "module.better-tooltips.general.pause-in-creative": "Pause In Creative", "module.better-tooltips.general.pause-in-creative.description": "Pauses middle click open while the player is in creative mode.", "module.better-tooltips.previews": "Previews", @@ -777,10 +777,10 @@ "module.nuker.render.broken-blocks.description": "Enable rendering bounding box for Cube and Uniform Cube.", "module.nuker.render.nuke-block-mode": "Nuke Block Mode", "module.nuker.render.nuke-block-mode.description": "How the shapes for broken blocks are rendered.", - "module.nuker.render.side-color-$todo-duplicates$": "Side Color", - "module.nuker.render.side-color.description-$todo-duplicates$": "The side color of the target block rendering.", - "module.nuker.render.line-color-$todo-duplicates$": "Line Color", - "module.nuker.render.line-color.description-$todo-duplicates$": "The line color of the target block rendering.", + "module.nuker.render.breaking-side-color": "Breaking Side Color", + "module.nuker.render.breaking-side-color.description": "The side color of the target block rendering.", + "module.nuker.render.breaking-line-color": "Breaking Line Color", + "module.nuker.render.breaking-line-color.description": "The line color of the target block rendering.", "module.auto-trap": "Auto Trap", "module.auto-trap.description": "Traps people in a box to prevent them from moving.", From 3362d812a83552da08f37c19ba68bc7b60ad81bd Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:27:09 -0500 Subject: [PATCH 30/52] map commands --- .../meteorclient/commands/Command.java | 11 +- .../commands/commands/CommandsCommand.java | 2 +- .../commands/commands/DamageCommand.java | 2 +- .../commands/commands/DisconnectCommand.java | 2 +- .../commands/commands/EnderChestCommand.java | 2 +- .../commands/commands/GamemodeCommand.java | 2 +- .../commands/commands/InventoryCommand.java | 2 +- .../commands/commands/LocateCommand.java | 2 +- .../commands/commands/ModulesCommand.java | 2 +- .../commands/commands/NameHistoryCommand.java | 2 +- .../commands/commands/SaveMapCommand.java | 2 +- .../commands/commands/SettingCommand.java | 2 +- .../commands/commands/ToggleCommand.java | 2 +- .../commands/commands/WaypointCommand.java | 2 +- .../assets/meteor-client/language/en_us.json | 136 +++++++++--------- 15 files changed, 84 insertions(+), 89 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/commands/Command.java b/src/main/java/meteordevelopment/meteorclient/commands/Command.java index 424502a0be..0809c14978 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/Command.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/Command.java @@ -34,20 +34,15 @@ public abstract class Command { private final List aliases; public final String translationKey; - // todo remove the description parameter in the next minecraft version update - @Deprecated(forRemoval = true) - public Command(String name, String description, String... aliases) { + public Command(String name, String... aliases) { this.name = name; this.title = Utils.nameToTitle(name); this.aliases = List.of(aliases); - this.translationKey = "meteor.command." + name; + this.translationKey = "command." + name; } public Command(String name) { - this.name = name; - this.title = Utils.nameToTitle(name); - this.aliases = List.of(); - this.translationKey = "meteor.command." + name; + this(name, new String[0]); } // Helper methods to painlessly infer the CommandSource generic type argument diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/CommandsCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/CommandsCommand.java index 7f63c4cd26..6f0be6c8e1 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/CommandsCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/CommandsCommand.java @@ -20,7 +20,7 @@ public class CommandsCommand extends Command { public CommandsCommand() { - super("commands", "List of all commands.", "help"); + super("commands", "help"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/DamageCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/DamageCommand.java index 973c10bb0c..653f411b9e 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/DamageCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/DamageCommand.java @@ -21,7 +21,7 @@ public class DamageCommand extends Command { private final static SimpleCommandExceptionType INVULNERABLE = new SimpleCommandExceptionType(Text.literal("You are invulnerable.")); public DamageCommand() { - super("damage", "Damages self", "dmg"); + super("damage", "dmg"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/DisconnectCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/DisconnectCommand.java index 2ae2620ecf..2cfa733b92 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/DisconnectCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/DisconnectCommand.java @@ -15,7 +15,7 @@ public class DisconnectCommand extends Command { public DisconnectCommand() { - super("disconnect", "Disconnect from the server", "dc"); + super("disconnect", "dc"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/EnderChestCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/EnderChestCommand.java index 818bf8bb27..2c5210ad1c 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/EnderChestCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/EnderChestCommand.java @@ -14,7 +14,7 @@ public class EnderChestCommand extends Command { public EnderChestCommand() { - super("ender-chest", "Allows you to preview memory of your ender chest.", "ec", "echest"); + super("ender-chest", "ec", "echest"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/GamemodeCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/GamemodeCommand.java index 9033346af8..2fcaba695f 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/GamemodeCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/GamemodeCommand.java @@ -12,7 +12,7 @@ public class GamemodeCommand extends Command { public GamemodeCommand() { - super("gamemode", "Changes your gamemode client-side.", "gm"); + super("gamemode", "gm"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/InventoryCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/InventoryCommand.java index 8ef230967c..6bcd33a815 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/InventoryCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/InventoryCommand.java @@ -14,7 +14,7 @@ public class InventoryCommand extends Command { public InventoryCommand() { - super("inventory", "Allows you to see parts of another player's inventory.", "inv", "invsee"); + super("inventory", "inv", "invsee"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/LocateCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/LocateCommand.java index f3c4895d35..32062c3935 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/LocateCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/LocateCommand.java @@ -67,7 +67,7 @@ public class LocateCommand extends Command { ); public LocateCommand() { - super("locate", "Locates structures", "loc"); + super("locate", "loc"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/ModulesCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/ModulesCommand.java index 6f31d9a2c7..e677da9b73 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/ModulesCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/ModulesCommand.java @@ -18,7 +18,7 @@ public class ModulesCommand extends Command { public ModulesCommand() { - super("modules", "Displays a list of all modules.", "features"); + super("modules", "features"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/NameHistoryCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/NameHistoryCommand.java index 3a646a477c..ba5b8aea0c 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/NameHistoryCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/NameHistoryCommand.java @@ -27,7 +27,7 @@ public class NameHistoryCommand extends Command { public NameHistoryCommand() { - super("name-history", "Provides a list of a players previous names from the laby.net api.", "history", "names"); + super("name-history", "history", "names"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/SaveMapCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/SaveMapCommand.java index 232ed70e9f..668893f56b 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/SaveMapCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/SaveMapCommand.java @@ -38,7 +38,7 @@ public class SaveMapCommand extends Command { private final PointerBuffer filters; public SaveMapCommand() { - super("save-map", "Saves a map to an image.", "sm"); + super("save-map", "sm"); filters = BufferUtils.createPointerBuffer(1); diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/SettingCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/SettingCommand.java index 25a2e92b65..04fca1e192 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/SettingCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/SettingCommand.java @@ -22,7 +22,7 @@ public class SettingCommand extends Command { public SettingCommand() { - super("settings", "Allows you to view and change module settings.", "s"); + super("settings", "s"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/ToggleCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/ToggleCommand.java index c7fdbdd5e6..7bb31f750b 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/ToggleCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/ToggleCommand.java @@ -17,7 +17,7 @@ public class ToggleCommand extends Command { public ToggleCommand() { - super("toggle", "Toggles a module.", "t"); + super("toggle", "t"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/WaypointCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/WaypointCommand.java index 54082c09c2..d65e1fdc3e 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/WaypointCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/WaypointCommand.java @@ -20,7 +20,7 @@ public class WaypointCommand extends Command { public WaypointCommand() { - super("waypoint", "Manages waypoints.", "wp"); + super("waypoint", "wp"); } @Override diff --git a/src/main/resources/assets/meteor-client/language/en_us.json b/src/main/resources/assets/meteor-client/language/en_us.json index 39ba55f291..84039104d4 100644 --- a/src/main/resources/assets/meteor-client/language/en_us.json +++ b/src/main/resources/assets/meteor-client/language/en_us.json @@ -3,74 +3,74 @@ "meteor.key.open-commands": "Open Commands", "meteor.key.open-gui": "Open GUI", - "meteor.command.bind.description": "Binds a specified module to the next pressed key.", - "meteor.command.binds.description": "List of all bound modules.", - "meteor.command.commands.description": "List of all commands.", - "meteor.command.damage.description": "Damages self.", - "meteor.command.disconnect.description": "Disconnect from the server", - "meteor.command.disconnect.disconnection_message": "%s[%sDisconnectCommand%s] Disconnected by user.", - "meteor.command.dismount.description": "Dismounts you from entity you are riding.", - "meteor.command.drop.description": "Automatically drops specified items.", - "meteor.command.drop.exception.no_such_item": "Could not find an item with that name!", - "meteor.command.drop.exception.not_spectator": "Can't drop items while in spectator.", - "meteor.command.enchant.description": "Enchants the item in your hand. REQUIRES Creative mode.", - "meteor.command.enchant.exception.not_holding_item": "You need to hold some item to enchant.", - "meteor.command.enchant.exception.not_in_creative": "You must be in creative mode to use this.", - "meteor.command.ender-chest.description": "Allows you to preview memory of your ender chest.", - "meteor.command.fake-player.description": "Manages fake players that you can use for testing.", - "meteor.command.fake-player.error.not_found": "Couldn't find a Fake Player with that name.", - "meteor.command.fake-player.info.removed": "Removed Fake Player %s.", - "meteor.command.fov.description": "Changes your fov.", - "meteor.command.friends.description": "Manages friends.", - "meteor.command.gamemode.description": "Changes your gamemode client-side.", - "meteor.command.give.description": "Gives you any item.", - "meteor.command.give.exception.not_in_creative": "You must be in creative mode to use this.", - "meteor.command.give.exception.no_space": "No space in hotbar.", - "meteor.command.hclip.description": "Lets you clip through blocks horizontally.", - "meteor.command.input.description": "Keyboard input simulation.", - "meteor.command.input.info.cleared_handlers": "Cleared all keypress handlers.", - "meteor.command.input.info.active_handlers": "Active keypress handlers: ", - "meteor.command.input.info.keypress_handler": "(highlight)%d(default) - (highlight)%s %d(default) ticks left out of (highlight)%d(default).", - "meteor.command.input.info.removed_handler": "Removed keypress handler.", - "meteor.command.input.warning.no_handlers": "No active keypress handlers.", - "meteor.command.input.warning.out_of_range": "Index out of range.", - "meteor.command.inventory.description": "Allows you to see parts of another player's inventory.", - "meteor.command.locate.description": "Locates structures", - "meteor.command.macro.description": "Allows you to execute macros.", - "meteor.command.macro.error.none_scheduled": "No macros are currently scheduled.", - "meteor.command.macro.error.not_scheduled": "This macro is not currently scheduled.", - "meteor.command.macro.info.cleared_all": "Cleared all scheduled macros.", - "meteor.command.macro.info.cleared": "Cleared scheduled macro.", - "meteor.command.modules.description": "Displays a list of all modules.", - "meteor.command.name-history.description": "Provides a list of a players previous names from the laby.net api", - "meteor.command.name-history.error.error_fetching_name": "There was an error fetching that users name history.", - "meteor.command.name-history.inaccurate": "This name history entry is not accurate according to laby.net", - "meteor.command.nbt.description": "Modifies NBT data for an item, example: .nbt add {display:{Name:'{\"text\":\"$cRed Name\"}'}}", - "meteor.command.notebot.description": "Allows you load notebot files", - "meteor.command.peek.description": "Lets you see what's inside storage block items.", - "meteor.command.profiles.description": "Loads and saves profiles.", - "meteor.command.profiles.info.loaded": "Loaded profile (highlight)%s(default).", - "meteor.command.profiles.info.saved": "Saved profile (highlight)%s(default).", - "meteor.command.profiles.info.deleted": "Deleted profile (highlight)%s(default).", - "meteor.command.reload.description": "Reloads many systems.", - "meteor.command.reload.warning.reloading": "Reloading systems, this may take a while.", - "meteor.command.reset.description": "Resets specified settings.", - "meteor.command.rotation.description": "Modifies your rotation.", - "meteor.command.save-map.description": "Saves a map to an image.", - "meteor.command.save-map.error.error_writing_texture": "Error writing map texture", - "meteor.command.save-map.exception.map_not_found": "You must be holding a filled map.", - "meteor.command.save-map.exception.oops": "Something went wrong.", - "meteor.command.say.description": "Sends messages in chat.", - "meteor.command.server.description": "Prints server information", - "meteor.command.settings.description": "Allows you to view and change module settings.", - "meteor.command.spectate.description": "Allows you to spectate nearby players", - "meteor.command.swarm.description": "Sends commands to connected swarm workers.", - "meteor.command.toggle.description": "Toggles a module.", - "meteor.command.vclip.description": "Lets you clip through blocks vertically.", - "meteor.command.wasp.description": "Sets the auto wasp target.", - "meteor.command.wasp.exception.cant_wasp_self": "You cannot target yourself!", - "meteor.command.wasp.info.target": "%s set as target.", - "meteor.command.waypoint.description": "Manages waypoints.", + "command.bind.description": "Binds a specified module to the next pressed key.", + "command.binds.description": "List of all bound modules.", + "command.commands.description": "List of all commands.", + "command.damage.description": "Damages self.", + "command.disconnect.description": "Disconnect from the server", + "command.disconnect.disconnection_message": "%s[%sDisconnectCommand%s] Disconnected by user.", + "command.dismount.description": "Dismounts you from entity you are riding.", + "command.drop.description": "Automatically drops specified items.", + "command.drop.exception.no_such_item": "Could not find an item with that name!", + "command.drop.exception.not_spectator": "Can't drop items while in spectator.", + "command.enchant.description": "Enchants the item in your hand. REQUIRES Creative mode.", + "command.enchant.exception.not_holding_item": "You need to hold some item to enchant.", + "command.enchant.exception.not_in_creative": "You must be in creative mode to use this.", + "command.ender-chest.description": "Allows you to preview memory of your ender chest.", + "command.fake-player.description": "Manages fake players that you can use for testing.", + "command.fake-player.error.not_found": "Couldn't find a Fake Player with that name.", + "command.fake-player.info.removed": "Removed Fake Player %s.", + "command.fov.description": "Changes your fov.", + "command.friends.description": "Manages friends.", + "command.gamemode.description": "Changes your gamemode client-side.", + "command.give.description": "Gives you any item.", + "command.give.exception.not_in_creative": "You must be in creative mode to use this.", + "command.give.exception.no_space": "No space in hotbar.", + "command.hclip.description": "Lets you clip through blocks horizontally.", + "command.input.description": "Keyboard input simulation.", + "command.input.info.cleared_handlers": "Cleared all keypress handlers.", + "command.input.info.active_handlers": "Active keypress handlers: ", + "command.input.info.keypress_handler": "(highlight)%d(default) - (highlight)%s %d(default) ticks left out of (highlight)%d(default).", + "command.input.info.removed_handler": "Removed keypress handler.", + "command.input.warning.no_handlers": "No active keypress handlers.", + "command.input.warning.out_of_range": "Index out of range.", + "command.inventory.description": "Allows you to see parts of another player's inventory.", + "command.locate.description": "Locates structures", + "command.macro.description": "Allows you to execute macros.", + "command.macro.error.none_scheduled": "No macros are currently scheduled.", + "command.macro.error.not_scheduled": "This macro is not currently scheduled.", + "command.macro.info.cleared_all": "Cleared all scheduled macros.", + "command.macro.info.cleared": "Cleared scheduled macro.", + "command.modules.description": "Displays a list of all modules.", + "command.name-history.description": "Provides a list of a players previous names from the laby.net api", + "command.name-history.error.error_fetching_name": "There was an error fetching that users name history.", + "command.name-history.inaccurate": "This name history entry is not accurate according to laby.net", + "command.nbt.description": "Modifies NBT data for an item, example: .nbt add {display:{Name:'{\"text\":\"$cRed Name\"}'}}", + "command.notebot.description": "Allows you load notebot files", + "command.peek.description": "Lets you see what's inside storage block items.", + "command.profiles.description": "Loads and saves profiles.", + "command.profiles.info.loaded": "Loaded profile (highlight)%s(default).", + "command.profiles.info.saved": "Saved profile (highlight)%s(default).", + "command.profiles.info.deleted": "Deleted profile (highlight)%s(default).", + "command.reload.description": "Reloads many systems.", + "command.reload.warning.reloading": "Reloading systems, this may take a while.", + "command.reset.description": "Resets specified settings.", + "command.rotation.description": "Modifies your rotation.", + "command.save-map.description": "Saves a map to an image.", + "command.save-map.error.error_writing_texture": "Error writing map texture", + "command.save-map.exception.map_not_found": "You must be holding a filled map.", + "command.save-map.exception.oops": "Something went wrong.", + "command.say.description": "Sends messages in chat.", + "command.server.description": "Prints server information", + "command.settings.description": "Allows you to view and change module settings.", + "command.spectate.description": "Allows you to spectate nearby players", + "command.swarm.description": "Sends commands to connected swarm workers.", + "command.toggle.description": "Toggles a module.", + "command.vclip.description": "Lets you clip through blocks vertically.", + "command.wasp.description": "Sets the auto wasp target.", + "command.wasp.exception.cant_wasp_self": "You cannot target yourself!", + "command.wasp.info.target": "%s set as target.", + "command.waypoint.description": "Manages waypoints.", "category.combat": "Combat", "category.player": "Player", From 6791cf47c58bb5ec31cb4d53d74d66f469b75815 Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:39:31 -0500 Subject: [PATCH 31/52] map shared module settings --- .../gui/DefaultSettingsWidgetFactory.java | 2 +- .../meteorclient/gui/screens/ModuleScreen.java | 17 +++++++++-------- .../assets/meteor-client/language/en_us.json | 8 ++++++++ 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java b/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java index 3f5c6678fa..638e57c6d2 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java @@ -112,7 +112,7 @@ private void group(WVerticalList list, SettingGroup group, String filter, List setting : group) { - String settingKey = groupKey + "." + setting.name; + String settingKey = baseKey + "." + group.name + "." + setting.name; String title = MeteorTranslations.translate(settingKey, () -> Utils.nameToTitle(setting.name)); if (!Strings.CI.contains(title, filter) && !Strings.CI.contains(setting.name, filter)) continue; diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/ModuleScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/ModuleScreen.java index 280a0c4261..86a9b7aa01 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/ModuleScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/ModuleScreen.java @@ -23,6 +23,7 @@ import meteordevelopment.meteorclient.gui.widgets.pressable.WFavorite; import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.meteorclient.systems.modules.Modules; +import meteordevelopment.meteorclient.utils.misc.MeteorTranslations; import meteordevelopment.meteorclient.utils.misc.NbtUtils; import meteordevelopment.meteorclient.utils.render.prompts.OkPrompt; import meteordevelopment.orbit.EventHandler; @@ -53,7 +54,7 @@ public void initWidgets() { if (module.addon != null && module.addon != MeteorClient.ADDON) { WHorizontalList addon = add(theme.horizontalList()).expandX().widget(); - addon.add(theme.label("From: ").color(theme.textSecondaryColor())).widget(); + addon.add(theme.label(MeteorTranslations.translate("module.base.from")).color(theme.textSecondaryColor())).widget(); addon.add(theme.label(module.addon.name).color(module.addon.color)).widget(); } @@ -73,12 +74,12 @@ public void initWidgets() { } // Bind - WSection section = add(theme.section("Bind", true)).expandX().widget(); + WSection section = add(theme.section(MeteorTranslations.translate("module.base.bind"), true)).expandX().widget(); // Keybind WHorizontalList bind = section.add(theme.horizontalList()).expandX().widget(); - bind.add(theme.label("Bind: ")); + bind.add(theme.label(MeteorTranslations.translate("module.base.bind.bind"))); keybind = bind.add(theme.keybind(module.keybind)).expandX().widget(); keybind.actionOnSet = () -> Modules.get().setModuleToBind(module); @@ -89,14 +90,14 @@ public void initWidgets() { // Toggle on bind release WHorizontalList tobr = section.add(theme.horizontalList()).widget(); - tobr.add(theme.label("Toggle on bind release: ")); + tobr.add(theme.label(MeteorTranslations.translate("module.base.bind.toggle-on-release"))); WCheckbox tobrC = tobr.add(theme.checkbox(module.toggleOnBindRelease)).widget(); tobrC.action = () -> module.toggleOnBindRelease = tobrC.checked; // Chat feedback WHorizontalList cf = section.add(theme.horizontalList()).widget(); - cf.add(theme.label("Chat Feedback: ")); + cf.add(theme.label(MeteorTranslations.translate("module.base.bind.chat-feedback"))); WCheckbox cfC = cf.add(theme.checkbox(module.chatFeedback)).widget(); cfC.action = () -> module.chatFeedback = cfC.checked; @@ -106,7 +107,7 @@ public void initWidgets() { WHorizontalList bottom = add(theme.horizontalList()).expandX().widget(); // Active - bottom.add(theme.label("Active: ")); + bottom.add(theme.label(MeteorTranslations.translate("module.base.active"))); active = bottom.add(theme.checkbox(module.isActive())).expandCellX().widget(); active.action = () -> { if (module.isActive() != active.checked) module.toggle(); @@ -126,11 +127,11 @@ public void initWidgets() { .show(); } }; - copy.tooltip = "Copy config"; + copy.tooltip = MeteorTranslations.translate("module.base.copy-config"); WButton paste = sharing.add(theme.button(GuiRenderer.PASTE)).widget(); paste.action = this::fromClipboard; - paste.tooltip = "Paste config"; + paste.tooltip = MeteorTranslations.translate("module.base.paste-config"); } @Override diff --git a/src/main/resources/assets/meteor-client/language/en_us.json b/src/main/resources/assets/meteor-client/language/en_us.json index 84039104d4..26783b8dd9 100644 --- a/src/main/resources/assets/meteor-client/language/en_us.json +++ b/src/main/resources/assets/meteor-client/language/en_us.json @@ -80,6 +80,14 @@ "category.misc": "Misc", "module.base.general": "General", + "module.base.bind": "Bind", + "module.base.bind.bind": "Bind: ", + "module.base.bind.toggle-on-release": "Toggle on bind release: ", + "module.base.bind.chat-feedback": "Chat Feedback: ", + "module.base.active": "Active: ", + "module.base.copy-config": "Copy config", + "module.base.paste-config": "Paste config", + "module.base.from": "From: ", "module.air-jump": "Air Jump", "module.air-jump.description": "Lets you jump in the air.", From 7801131091d5d6333a963cc20a7c7c85af8a46a4 Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:57:39 -0500 Subject: [PATCH 32/52] remove empty descriptions --- .../assets/meteor-client/language/en_us.json | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/src/main/resources/assets/meteor-client/language/en_us.json b/src/main/resources/assets/meteor-client/language/en_us.json index 26783b8dd9..9a803fd151 100644 --- a/src/main/resources/assets/meteor-client/language/en_us.json +++ b/src/main/resources/assets/meteor-client/language/en_us.json @@ -976,11 +976,11 @@ "module.hand-view.off-hand.rotation.description": "The rotation of your off hand.", "module.hand-view.arm": "Arm", "module.hand-view.arm.scale": "Scale", - "module.hand-view.arm.scale.description": "", + "module.hand-view.arm.position": "Position", - "module.hand-view.arm.position.description": "", + "module.hand-view.arm.rotation": "Rotation", - "module.hand-view.arm.rotation.description": "", + "module.instant-rebreak": "Instant Rebreak", "module.instant-rebreak.description": "Instantly re-breaks blocks in the same position.", @@ -1654,7 +1654,7 @@ "module.flamethrower.general.target-babies": "Target Babies", "module.flamethrower.general.target-babies.description": "If checked babies will also be killed.", "module.flamethrower.general.tick-interval": "Tick Interval", - "module.flamethrower.general.tick-interval.description": "", + "module.flamethrower.general.rotate": "Rotate", "module.flamethrower.general.rotate.description": "Automatically faces towards the animal roasted.", "module.flamethrower.general.entities": "Entities", @@ -2004,37 +2004,37 @@ "module.notebot.general.check-noteblocks-again-delay.description": "How much delay should be between end of tuning and checking again", "module.notebot.note-map": "Note Map", "module.notebot.note-map.Harp": "Harp", - "module.notebot.note-map.Harp.description": "", + "module.notebot.note-map.Basedrum": "Basedrum", - "module.notebot.note-map.Basedrum.description": "", + "module.notebot.note-map.Snare": "Snare", - "module.notebot.note-map.Snare.description": "", + "module.notebot.note-map.Hat": "Hat", - "module.notebot.note-map.Hat.description": "", + "module.notebot.note-map.Bass": "Bass", - "module.notebot.note-map.Bass.description": "", + "module.notebot.note-map.Flute": "Flute", - "module.notebot.note-map.Flute.description": "", + "module.notebot.note-map.Bell": "Bell", - "module.notebot.note-map.Bell.description": "", + "module.notebot.note-map.Guitar": "Guitar", - "module.notebot.note-map.Guitar.description": "", + "module.notebot.note-map.Chime": "Chime", - "module.notebot.note-map.Chime.description": "", + "module.notebot.note-map.Xylophone": "Xylophone", - "module.notebot.note-map.Xylophone.description": "", + "module.notebot.note-map.IronXylophone": "IronXylophone", - "module.notebot.note-map.IronXylophone.description": "", + "module.notebot.note-map.CowBell": "CowBell", - "module.notebot.note-map.CowBell.description": "", + "module.notebot.note-map.Didgeridoo": "Didgeridoo", - "module.notebot.note-map.Didgeridoo.description": "", + "module.notebot.note-map.Bit": "Bit", - "module.notebot.note-map.Bit.description": "", + "module.notebot.note-map.Banjo": "Banjo", - "module.notebot.note-map.Banjo.description": "", + "module.notebot.note-map.Pling": "Pling", - "module.notebot.note-map.Pling.description": "", + "module.notebot.render": "Render", "module.notebot.render.render-text": "Render Text", "module.notebot.render.render-text.description": "Whether or not to render the text above noteblocks.", @@ -2657,11 +2657,11 @@ "module.elytra-fly.general.vertical-speed": "Vertical Speed", "module.elytra-fly.general.vertical-speed.description": "How fast you go up and down.", "module.elytra-fly.general.acceleration": "Acceleration", - "module.elytra-fly.general.acceleration.description": "", + "module.elytra-fly.general.acceleration-step": "Acceleration Step", - "module.elytra-fly.general.acceleration-step.description": "", + "module.elytra-fly.general.acceleration-start": "Acceleration Start", - "module.elytra-fly.general.acceleration-start.description": "", + "module.elytra-fly.general.stop-in-water": "Stop In Water", "module.elytra-fly.general.stop-in-water.description": "Stops flying in water.", "module.elytra-fly.general.no-unloaded-chunks": "No Unloaded Chunks", @@ -3059,7 +3059,7 @@ "module.speed-mine": "Speed Mine", "module.speed-mine.description": "Allows you to quickly mine blocks.", "module.speed-mine.general.mode": "Mode", - "module.speed-mine.general.mode.description": "", + "module.speed-mine.general.blocks": "Blocks", "module.speed-mine.general.blocks.description": "Selected blocks.", "module.speed-mine.general.blocks-filter": "Blocks Filter", From 6ffa4a8e86d55b2d409ad6281e863e5a91ab386d Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Sun, 4 Jan 2026 01:59:54 -0500 Subject: [PATCH 33/52] dont load empty entries in lang --- .../meteorclient/utils/misc/MeteorTranslations.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java index bc86976ad2..ca8ffabd18 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java @@ -81,6 +81,7 @@ public static void loadLanguage(String languageCode) { // noinspection unchecked Object2ObjectOpenHashMap map = GSON.fromJson(new InputStreamReader(stream, StandardCharsets.UTF_8), Object2ObjectOpenHashMap.class); + map.values().removeIf(String::isEmpty); languageMap.putAll(map); MeteorClient.LOG.info("Loaded language {} from addon {}", languageCode, addon.name); From 320ccadddf6e8bf8c2b433c3f6b3108ce4762d09 Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Sun, 4 Jan 2026 02:03:34 -0500 Subject: [PATCH 34/52] support renaming settinggroups without losing data --- .../meteorclient/settings/SettingGroup.java | 8 ++++++++ .../meteordevelopment/meteorclient/settings/Settings.java | 5 +++++ 2 files changed, 13 insertions(+) diff --git a/src/main/java/meteordevelopment/meteorclient/settings/SettingGroup.java b/src/main/java/meteordevelopment/meteorclient/settings/SettingGroup.java index 49b4d121c9..dfa00a5d44 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/SettingGroup.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/SettingGroup.java @@ -5,11 +5,13 @@ package meteordevelopment.meteorclient.settings; +import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.misc.ISerializable; import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtElement; import net.minecraft.nbt.NbtList; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Iterator; @@ -18,6 +20,7 @@ public class SettingGroup implements ISerializable, Iterable> { public final String name; public boolean sectionExpanded; + public @Nullable String oldName; final List> settings = new ArrayList<>(1); @@ -51,6 +54,11 @@ public boolean wasChanged() { return false; } + public SettingGroup renamedFrom(String oldName) { + this.oldName = Utils.titleToName(oldName); + return this; + } + @Override public @NotNull Iterator> iterator() { return settings.iterator(); diff --git a/src/main/java/meteordevelopment/meteorclient/settings/Settings.java b/src/main/java/meteordevelopment/meteorclient/settings/Settings.java index c3a1a8a74b..36e054efa2 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/Settings.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/Settings.java @@ -21,6 +21,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Objects; public class Settings implements ISerializable, Iterable { private SettingGroup defaultGroup; @@ -82,6 +83,10 @@ public SettingGroup getGroup(String name) { if (sg.name.equals(name)) return sg; } + for (SettingGroup sg : this) { + if (Objects.equals(sg.oldName, name)) return sg; + } + return null; } From ef654fe26c9d22b5c081cd38ddd75e1e3d32e2ee Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Sun, 4 Jan 2026 02:15:19 -0500 Subject: [PATCH 35/52] rename 'Render' setting groups to 'Visual' --- .../systems/modules/combat/AnchorAura.java | 12 +++---- .../systems/modules/combat/AutoCity.java | 12 +++---- .../systems/modules/combat/AutoTrap.java | 14 ++++---- .../systems/modules/combat/AutoWeb.java | 10 +++--- .../systems/modules/combat/BedAura.java | 12 +++---- .../systems/modules/combat/CrystalAura.java | 32 +++++++++---------- .../systems/modules/combat/HoleFiller.java | 16 +++++----- .../systems/modules/combat/SelfTrap.java | 10 +++--- .../systems/modules/combat/Surround.java | 22 ++++++------- .../systems/modules/movement/SafeWalk.java | 6 ++-- .../systems/modules/movement/Scaffold.java | 10 +++--- .../modules/player/InstantRebreak.java | 10 +++--- .../systems/modules/render/CityESP.java | 8 ++--- .../systems/modules/render/HoleESP.java | 22 ++++++------- .../systems/modules/render/LogoutSpots.java | 12 +++---- .../systems/modules/render/Nametags.java | 14 ++++---- .../systems/modules/render/Trajectories.java | 18 +++++------ .../systems/modules/render/VoidESP.java | 8 ++--- .../modules/render/marker/CuboidMarker.java | 10 +++--- .../modules/render/marker/Sphere2dMarker.java | 12 +++---- .../systems/modules/world/EChestFarmer.java | 12 +++---- .../systems/modules/world/Excavator.java | 8 ++--- .../systems/modules/world/Nuker.java | 20 ++++++------ .../systems/modules/world/PacketMine.java | 14 ++++---- .../systems/modules/world/StashFinder.java | 16 +++++----- .../systems/modules/world/VeinMiner.java | 12 +++---- 26 files changed, 176 insertions(+), 176 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AnchorAura.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AnchorAura.java index 4ec0336548..905ae3e520 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AnchorAura.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AnchorAura.java @@ -42,7 +42,7 @@ public class AnchorAura extends Module { private final SettingGroup sgPlace = settings.createGroup("place"); private final SettingGroup sgBreak = settings.createGroup("break"); private final SettingGroup sgPause = settings.createGroup("pause"); - private final SettingGroup sgRender = settings.createGroup("render"); + private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); // General @@ -187,33 +187,33 @@ public class AnchorAura extends Module { // Render - private final Setting swing = sgRender.add(new BoolSetting.Builder() + private final Setting swing = sgVisual.add(new BoolSetting.Builder() .name("swing") .defaultValue(true) .build() ); - private final Setting render = sgRender.add(new BoolSetting.Builder() + private final Setting render = sgVisual.add(new BoolSetting.Builder() .name("render") .defaultValue(true) .build() ); - private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() + private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .visible(render::get) .build() ); - private final Setting sideColor = sgRender.add(new ColorSetting.Builder() + private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(15, 255, 211, 41)) .visible(() -> render.get() && shapeMode.get().sides()) .build() ); - private final Setting lineColor = sgRender.add(new ColorSetting.Builder() + private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(15, 255, 211)) .visible(() -> render.get() && shapeMode.get().lines()) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoCity.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoCity.java index 8a4293619b..e93829d849 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoCity.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoCity.java @@ -31,7 +31,7 @@ public class AutoCity extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("render"); + private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); private final Setting targetRange = sgGeneral.add(new DoubleSetting.Builder() @@ -85,33 +85,33 @@ public class AutoCity extends Module { // Render - private final Setting swingHand = sgRender.add(new BoolSetting.Builder() + private final Setting swingHand = sgVisual.add(new BoolSetting.Builder() .name("swing-hand") .defaultValue(false) .build() ); - private final Setting renderBlock = sgRender.add(new BoolSetting.Builder() + private final Setting renderBlock = sgVisual.add(new BoolSetting.Builder() .name("render-block") .defaultValue(true) .build() ); - private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() + private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .visible(renderBlock::get) .build() ); - private final Setting sideColor = sgRender.add(new ColorSetting.Builder() + private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(225, 0, 0, 75)) .visible(() -> renderBlock.get() && shapeMode.get().sides()) .build() ); - private final Setting lineColor = sgRender.add(new ColorSetting.Builder() + private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(225, 0, 0, 255)) .visible(() -> renderBlock.get() && shapeMode.get().lines()) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoTrap.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoTrap.java index 1a4c69071d..4b627f6798 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoTrap.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoTrap.java @@ -39,7 +39,7 @@ public class AutoTrap extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("render"); + private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); // General @@ -118,41 +118,41 @@ public class AutoTrap extends Module { // Render - private final Setting render = sgRender.add(new BoolSetting.Builder() + private final Setting render = sgVisual.add(new BoolSetting.Builder() .name("render") .defaultValue(true) .build() ); - private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() + private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .visible(render::get) .build() ); - private final Setting sideColor = sgRender.add(new ColorSetting.Builder() + private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(197, 137, 232, 10)) .visible(() -> render.get() && shapeMode.get().sides()) .build() ); - private final Setting lineColor = sgRender.add(new ColorSetting.Builder() + private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(197, 137, 232)) .visible(() -> render.get() && shapeMode.get().lines()) .build() ); - private final Setting nextSideColor = sgRender.add(new ColorSetting.Builder() + private final Setting nextSideColor = sgVisual.add(new ColorSetting.Builder() .name("next-side-color") .defaultValue(new SettingColor(227, 196, 245, 10)) .visible(() -> render.get() && shapeMode.get().sides()) .build() ); - private final Setting nextLineColor = sgRender.add(new ColorSetting.Builder() + private final Setting nextLineColor = sgVisual.add(new ColorSetting.Builder() .name("next-line-color") .defaultValue(new SettingColor(5, 139, 221)) .visible(() -> render.get() && shapeMode.get().lines()) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoWeb.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoWeb.java index 735f598989..b03b491587 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoWeb.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoWeb.java @@ -31,7 +31,7 @@ public class AutoWeb extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("render"); + private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); private final Setting placeRange = sgGeneral.add(new DoubleSetting.Builder() .name("place-range") @@ -92,27 +92,27 @@ public class AutoWeb extends Module { // Render - private final Setting render = sgRender.add(new BoolSetting.Builder() + private final Setting render = sgVisual.add(new BoolSetting.Builder() .name("render") .defaultValue(true) .build() ); - private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() + private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .visible(render::get) .build() ); - private final Setting sideColor = sgRender.add(new ColorSetting.Builder() + private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(239, 231, 244, 31)) .visible(() -> render.get() && shapeMode.get().sides()) .build() ); - private final Setting lineColor = sgRender.add(new ColorSetting.Builder() + private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(255, 255, 255)) .visible(() -> render.get() && shapeMode.get().lines()) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/BedAura.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/BedAura.java index 930f1fe5b9..0bd9fd556c 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/BedAura.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/BedAura.java @@ -41,7 +41,7 @@ public class BedAura extends Module { private final SettingGroup sgTargeting = settings.createGroup("targeting"); private final SettingGroup sgAutoMove = settings.createGroup("inventory"); private final SettingGroup sgPause = settings.createGroup("pause"); - private final SettingGroup sgRender = settings.createGroup("render"); + private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); // General @@ -142,31 +142,31 @@ public class BedAura extends Module { // Render - private final Setting swing = sgRender.add(new BoolSetting.Builder() + private final Setting swing = sgVisual.add(new BoolSetting.Builder() .name("swing") .defaultValue(true) .build() ); - private final Setting render = sgRender.add(new BoolSetting.Builder() + private final Setting render = sgVisual.add(new BoolSetting.Builder() .name("render") .defaultValue(true) .build() ); - private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() + private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColor = sgRender.add(new ColorSetting.Builder() + private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(15, 255, 211,75)) .build() ); - private final Setting lineColor = sgRender.add(new ColorSetting.Builder() + private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(15, 255, 211)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/CrystalAura.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/CrystalAura.java index 5fb24d3c90..c4357af0c4 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/CrystalAura.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/CrystalAura.java @@ -73,7 +73,7 @@ public class CrystalAura extends Module { private final SettingGroup sgFacePlace = settings.createGroup("face-place"); private final SettingGroup sgBreak = settings.createGroup("break"); private final SettingGroup sgPause = settings.createGroup("pause"); - private final SettingGroup sgRender = settings.createGroup("render"); + private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); // General @@ -382,26 +382,26 @@ public class CrystalAura extends Module { // Render - public final Setting swingMode = sgRender.add(new EnumSetting.Builder() + public final Setting swingMode = sgVisual.add(new EnumSetting.Builder() .name("swing-mode") .defaultValue(SwingMode.Both) .build() ); - private final Setting renderMode = sgRender.add(new EnumSetting.Builder() + private final Setting renderMode = sgVisual.add(new EnumSetting.Builder() .name("render-mode") .defaultValue(RenderMode.Normal) .build() ); - private final Setting renderPlace = sgRender.add(new BoolSetting.Builder() + private final Setting renderPlace = sgVisual.add(new BoolSetting.Builder() .name("render-place") .defaultValue(true) .visible(() -> renderMode.get() == RenderMode.Normal) .build() ); - private final Setting placeRenderTime = sgRender.add(new IntSetting.Builder() + private final Setting placeRenderTime = sgVisual.add(new IntSetting.Builder() .name("place-time") .defaultValue(10) .min(0) @@ -410,14 +410,14 @@ public class CrystalAura extends Module { .build() ); - private final Setting renderBreak = sgRender.add(new BoolSetting.Builder() + private final Setting renderBreak = sgVisual.add(new BoolSetting.Builder() .name("render-break") .defaultValue(false) .visible(() -> renderMode.get() == RenderMode.Normal) .build() ); - private final Setting breakRenderTime = sgRender.add(new IntSetting.Builder() + private final Setting breakRenderTime = sgVisual.add(new IntSetting.Builder() .name("break-time") .defaultValue(13) .min(0) @@ -426,7 +426,7 @@ public class CrystalAura extends Module { .build() ); - private final Setting smoothness = sgRender.add(new IntSetting.Builder() + private final Setting smoothness = sgVisual.add(new IntSetting.Builder() .name("smoothness") .defaultValue(10) .min(0) @@ -435,7 +435,7 @@ public class CrystalAura extends Module { .build() ); - private final Setting height = sgRender.add(new DoubleSetting.Builder() + private final Setting height = sgVisual.add(new DoubleSetting.Builder() .name("height") .defaultValue(0.7) .min(0) @@ -444,7 +444,7 @@ public class CrystalAura extends Module { .build() ); - private final Setting renderTime = sgRender.add(new IntSetting.Builder() + private final Setting renderTime = sgVisual.add(new IntSetting.Builder() .name("render-time") .defaultValue(10) .min(0) @@ -453,42 +453,42 @@ public class CrystalAura extends Module { .build() ); - private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() + private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .visible(() -> renderMode.get() != RenderMode.None) .build() ); - private final Setting sideColor = sgRender.add(new ColorSetting.Builder() + private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(255, 255, 255, 45)) .visible(() -> shapeMode.get().sides() && renderMode.get() != RenderMode.None) .build() ); - private final Setting lineColor = sgRender.add(new ColorSetting.Builder() + private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(255, 255, 255)) .visible(() -> shapeMode.get().lines() && renderMode.get() != RenderMode.None) .build() ); - private final Setting renderDamageText = sgRender.add(new BoolSetting.Builder() + private final Setting renderDamageText = sgVisual.add(new BoolSetting.Builder() .name("damage") .defaultValue(true) .visible(() -> renderMode.get() != RenderMode.None) .build() ); - private final Setting damageColor = sgRender.add(new ColorSetting.Builder() + private final Setting damageColor = sgVisual.add(new ColorSetting.Builder() .name("damage-color") .defaultValue(new SettingColor(255, 255, 255)) .visible(() -> renderMode.get() != RenderMode.None && renderDamageText.get()) .build() ); - private final Setting damageTextScale = sgRender.add(new DoubleSetting.Builder() + private final Setting damageTextScale = sgVisual.add(new DoubleSetting.Builder() .name("damage-scale") .defaultValue(1.25) .min(1) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/HoleFiller.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/HoleFiller.java index 987be62c9d..6c947398c1 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/HoleFiller.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/HoleFiller.java @@ -40,7 +40,7 @@ public class HoleFiller extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); private final SettingGroup sgSmart = settings.createGroup("smart"); - private final SettingGroup sgRender = settings.createGroup("render"); + private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); private final Setting> blocks = sgGeneral.add(new BlockListSetting.Builder() .name("blocks") @@ -170,47 +170,47 @@ public class HoleFiller extends Module { // Render - private final Setting swing = sgRender.add(new BoolSetting.Builder() + private final Setting swing = sgVisual.add(new BoolSetting.Builder() .name("swing") .defaultValue(true) .build() ); - private final Setting render = sgRender.add(new BoolSetting.Builder() + private final Setting render = sgVisual.add(new BoolSetting.Builder() .name("render") .defaultValue(true) .build() ); - private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() + private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .visible(render::get) .build() ); - private final Setting sideColor = sgRender.add(new ColorSetting.Builder() + private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(197, 137, 232, 10)) .visible(() -> render.get() && shapeMode.get().sides()) .build() ); - private final Setting lineColor = sgRender.add(new ColorSetting.Builder() + private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(197, 137, 232)) .visible(() -> render.get() && shapeMode.get().lines()) .build() ); - private final Setting nextSideColor = sgRender.add(new ColorSetting.Builder() + private final Setting nextSideColor = sgVisual.add(new ColorSetting.Builder() .name("next-side-color") .defaultValue(new SettingColor(227, 196, 245, 10)) .visible(() -> render.get() && shapeMode.get().sides()) .build() ); - private final Setting nextLineColor = sgRender.add(new ColorSetting.Builder() + private final Setting nextLineColor = sgVisual.add(new ColorSetting.Builder() .name("next-line-color") .defaultValue(new SettingColor(5, 139, 221)) .visible(() -> render.get() && shapeMode.get().lines()) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/SelfTrap.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/SelfTrap.java index f1affec325..55bfde039d 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/SelfTrap.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/SelfTrap.java @@ -39,7 +39,7 @@ public enum BottomMode { } private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("render"); + private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); // General @@ -87,25 +87,25 @@ public enum BottomMode { // Render - private final Setting render = sgRender.add(new BoolSetting.Builder() + private final Setting render = sgVisual.add(new BoolSetting.Builder() .name("render") .defaultValue(true) .build() ); - private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() + private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColor = sgRender.add(new ColorSetting.Builder() + private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(204, 0, 0, 10)) .build() ); - private final Setting lineColor = sgRender.add(new ColorSetting.Builder() + private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(204, 0, 0, 255)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Surround.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Surround.java index a511033975..f1a800fe8e 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Surround.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Surround.java @@ -45,7 +45,7 @@ public class Surround extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); private final SettingGroup sgToggles = settings.createGroup("toggles"); - private final SettingGroup sgRender = settings.createGroup("render"); + private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); // General @@ -147,66 +147,66 @@ public class Surround extends Module { // Render - private final Setting swing = sgRender.add(new BoolSetting.Builder() + private final Setting swing = sgVisual.add(new BoolSetting.Builder() .name("swing") .defaultValue(true) .build() ); - private final Setting render = sgRender.add(new BoolSetting.Builder() + private final Setting render = sgVisual.add(new BoolSetting.Builder() .name("render") .defaultValue(true) .build() ); - private final Setting renderBelow = sgRender.add(new BoolSetting.Builder() + private final Setting renderBelow = sgVisual.add(new BoolSetting.Builder() .name("below") .defaultValue(false) .build() ); - private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() + private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting safeSideColor = sgRender.add(new ColorSetting.Builder() + private final Setting safeSideColor = sgVisual.add(new ColorSetting.Builder() .name("safe-side-color") .defaultValue(new SettingColor(13, 255, 0, 0)) .visible(() -> render.get() && shapeMode.get() != ShapeMode.Lines) .build() ); - private final Setting safeLineColor = sgRender.add(new ColorSetting.Builder() + private final Setting safeLineColor = sgVisual.add(new ColorSetting.Builder() .name("safe-line-color") .defaultValue(new SettingColor(13, 255, 0, 0)) .visible(() -> render.get() && shapeMode.get() != ShapeMode.Sides) .build() ); - private final Setting normalSideColor = sgRender.add(new ColorSetting.Builder() + private final Setting normalSideColor = sgVisual.add(new ColorSetting.Builder() .name("normal-side-color") .defaultValue(new SettingColor(0, 255, 238, 12)) .visible(() -> render.get() && shapeMode.get() != ShapeMode.Lines) .build() ); - private final Setting normalLineColor = sgRender.add(new ColorSetting.Builder() + private final Setting normalLineColor = sgVisual.add(new ColorSetting.Builder() .name("normal-line-color") .defaultValue(new SettingColor(0, 255, 238, 100)) .visible(() -> render.get() && shapeMode.get() != ShapeMode.Sides) .build() ); - private final Setting unsafeSideColor = sgRender.add(new ColorSetting.Builder() + private final Setting unsafeSideColor = sgVisual.add(new ColorSetting.Builder() .name("unsafe-side-color") .defaultValue(new SettingColor(204, 0, 0, 12)) .visible(() -> render.get() && shapeMode.get() != ShapeMode.Lines) .build() ); - private final Setting unsafeLineColor = sgRender.add(new ColorSetting.Builder() + private final Setting unsafeLineColor = sgVisual.add(new ColorSetting.Builder() .name("unsafe-line-color") .defaultValue(new SettingColor(204, 0, 0, 100)) .visible(() -> render.get() && shapeMode.get() != ShapeMode.Sides) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/SafeWalk.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/SafeWalk.java index 1fd037e96f..b7180f2d6f 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/SafeWalk.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/SafeWalk.java @@ -23,7 +23,7 @@ public class SafeWalk extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("render"); + private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); private final Setting fallDistance = sgGeneral.add(new IntSetting.Builder() .name("minimum-fall-distance") @@ -61,14 +61,14 @@ public class SafeWalk extends Module { .build() ); - private final Setting renderEdgeDistance = sgRender.add(new BoolSetting.Builder() + private final Setting renderEdgeDistance = sgVisual.add(new BoolSetting.Builder() .name("render") .defaultValue(false) .visible(sneak::get) .build() ); - private final Setting renderPlayerBox = sgRender.add(new BoolSetting.Builder() + private final Setting renderPlayerBox = sgVisual.add(new BoolSetting.Builder() .name("render-player-box") .defaultValue(false) .visible(() -> sneak.get() && renderEdgeDistance.get()) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Scaffold.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Scaffold.java index 52eacc7702..b847ece85c 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Scaffold.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Scaffold.java @@ -32,7 +32,7 @@ public class Scaffold extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("render"); + private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); private final Setting> blocks = sgGeneral.add(new BlockListSetting.Builder() .name("blocks") @@ -134,27 +134,27 @@ public class Scaffold extends Module { // Render - private final Setting render = sgRender.add(new BoolSetting.Builder() + private final Setting render = sgVisual.add(new BoolSetting.Builder() .name("render") .defaultValue(true) .build() ); - private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() + private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .visible(render::get) .build() ); - private final Setting sideColor = sgRender.add(new ColorSetting.Builder() + private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(197, 137, 232, 10)) .visible(render::get) .build() ); - private final Setting lineColor = sgRender.add(new ColorSetting.Builder() + private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(197, 137, 232)) .visible(render::get) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/InstantRebreak.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/InstantRebreak.java index b1785f7ec2..5442400bb7 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/InstantRebreak.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/InstantRebreak.java @@ -25,7 +25,7 @@ public class InstantRebreak extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("render"); + private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); private final Setting tickDelay = sgGeneral.add(new IntSetting.Builder() .name("delay") @@ -49,25 +49,25 @@ public class InstantRebreak extends Module { // Render - private final Setting render = sgRender.add(new BoolSetting.Builder() + private final Setting render = sgVisual.add(new BoolSetting.Builder() .name("render") .defaultValue(true) .build() ); - private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() + private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColor = sgRender.add(new ColorSetting.Builder() + private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(204, 0, 0, 10)) .build() ); - private final Setting lineColor = sgRender.add(new ColorSetting.Builder() + private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(204, 0, 0, 255)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/CityESP.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/CityESP.java index ff809525eb..7d6bd60e00 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/CityESP.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/CityESP.java @@ -23,23 +23,23 @@ import net.minecraft.util.math.BlockPos; public class CityESP extends Module { - private final SettingGroup sgRender = settings.createGroup("render"); + private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); // Render - private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() + private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColor = sgRender.add(new ColorSetting.Builder() + private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(225, 0, 0, 75)) .build() ); - private final Setting lineColor = sgRender.add(new ColorSetting.Builder() + private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(225, 0, 0, 255)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/HoleESP.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/HoleESP.java index db12ec4155..3ff5e7dee5 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/HoleESP.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/HoleESP.java @@ -32,7 +32,7 @@ public class HoleESP extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("render"); + private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); // General @@ -80,62 +80,62 @@ public class HoleESP extends Module { // Render - private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() + private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting height = sgRender.add(new DoubleSetting.Builder() + private final Setting height = sgVisual.add(new DoubleSetting.Builder() .name("height") .defaultValue(0.2) .min(0) .build() ); - private final Setting topQuad = sgRender.add(new BoolSetting.Builder() + private final Setting topQuad = sgVisual.add(new BoolSetting.Builder() .name("top-quad") .defaultValue(true) .build() ); - private final Setting bottomQuad = sgRender.add(new BoolSetting.Builder() + private final Setting bottomQuad = sgVisual.add(new BoolSetting.Builder() .name("bottom-quad") .defaultValue(false) .build() ); - private final Setting bedrockColorTop = sgRender.add(new ColorSetting.Builder() + private final Setting bedrockColorTop = sgVisual.add(new ColorSetting.Builder() .name("bedrock-top") .defaultValue(new SettingColor(100, 255, 0, 200)) .build() ); - private final Setting bedrockColorBottom = sgRender.add(new ColorSetting.Builder() + private final Setting bedrockColorBottom = sgVisual.add(new ColorSetting.Builder() .name("bedrock-bottom") .defaultValue(new SettingColor(100, 255, 0, 0)) .build() ); - private final Setting obsidianColorTop = sgRender.add(new ColorSetting.Builder() + private final Setting obsidianColorTop = sgVisual.add(new ColorSetting.Builder() .name("obsidian-top") .defaultValue(new SettingColor(255, 0, 0, 200)) .build() ); - private final Setting obsidianColorBottom = sgRender.add(new ColorSetting.Builder() + private final Setting obsidianColorBottom = sgVisual.add(new ColorSetting.Builder() .name("obsidian-bottom") .defaultValue(new SettingColor(255, 0, 0, 0)) .build() ); - private final Setting mixedColorTop = sgRender.add(new ColorSetting.Builder() + private final Setting mixedColorTop = sgVisual.add(new ColorSetting.Builder() .name("mixed-top") .defaultValue(new SettingColor(255, 127, 0, 200)) .build() ); - private final Setting mixedColorBottom = sgRender.add(new ColorSetting.Builder() + private final Setting mixedColorBottom = sgVisual.add(new ColorSetting.Builder() .name("mixed-bottom") .defaultValue(new SettingColor(255, 127, 0, 0)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/LogoutSpots.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/LogoutSpots.java index 153c369073..8127116f50 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/LogoutSpots.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/LogoutSpots.java @@ -36,7 +36,7 @@ public class LogoutSpots extends Module { private static final Color RED = new Color(225, 25, 25); private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("render"); + private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); // General @@ -55,31 +55,31 @@ public class LogoutSpots extends Module { // Render - private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() + private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColor = sgRender.add(new ColorSetting.Builder() + private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(255, 0, 255, 55)) .build() ); - private final Setting lineColor = sgRender.add(new ColorSetting.Builder() + private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(255, 0, 255)) .build() ); - private final Setting nameColor = sgRender.add(new ColorSetting.Builder() + private final Setting nameColor = sgVisual.add(new ColorSetting.Builder() .name("name-color") .defaultValue(new SettingColor(255, 255, 255)) .build() ); - private final Setting nameBackgroundColor = sgRender.add(new ColorSetting.Builder() + private final Setting nameBackgroundColor = sgVisual.add(new ColorSetting.Builder() .name("name-background-color") .defaultValue(new SettingColor(0, 0, 0, 75)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Nametags.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Nametags.java index 78944ccd3c..f58bbef73e 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Nametags.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Nametags.java @@ -51,7 +51,7 @@ public class Nametags extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); private final SettingGroup sgPlayers = settings.createGroup("players"); private final SettingGroup sgItems = settings.createGroup("items"); - private final SettingGroup sgRender = settings.createGroup("render"); + private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); // General @@ -218,40 +218,40 @@ public class Nametags extends Module { // Render - private final Setting background = sgRender.add(new ColorSetting.Builder() + private final Setting background = sgVisual.add(new ColorSetting.Builder() .name("background-color") .defaultValue(new SettingColor(0, 0, 0, 75)) .build() ); - private final Setting nameColor = sgRender.add(new ColorSetting.Builder() + private final Setting nameColor = sgVisual.add(new ColorSetting.Builder() .name("name-color") .defaultValue(new SettingColor()) .build() ); - private final Setting pingColor = sgRender.add(new ColorSetting.Builder() + private final Setting pingColor = sgVisual.add(new ColorSetting.Builder() .name("ping-color") .defaultValue(new SettingColor(20, 170, 170)) .visible(displayPing::get) .build() ); - private final Setting gamemodeColor = sgRender.add(new ColorSetting.Builder() + private final Setting gamemodeColor = sgVisual.add(new ColorSetting.Builder() .name("gamemode-color") .defaultValue(new SettingColor(232, 185, 35)) .visible(displayGameMode::get) .build() ); - private final Setting distanceColorMode = sgRender.add(new EnumSetting.Builder() + private final Setting distanceColorMode = sgVisual.add(new EnumSetting.Builder() .name("distance-color-mode") .defaultValue(DistanceColorMode.Gradient) .visible(displayDistance::get) .build() ); - private final Setting distanceColor = sgRender.add(new ColorSetting.Builder() + private final Setting distanceColor = sgVisual.add(new ColorSetting.Builder() .name("distance-color") .defaultValue(new SettingColor(150, 150, 150)) .visible(() -> displayDistance.get() && distanceColorMode.get() == DistanceColorMode.Flat) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Trajectories.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Trajectories.java index 658e2e921c..fd5ffed6e2 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Trajectories.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Trajectories.java @@ -37,7 +37,7 @@ public class Trajectories extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("render"); + private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); // General @@ -82,38 +82,38 @@ public class Trajectories extends Module { // Render - private final Setting ignoreFirstTicks = sgRender.add(new IntSetting.Builder() + private final Setting ignoreFirstTicks = sgVisual.add(new IntSetting.Builder() .name("ignore-rendering-first-ticks") .defaultValue(3) .min(0) .build() ); - private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() + private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColor = sgRender.add(new ColorSetting.Builder() + private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(255, 150, 0, 35)) .build() ); - private final Setting lineColor = sgRender.add(new ColorSetting.Builder() + private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(255, 150, 0)) .build() ); - private final Setting renderPositionBox = sgRender.add(new BoolSetting.Builder() + private final Setting renderPositionBox = sgVisual.add(new BoolSetting.Builder() .name("render-position-boxes") .defaultValue(false) .build() ); - private final Setting positionBoxSize = sgRender.add(new DoubleSetting.Builder() + private final Setting positionBoxSize = sgVisual.add(new DoubleSetting.Builder() .name("position-box-size") .defaultValue(0.02) .sliderRange(0.01, 0.1) @@ -121,14 +121,14 @@ public class Trajectories extends Module { .build() ); - private final Setting positionSideColor = sgRender.add(new ColorSetting.Builder() + private final Setting positionSideColor = sgVisual.add(new ColorSetting.Builder() .name("position-side-color") .defaultValue(new SettingColor(255, 150, 0, 35)) .visible(renderPositionBox::get) .build() ); - private final Setting positionLineColor = sgRender.add(new ColorSetting.Builder() + private final Setting positionLineColor = sgVisual.add(new ColorSetting.Builder() .name("position-line-color") .defaultValue(new SettingColor(255, 150, 0)) .visible(renderPositionBox::get) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/VoidESP.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/VoidESP.java index 561e9052e5..228a2870dc 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/VoidESP.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/VoidESP.java @@ -30,7 +30,7 @@ public class VoidESP extends Module { private static final Direction[] SIDES = {Direction.EAST, Direction.NORTH, Direction.SOUTH, Direction.WEST}; private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("render"); + private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); // General @@ -64,19 +64,19 @@ public class VoidESP extends Module { // Render - private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() + private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColor = sgRender.add(new ColorSetting.Builder() + private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() .name("fill-color") .defaultValue(new SettingColor(225, 25, 25, 50)) .build() ); - private final Setting lineColor = sgRender.add(new ColorSetting.Builder() + private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(225, 25, 255)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/CuboidMarker.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/CuboidMarker.java index e869df4538..02ad8922c7 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/CuboidMarker.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/CuboidMarker.java @@ -20,7 +20,7 @@ public enum Mode { } private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgVisual = settings.createGroup("Visual").renamedFrom("Render"); // General @@ -38,28 +38,28 @@ public enum Mode { // Render - private final Setting mode = sgRender.add(new EnumSetting.Builder() + private final Setting mode = sgVisual.add(new EnumSetting.Builder() .name("mode") .description("What mode to use for this marker.") .defaultValue(Mode.Full) .build() ); - private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() + private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() .name("shape-mode") .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColor = sgRender.add(new ColorSetting.Builder() + private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() .name("side-color") .description("The color of the sides of the blocks being rendered.") .defaultValue(new SettingColor(0, 100, 255, 50)) .build() ); - private final Setting lineColor = sgRender.add(new ColorSetting.Builder() + private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() .name("line-color") .description("The color of the lines of the blocks being rendered.") .defaultValue(new SettingColor(0, 100, 255, 255)) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/Sphere2dMarker.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/Sphere2dMarker.java index 53b57e9a48..f14b5efd51 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/Sphere2dMarker.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/Sphere2dMarker.java @@ -33,7 +33,7 @@ public Block(int x, int y, int z) { public static final String type = "Sphere-2D"; private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgVisual = settings.createGroup("Visual").renamedFrom("Render"); private final SettingGroup sgKeybinding = settings.createGroup("Keybinding"); private final Setting center = sgGeneral.add(new BlockPosSetting.Builder() @@ -65,14 +65,14 @@ public Block(int x, int y, int z) { // Render - private final Setting limitRenderRange = sgRender.add(new BoolSetting.Builder() + private final Setting limitRenderRange = sgVisual.add(new BoolSetting.Builder() .name("limit-render-range") .description("Whether to limit rendering range (useful in very large circles)") .defaultValue(false) .build() ); - private final Setting renderRange = sgRender.add(new IntSetting.Builder() + private final Setting renderRange = sgVisual.add(new IntSetting.Builder() .name("render-range") .description("Rendering range") .defaultValue(10) @@ -82,21 +82,21 @@ public Block(int x, int y, int z) { .build() ); - private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() + private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() .name("shape-mode") .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColor = sgRender.add(new ColorSetting.Builder() + private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() .name("side-color") .description("The color of the sides of the blocks being rendered.") .defaultValue(new SettingColor(0, 100, 255, 50)) .build() ); - private final Setting lineColor = sgRender.add(new ColorSetting.Builder() + private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() .name("line-color") .description("The color of the lines of the blocks being rendered.") .defaultValue(new SettingColor(0, 100, 255, 255)) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/EChestFarmer.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/EChestFarmer.java index 7ee661687a..a30c934f70 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/EChestFarmer.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/EChestFarmer.java @@ -33,7 +33,7 @@ public class EChestFarmer extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("render"); + private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); private final Setting selfToggle = sgGeneral.add(new BoolSetting.Builder() .name("self-toggle") @@ -60,31 +60,31 @@ public class EChestFarmer extends Module { // Render - private final Setting swingHand = sgRender.add(new BoolSetting.Builder() + private final Setting swingHand = sgVisual.add(new BoolSetting.Builder() .name("swing-hand") .defaultValue(true) .build() ); - private final Setting render = sgRender.add(new BoolSetting.Builder() + private final Setting render = sgVisual.add(new BoolSetting.Builder() .name("render") .defaultValue(true) .build() ); - private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() + private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColor = sgRender.add(new ColorSetting.Builder() + private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(204, 0, 0, 50)) .build() ); - private final Setting lineColor = sgRender.add(new ColorSetting.Builder() + private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(204, 0, 0, 255)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Excavator.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Excavator.java index f359176d50..4b613d8e61 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Excavator.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Excavator.java @@ -25,7 +25,7 @@ public class Excavator extends Module { private final IBaritone baritone = BaritoneAPI.getProvider().getPrimaryBaritone(); private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRendering = settings.createGroup("rendering"); + private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("rendering"); // Keybindings private final Setting selectionBind = sgGeneral.add(new KeybindSetting.Builder() @@ -48,19 +48,19 @@ public class Excavator extends Module { ); // Rendering - private final Setting shapeMode = sgRendering.add(new EnumSetting.Builder() + private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColor = sgRendering.add(new ColorSetting.Builder() + private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(255, 255, 255, 50)) .build() ); - private final Setting lineColor = sgRendering.add(new ColorSetting.Builder() + private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(255, 255, 255, 255)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Nuker.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Nuker.java index 481517600a..71f25c356c 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Nuker.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Nuker.java @@ -47,7 +47,7 @@ public class Nuker extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); private final SettingGroup sgWhitelist = settings.createGroup("whitelist"); - private final SettingGroup sgRender = settings.createGroup("render"); + private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); // General @@ -198,57 +198,57 @@ public class Nuker extends Module { // Rendering - private final Setting swing = sgRender.add(new BoolSetting.Builder() + private final Setting swing = sgVisual.add(new BoolSetting.Builder() .name("swing") .defaultValue(true) .build() ); - private final Setting enableRenderBounding = sgRender.add(new BoolSetting.Builder() + private final Setting enableRenderBounding = sgVisual.add(new BoolSetting.Builder() .name("bounding-box") .defaultValue(true) .build() ); - private final Setting shapeModeBox = sgRender.add(new EnumSetting.Builder() + private final Setting shapeModeBox = sgVisual.add(new EnumSetting.Builder() .name("nuke-box-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColorBox = sgRender.add(new ColorSetting.Builder() + private final Setting sideColorBox = sgVisual.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(16,106,144, 100)) .build() ); - private final Setting lineColorBox = sgRender.add(new ColorSetting.Builder() + private final Setting lineColorBox = sgVisual.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(16,106,144, 255)) .build() ); - private final Setting enableRenderBreaking = sgRender.add(new BoolSetting.Builder() + private final Setting enableRenderBreaking = sgVisual.add(new BoolSetting.Builder() .name("broken-blocks") .defaultValue(true) .build() ); - private final Setting shapeModeBreak = sgRender.add(new EnumSetting.Builder() + private final Setting shapeModeBreak = sgVisual.add(new EnumSetting.Builder() .name("nuke-block-mode") .defaultValue(ShapeMode.Both) .visible(enableRenderBreaking::get) .build() ); - private final Setting sideColor = sgRender.add(new ColorSetting.Builder() + private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() .name("breaking-side-color") .defaultValue(new SettingColor(255, 0, 0, 80)) .visible(enableRenderBreaking::get) .build() ); - private final Setting lineColor = sgRender.add(new ColorSetting.Builder() + private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() .name("breaking-line-color") .defaultValue(new SettingColor(255, 0, 0, 255)) .visible(enableRenderBreaking::get) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/PacketMine.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/PacketMine.java index a3209d11db..9837fc5300 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/PacketMine.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/PacketMine.java @@ -35,7 +35,7 @@ public class PacketMine extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("render"); + private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); // General @@ -73,37 +73,37 @@ public class PacketMine extends Module { // Render - private final Setting render = sgRender.add(new BoolSetting.Builder() + private final Setting render = sgVisual.add(new BoolSetting.Builder() .name("render") .defaultValue(true) .build() ); - private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() + private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting readySideColor = sgRender.add(new ColorSetting.Builder() + private final Setting readySideColor = sgVisual.add(new ColorSetting.Builder() .name("ready-side-color") .defaultValue(new SettingColor(0, 204, 0, 10)) .build() ); - private final Setting readyLineColor = sgRender.add(new ColorSetting.Builder() + private final Setting readyLineColor = sgVisual.add(new ColorSetting.Builder() .name("ready-line-color") .defaultValue(new SettingColor(0, 204, 0, 255)) .build() ); - private final Setting sideColor = sgRender.add(new ColorSetting.Builder() + private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(204, 0, 0, 10)) .build() ); - private final Setting lineColor = sgRender.add(new ColorSetting.Builder() + private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(204, 0, 0, 255)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/StashFinder.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/StashFinder.java index 3bc9693430..3cdce03aa7 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/StashFinder.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/StashFinder.java @@ -51,7 +51,7 @@ public class StashFinder extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("render"); + private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); private static final List DEFAULT_SUPPORT_BLOCK_BLACKLIST = List.of( Blocks.OXIDIZED_COPPER, @@ -105,20 +105,20 @@ public class StashFinder extends Module { .build() ); - private final Setting renderTracer = sgRender.add(new BoolSetting.Builder() + private final Setting renderTracer = sgVisual.add(new BoolSetting.Builder() .name("render-tracer") .defaultValue(true) .build() ); - private final Setting traceColor = sgRender.add(new ColorSetting.Builder() + private final Setting traceColor = sgVisual.add(new ColorSetting.Builder() .name("tracer-color") .defaultValue(new SettingColor(255, 215, 0, 255)) .visible(renderTracer::get) .build() ); - private final Setting traceArrivalDistance = sgRender.add(new IntSetting.Builder() + private final Setting traceArrivalDistance = sgVisual.add(new IntSetting.Builder() .name("tracer-hide-at-distance") .defaultValue(16) .min(1) @@ -128,7 +128,7 @@ public class StashFinder extends Module { .build() ); - private final Setting traceMaxDistance = sgRender.add(new IntSetting.Builder() + private final Setting traceMaxDistance = sgVisual.add(new IntSetting.Builder() .name("tracer-max-distance") .defaultValue(2000) .min(10) @@ -138,20 +138,20 @@ public class StashFinder extends Module { .build() ); - private final Setting renderChunkColumn = sgRender.add(new BoolSetting.Builder() + private final Setting renderChunkColumn = sgVisual.add(new BoolSetting.Builder() .name("render-chunk-column") .defaultValue(false) .build() ); - private final Setting traceColumnColor = sgRender.add(new ColorSetting.Builder() + private final Setting traceColumnColor = sgVisual.add(new ColorSetting.Builder() .name("chunk-column-color") .defaultValue(new SettingColor(255, 215, 0, 100)) .visible(renderChunkColumn::get) .build() ); - private final Setting clearTracesBind = sgRender.add(new KeybindSetting.Builder() + private final Setting clearTracesBind = sgVisual.add(new KeybindSetting.Builder() .name("clear-traces-bind") .defaultValue(Keybind.none()) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/VeinMiner.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/VeinMiner.java index ef7a7ac268..8d13147fe3 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/VeinMiner.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/VeinMiner.java @@ -34,7 +34,7 @@ public class VeinMiner extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("render"); + private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); private final Set blockNeighbours = Set.of( new Vec3i(1, -1, 1), new Vec3i(0, -1, 1), new Vec3i(-1, -1, 1), @@ -88,31 +88,31 @@ public class VeinMiner extends Module { // Render - private final Setting swingHand = sgRender.add(new BoolSetting.Builder() + private final Setting swingHand = sgVisual.add(new BoolSetting.Builder() .name("swing-hand") .defaultValue(true) .build() ); - private final Setting render = sgRender.add(new BoolSetting.Builder() + private final Setting render = sgVisual.add(new BoolSetting.Builder() .name("render") .defaultValue(true) .build() ); - private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() + private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColor = sgRender.add(new ColorSetting.Builder() + private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(204, 0, 0, 10)) .build() ); - private final Setting lineColor = sgRender.add(new ColorSetting.Builder() + private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(204, 0, 0, 255)) .build() From b28b0496e051ebca60671546d060cd769b7201a5 Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Mon, 5 Jan 2026 19:22:01 -0500 Subject: [PATCH 36/52] dont put setting groups in their module's namespace --- .../gui/DefaultSettingsWidgetFactory.java | 3 +- .../meteorclient/settings/SettingGroup.java | 2 + .../assets/meteor-client/language/en_us.json | 184 +++++++++--------- 3 files changed, 90 insertions(+), 99 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java b/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java index 638e57c6d2..6aa01dbb88 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java @@ -103,8 +103,7 @@ protected double settingTitleTopMargin() { } private void group(WVerticalList list, SettingGroup group, String filter, List removeInfoList, String baseKey) { - String groupKey = group.name.equals("general") ? "module.base.general" : baseKey + "." + group.name; - WSection section = list.add(theme.section(MeteorTranslations.translate(groupKey, group.name), group.sectionExpanded)).expandX().widget(); + WSection section = list.add(theme.section(MeteorTranslations.translate(group.translationKey), group.sectionExpanded)).expandX().widget(); section.action = () -> group.sectionExpanded = section.isExpanded(); WTable table = section.add(theme.table()).expandX().widget(); diff --git a/src/main/java/meteordevelopment/meteorclient/settings/SettingGroup.java b/src/main/java/meteordevelopment/meteorclient/settings/SettingGroup.java index dfa00a5d44..b2fe870d3a 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/SettingGroup.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/SettingGroup.java @@ -19,6 +19,7 @@ public class SettingGroup implements ISerializable, Iterable> { public final String name; + public final String translationKey; public boolean sectionExpanded; public @Nullable String oldName; @@ -26,6 +27,7 @@ public class SettingGroup implements ISerializable, Iterable Date: Mon, 5 Jan 2026 19:22:11 -0500 Subject: [PATCH 37/52] Revert "rename 'Render' setting groups to 'Visual'" This reverts commit c6f36cf3119487bd0da6102e215f6640364ab692. --- .../systems/modules/combat/AnchorAura.java | 12 +++---- .../systems/modules/combat/AutoCity.java | 12 +++---- .../systems/modules/combat/AutoTrap.java | 14 ++++---- .../systems/modules/combat/AutoWeb.java | 10 +++--- .../systems/modules/combat/BedAura.java | 12 +++---- .../systems/modules/combat/CrystalAura.java | 32 +++++++++---------- .../systems/modules/combat/HoleFiller.java | 16 +++++----- .../systems/modules/combat/SelfTrap.java | 10 +++--- .../systems/modules/combat/Surround.java | 22 ++++++------- .../systems/modules/movement/SafeWalk.java | 6 ++-- .../systems/modules/movement/Scaffold.java | 10 +++--- .../modules/player/InstantRebreak.java | 10 +++--- .../systems/modules/render/CityESP.java | 8 ++--- .../systems/modules/render/HoleESP.java | 22 ++++++------- .../systems/modules/render/LogoutSpots.java | 12 +++---- .../systems/modules/render/Nametags.java | 14 ++++---- .../systems/modules/render/Trajectories.java | 18 +++++------ .../systems/modules/render/VoidESP.java | 8 ++--- .../modules/render/marker/CuboidMarker.java | 10 +++--- .../modules/render/marker/Sphere2dMarker.java | 12 +++---- .../systems/modules/world/EChestFarmer.java | 12 +++---- .../systems/modules/world/Excavator.java | 8 ++--- .../systems/modules/world/Nuker.java | 20 ++++++------ .../systems/modules/world/PacketMine.java | 14 ++++---- .../systems/modules/world/StashFinder.java | 16 +++++----- .../systems/modules/world/VeinMiner.java | 12 +++---- 26 files changed, 176 insertions(+), 176 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AnchorAura.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AnchorAura.java index 905ae3e520..4ec0336548 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AnchorAura.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AnchorAura.java @@ -42,7 +42,7 @@ public class AnchorAura extends Module { private final SettingGroup sgPlace = settings.createGroup("place"); private final SettingGroup sgBreak = settings.createGroup("break"); private final SettingGroup sgPause = settings.createGroup("pause"); - private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); + private final SettingGroup sgRender = settings.createGroup("render"); // General @@ -187,33 +187,33 @@ public class AnchorAura extends Module { // Render - private final Setting swing = sgVisual.add(new BoolSetting.Builder() + private final Setting swing = sgRender.add(new BoolSetting.Builder() .name("swing") .defaultValue(true) .build() ); - private final Setting render = sgVisual.add(new BoolSetting.Builder() + private final Setting render = sgRender.add(new BoolSetting.Builder() .name("render") .defaultValue(true) .build() ); - private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() + private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .visible(render::get) .build() ); - private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(15, 255, 211, 41)) .visible(() -> render.get() && shapeMode.get().sides()) .build() ); - private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(15, 255, 211)) .visible(() -> render.get() && shapeMode.get().lines()) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoCity.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoCity.java index e93829d849..8a4293619b 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoCity.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoCity.java @@ -31,7 +31,7 @@ public class AutoCity extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); + private final SettingGroup sgRender = settings.createGroup("render"); private final Setting targetRange = sgGeneral.add(new DoubleSetting.Builder() @@ -85,33 +85,33 @@ public class AutoCity extends Module { // Render - private final Setting swingHand = sgVisual.add(new BoolSetting.Builder() + private final Setting swingHand = sgRender.add(new BoolSetting.Builder() .name("swing-hand") .defaultValue(false) .build() ); - private final Setting renderBlock = sgVisual.add(new BoolSetting.Builder() + private final Setting renderBlock = sgRender.add(new BoolSetting.Builder() .name("render-block") .defaultValue(true) .build() ); - private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() + private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .visible(renderBlock::get) .build() ); - private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(225, 0, 0, 75)) .visible(() -> renderBlock.get() && shapeMode.get().sides()) .build() ); - private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(225, 0, 0, 255)) .visible(() -> renderBlock.get() && shapeMode.get().lines()) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoTrap.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoTrap.java index 4b627f6798..1a4c69071d 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoTrap.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoTrap.java @@ -39,7 +39,7 @@ public class AutoTrap extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); + private final SettingGroup sgRender = settings.createGroup("render"); // General @@ -118,41 +118,41 @@ public class AutoTrap extends Module { // Render - private final Setting render = sgVisual.add(new BoolSetting.Builder() + private final Setting render = sgRender.add(new BoolSetting.Builder() .name("render") .defaultValue(true) .build() ); - private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() + private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .visible(render::get) .build() ); - private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(197, 137, 232, 10)) .visible(() -> render.get() && shapeMode.get().sides()) .build() ); - private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(197, 137, 232)) .visible(() -> render.get() && shapeMode.get().lines()) .build() ); - private final Setting nextSideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting nextSideColor = sgRender.add(new ColorSetting.Builder() .name("next-side-color") .defaultValue(new SettingColor(227, 196, 245, 10)) .visible(() -> render.get() && shapeMode.get().sides()) .build() ); - private final Setting nextLineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting nextLineColor = sgRender.add(new ColorSetting.Builder() .name("next-line-color") .defaultValue(new SettingColor(5, 139, 221)) .visible(() -> render.get() && shapeMode.get().lines()) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoWeb.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoWeb.java index b03b491587..735f598989 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoWeb.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AutoWeb.java @@ -31,7 +31,7 @@ public class AutoWeb extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); + private final SettingGroup sgRender = settings.createGroup("render"); private final Setting placeRange = sgGeneral.add(new DoubleSetting.Builder() .name("place-range") @@ -92,27 +92,27 @@ public class AutoWeb extends Module { // Render - private final Setting render = sgVisual.add(new BoolSetting.Builder() + private final Setting render = sgRender.add(new BoolSetting.Builder() .name("render") .defaultValue(true) .build() ); - private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() + private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .visible(render::get) .build() ); - private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(239, 231, 244, 31)) .visible(() -> render.get() && shapeMode.get().sides()) .build() ); - private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(255, 255, 255)) .visible(() -> render.get() && shapeMode.get().lines()) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/BedAura.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/BedAura.java index 0bd9fd556c..930f1fe5b9 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/BedAura.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/BedAura.java @@ -41,7 +41,7 @@ public class BedAura extends Module { private final SettingGroup sgTargeting = settings.createGroup("targeting"); private final SettingGroup sgAutoMove = settings.createGroup("inventory"); private final SettingGroup sgPause = settings.createGroup("pause"); - private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); + private final SettingGroup sgRender = settings.createGroup("render"); // General @@ -142,31 +142,31 @@ public class BedAura extends Module { // Render - private final Setting swing = sgVisual.add(new BoolSetting.Builder() + private final Setting swing = sgRender.add(new BoolSetting.Builder() .name("swing") .defaultValue(true) .build() ); - private final Setting render = sgVisual.add(new BoolSetting.Builder() + private final Setting render = sgRender.add(new BoolSetting.Builder() .name("render") .defaultValue(true) .build() ); - private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() + private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(15, 255, 211,75)) .build() ); - private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(15, 255, 211)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/CrystalAura.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/CrystalAura.java index c4357af0c4..5fb24d3c90 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/CrystalAura.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/CrystalAura.java @@ -73,7 +73,7 @@ public class CrystalAura extends Module { private final SettingGroup sgFacePlace = settings.createGroup("face-place"); private final SettingGroup sgBreak = settings.createGroup("break"); private final SettingGroup sgPause = settings.createGroup("pause"); - private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); + private final SettingGroup sgRender = settings.createGroup("render"); // General @@ -382,26 +382,26 @@ public class CrystalAura extends Module { // Render - public final Setting swingMode = sgVisual.add(new EnumSetting.Builder() + public final Setting swingMode = sgRender.add(new EnumSetting.Builder() .name("swing-mode") .defaultValue(SwingMode.Both) .build() ); - private final Setting renderMode = sgVisual.add(new EnumSetting.Builder() + private final Setting renderMode = sgRender.add(new EnumSetting.Builder() .name("render-mode") .defaultValue(RenderMode.Normal) .build() ); - private final Setting renderPlace = sgVisual.add(new BoolSetting.Builder() + private final Setting renderPlace = sgRender.add(new BoolSetting.Builder() .name("render-place") .defaultValue(true) .visible(() -> renderMode.get() == RenderMode.Normal) .build() ); - private final Setting placeRenderTime = sgVisual.add(new IntSetting.Builder() + private final Setting placeRenderTime = sgRender.add(new IntSetting.Builder() .name("place-time") .defaultValue(10) .min(0) @@ -410,14 +410,14 @@ public class CrystalAura extends Module { .build() ); - private final Setting renderBreak = sgVisual.add(new BoolSetting.Builder() + private final Setting renderBreak = sgRender.add(new BoolSetting.Builder() .name("render-break") .defaultValue(false) .visible(() -> renderMode.get() == RenderMode.Normal) .build() ); - private final Setting breakRenderTime = sgVisual.add(new IntSetting.Builder() + private final Setting breakRenderTime = sgRender.add(new IntSetting.Builder() .name("break-time") .defaultValue(13) .min(0) @@ -426,7 +426,7 @@ public class CrystalAura extends Module { .build() ); - private final Setting smoothness = sgVisual.add(new IntSetting.Builder() + private final Setting smoothness = sgRender.add(new IntSetting.Builder() .name("smoothness") .defaultValue(10) .min(0) @@ -435,7 +435,7 @@ public class CrystalAura extends Module { .build() ); - private final Setting height = sgVisual.add(new DoubleSetting.Builder() + private final Setting height = sgRender.add(new DoubleSetting.Builder() .name("height") .defaultValue(0.7) .min(0) @@ -444,7 +444,7 @@ public class CrystalAura extends Module { .build() ); - private final Setting renderTime = sgVisual.add(new IntSetting.Builder() + private final Setting renderTime = sgRender.add(new IntSetting.Builder() .name("render-time") .defaultValue(10) .min(0) @@ -453,42 +453,42 @@ public class CrystalAura extends Module { .build() ); - private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() + private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .visible(() -> renderMode.get() != RenderMode.None) .build() ); - private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(255, 255, 255, 45)) .visible(() -> shapeMode.get().sides() && renderMode.get() != RenderMode.None) .build() ); - private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(255, 255, 255)) .visible(() -> shapeMode.get().lines() && renderMode.get() != RenderMode.None) .build() ); - private final Setting renderDamageText = sgVisual.add(new BoolSetting.Builder() + private final Setting renderDamageText = sgRender.add(new BoolSetting.Builder() .name("damage") .defaultValue(true) .visible(() -> renderMode.get() != RenderMode.None) .build() ); - private final Setting damageColor = sgVisual.add(new ColorSetting.Builder() + private final Setting damageColor = sgRender.add(new ColorSetting.Builder() .name("damage-color") .defaultValue(new SettingColor(255, 255, 255)) .visible(() -> renderMode.get() != RenderMode.None && renderDamageText.get()) .build() ); - private final Setting damageTextScale = sgVisual.add(new DoubleSetting.Builder() + private final Setting damageTextScale = sgRender.add(new DoubleSetting.Builder() .name("damage-scale") .defaultValue(1.25) .min(1) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/HoleFiller.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/HoleFiller.java index 6c947398c1..987be62c9d 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/HoleFiller.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/HoleFiller.java @@ -40,7 +40,7 @@ public class HoleFiller extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); private final SettingGroup sgSmart = settings.createGroup("smart"); - private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); + private final SettingGroup sgRender = settings.createGroup("render"); private final Setting> blocks = sgGeneral.add(new BlockListSetting.Builder() .name("blocks") @@ -170,47 +170,47 @@ public class HoleFiller extends Module { // Render - private final Setting swing = sgVisual.add(new BoolSetting.Builder() + private final Setting swing = sgRender.add(new BoolSetting.Builder() .name("swing") .defaultValue(true) .build() ); - private final Setting render = sgVisual.add(new BoolSetting.Builder() + private final Setting render = sgRender.add(new BoolSetting.Builder() .name("render") .defaultValue(true) .build() ); - private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() + private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .visible(render::get) .build() ); - private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(197, 137, 232, 10)) .visible(() -> render.get() && shapeMode.get().sides()) .build() ); - private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(197, 137, 232)) .visible(() -> render.get() && shapeMode.get().lines()) .build() ); - private final Setting nextSideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting nextSideColor = sgRender.add(new ColorSetting.Builder() .name("next-side-color") .defaultValue(new SettingColor(227, 196, 245, 10)) .visible(() -> render.get() && shapeMode.get().sides()) .build() ); - private final Setting nextLineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting nextLineColor = sgRender.add(new ColorSetting.Builder() .name("next-line-color") .defaultValue(new SettingColor(5, 139, 221)) .visible(() -> render.get() && shapeMode.get().lines()) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/SelfTrap.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/SelfTrap.java index 55bfde039d..f1affec325 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/SelfTrap.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/SelfTrap.java @@ -39,7 +39,7 @@ public enum BottomMode { } private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); + private final SettingGroup sgRender = settings.createGroup("render"); // General @@ -87,25 +87,25 @@ public enum BottomMode { // Render - private final Setting render = sgVisual.add(new BoolSetting.Builder() + private final Setting render = sgRender.add(new BoolSetting.Builder() .name("render") .defaultValue(true) .build() ); - private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() + private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(204, 0, 0, 10)) .build() ); - private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(204, 0, 0, 255)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Surround.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Surround.java index f1a800fe8e..a511033975 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Surround.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/Surround.java @@ -45,7 +45,7 @@ public class Surround extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); private final SettingGroup sgToggles = settings.createGroup("toggles"); - private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); + private final SettingGroup sgRender = settings.createGroup("render"); // General @@ -147,66 +147,66 @@ public class Surround extends Module { // Render - private final Setting swing = sgVisual.add(new BoolSetting.Builder() + private final Setting swing = sgRender.add(new BoolSetting.Builder() .name("swing") .defaultValue(true) .build() ); - private final Setting render = sgVisual.add(new BoolSetting.Builder() + private final Setting render = sgRender.add(new BoolSetting.Builder() .name("render") .defaultValue(true) .build() ); - private final Setting renderBelow = sgVisual.add(new BoolSetting.Builder() + private final Setting renderBelow = sgRender.add(new BoolSetting.Builder() .name("below") .defaultValue(false) .build() ); - private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() + private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting safeSideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting safeSideColor = sgRender.add(new ColorSetting.Builder() .name("safe-side-color") .defaultValue(new SettingColor(13, 255, 0, 0)) .visible(() -> render.get() && shapeMode.get() != ShapeMode.Lines) .build() ); - private final Setting safeLineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting safeLineColor = sgRender.add(new ColorSetting.Builder() .name("safe-line-color") .defaultValue(new SettingColor(13, 255, 0, 0)) .visible(() -> render.get() && shapeMode.get() != ShapeMode.Sides) .build() ); - private final Setting normalSideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting normalSideColor = sgRender.add(new ColorSetting.Builder() .name("normal-side-color") .defaultValue(new SettingColor(0, 255, 238, 12)) .visible(() -> render.get() && shapeMode.get() != ShapeMode.Lines) .build() ); - private final Setting normalLineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting normalLineColor = sgRender.add(new ColorSetting.Builder() .name("normal-line-color") .defaultValue(new SettingColor(0, 255, 238, 100)) .visible(() -> render.get() && shapeMode.get() != ShapeMode.Sides) .build() ); - private final Setting unsafeSideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting unsafeSideColor = sgRender.add(new ColorSetting.Builder() .name("unsafe-side-color") .defaultValue(new SettingColor(204, 0, 0, 12)) .visible(() -> render.get() && shapeMode.get() != ShapeMode.Lines) .build() ); - private final Setting unsafeLineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting unsafeLineColor = sgRender.add(new ColorSetting.Builder() .name("unsafe-line-color") .defaultValue(new SettingColor(204, 0, 0, 100)) .visible(() -> render.get() && shapeMode.get() != ShapeMode.Sides) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/SafeWalk.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/SafeWalk.java index b7180f2d6f..1fd037e96f 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/SafeWalk.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/SafeWalk.java @@ -23,7 +23,7 @@ public class SafeWalk extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); + private final SettingGroup sgRender = settings.createGroup("render"); private final Setting fallDistance = sgGeneral.add(new IntSetting.Builder() .name("minimum-fall-distance") @@ -61,14 +61,14 @@ public class SafeWalk extends Module { .build() ); - private final Setting renderEdgeDistance = sgVisual.add(new BoolSetting.Builder() + private final Setting renderEdgeDistance = sgRender.add(new BoolSetting.Builder() .name("render") .defaultValue(false) .visible(sneak::get) .build() ); - private final Setting renderPlayerBox = sgVisual.add(new BoolSetting.Builder() + private final Setting renderPlayerBox = sgRender.add(new BoolSetting.Builder() .name("render-player-box") .defaultValue(false) .visible(() -> sneak.get() && renderEdgeDistance.get()) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Scaffold.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Scaffold.java index b847ece85c..52eacc7702 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Scaffold.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Scaffold.java @@ -32,7 +32,7 @@ public class Scaffold extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); + private final SettingGroup sgRender = settings.createGroup("render"); private final Setting> blocks = sgGeneral.add(new BlockListSetting.Builder() .name("blocks") @@ -134,27 +134,27 @@ public class Scaffold extends Module { // Render - private final Setting render = sgVisual.add(new BoolSetting.Builder() + private final Setting render = sgRender.add(new BoolSetting.Builder() .name("render") .defaultValue(true) .build() ); - private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() + private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .visible(render::get) .build() ); - private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(197, 137, 232, 10)) .visible(render::get) .build() ); - private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(197, 137, 232)) .visible(render::get) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/InstantRebreak.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/InstantRebreak.java index 5442400bb7..b1785f7ec2 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/InstantRebreak.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/InstantRebreak.java @@ -25,7 +25,7 @@ public class InstantRebreak extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); + private final SettingGroup sgRender = settings.createGroup("render"); private final Setting tickDelay = sgGeneral.add(new IntSetting.Builder() .name("delay") @@ -49,25 +49,25 @@ public class InstantRebreak extends Module { // Render - private final Setting render = sgVisual.add(new BoolSetting.Builder() + private final Setting render = sgRender.add(new BoolSetting.Builder() .name("render") .defaultValue(true) .build() ); - private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() + private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(204, 0, 0, 10)) .build() ); - private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(204, 0, 0, 255)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/CityESP.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/CityESP.java index 7d6bd60e00..ff809525eb 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/CityESP.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/CityESP.java @@ -23,23 +23,23 @@ import net.minecraft.util.math.BlockPos; public class CityESP extends Module { - private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); + private final SettingGroup sgRender = settings.createGroup("render"); // Render - private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() + private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(225, 0, 0, 75)) .build() ); - private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(225, 0, 0, 255)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/HoleESP.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/HoleESP.java index 3ff5e7dee5..db12ec4155 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/HoleESP.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/HoleESP.java @@ -32,7 +32,7 @@ public class HoleESP extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); + private final SettingGroup sgRender = settings.createGroup("render"); // General @@ -80,62 +80,62 @@ public class HoleESP extends Module { // Render - private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() + private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting height = sgVisual.add(new DoubleSetting.Builder() + private final Setting height = sgRender.add(new DoubleSetting.Builder() .name("height") .defaultValue(0.2) .min(0) .build() ); - private final Setting topQuad = sgVisual.add(new BoolSetting.Builder() + private final Setting topQuad = sgRender.add(new BoolSetting.Builder() .name("top-quad") .defaultValue(true) .build() ); - private final Setting bottomQuad = sgVisual.add(new BoolSetting.Builder() + private final Setting bottomQuad = sgRender.add(new BoolSetting.Builder() .name("bottom-quad") .defaultValue(false) .build() ); - private final Setting bedrockColorTop = sgVisual.add(new ColorSetting.Builder() + private final Setting bedrockColorTop = sgRender.add(new ColorSetting.Builder() .name("bedrock-top") .defaultValue(new SettingColor(100, 255, 0, 200)) .build() ); - private final Setting bedrockColorBottom = sgVisual.add(new ColorSetting.Builder() + private final Setting bedrockColorBottom = sgRender.add(new ColorSetting.Builder() .name("bedrock-bottom") .defaultValue(new SettingColor(100, 255, 0, 0)) .build() ); - private final Setting obsidianColorTop = sgVisual.add(new ColorSetting.Builder() + private final Setting obsidianColorTop = sgRender.add(new ColorSetting.Builder() .name("obsidian-top") .defaultValue(new SettingColor(255, 0, 0, 200)) .build() ); - private final Setting obsidianColorBottom = sgVisual.add(new ColorSetting.Builder() + private final Setting obsidianColorBottom = sgRender.add(new ColorSetting.Builder() .name("obsidian-bottom") .defaultValue(new SettingColor(255, 0, 0, 0)) .build() ); - private final Setting mixedColorTop = sgVisual.add(new ColorSetting.Builder() + private final Setting mixedColorTop = sgRender.add(new ColorSetting.Builder() .name("mixed-top") .defaultValue(new SettingColor(255, 127, 0, 200)) .build() ); - private final Setting mixedColorBottom = sgVisual.add(new ColorSetting.Builder() + private final Setting mixedColorBottom = sgRender.add(new ColorSetting.Builder() .name("mixed-bottom") .defaultValue(new SettingColor(255, 127, 0, 0)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/LogoutSpots.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/LogoutSpots.java index 8127116f50..153c369073 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/LogoutSpots.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/LogoutSpots.java @@ -36,7 +36,7 @@ public class LogoutSpots extends Module { private static final Color RED = new Color(225, 25, 25); private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); + private final SettingGroup sgRender = settings.createGroup("render"); // General @@ -55,31 +55,31 @@ public class LogoutSpots extends Module { // Render - private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() + private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(255, 0, 255, 55)) .build() ); - private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(255, 0, 255)) .build() ); - private final Setting nameColor = sgVisual.add(new ColorSetting.Builder() + private final Setting nameColor = sgRender.add(new ColorSetting.Builder() .name("name-color") .defaultValue(new SettingColor(255, 255, 255)) .build() ); - private final Setting nameBackgroundColor = sgVisual.add(new ColorSetting.Builder() + private final Setting nameBackgroundColor = sgRender.add(new ColorSetting.Builder() .name("name-background-color") .defaultValue(new SettingColor(0, 0, 0, 75)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Nametags.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Nametags.java index f58bbef73e..78944ccd3c 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Nametags.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Nametags.java @@ -51,7 +51,7 @@ public class Nametags extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); private final SettingGroup sgPlayers = settings.createGroup("players"); private final SettingGroup sgItems = settings.createGroup("items"); - private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); + private final SettingGroup sgRender = settings.createGroup("render"); // General @@ -218,40 +218,40 @@ public class Nametags extends Module { // Render - private final Setting background = sgVisual.add(new ColorSetting.Builder() + private final Setting background = sgRender.add(new ColorSetting.Builder() .name("background-color") .defaultValue(new SettingColor(0, 0, 0, 75)) .build() ); - private final Setting nameColor = sgVisual.add(new ColorSetting.Builder() + private final Setting nameColor = sgRender.add(new ColorSetting.Builder() .name("name-color") .defaultValue(new SettingColor()) .build() ); - private final Setting pingColor = sgVisual.add(new ColorSetting.Builder() + private final Setting pingColor = sgRender.add(new ColorSetting.Builder() .name("ping-color") .defaultValue(new SettingColor(20, 170, 170)) .visible(displayPing::get) .build() ); - private final Setting gamemodeColor = sgVisual.add(new ColorSetting.Builder() + private final Setting gamemodeColor = sgRender.add(new ColorSetting.Builder() .name("gamemode-color") .defaultValue(new SettingColor(232, 185, 35)) .visible(displayGameMode::get) .build() ); - private final Setting distanceColorMode = sgVisual.add(new EnumSetting.Builder() + private final Setting distanceColorMode = sgRender.add(new EnumSetting.Builder() .name("distance-color-mode") .defaultValue(DistanceColorMode.Gradient) .visible(displayDistance::get) .build() ); - private final Setting distanceColor = sgVisual.add(new ColorSetting.Builder() + private final Setting distanceColor = sgRender.add(new ColorSetting.Builder() .name("distance-color") .defaultValue(new SettingColor(150, 150, 150)) .visible(() -> displayDistance.get() && distanceColorMode.get() == DistanceColorMode.Flat) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Trajectories.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Trajectories.java index fd5ffed6e2..658e2e921c 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Trajectories.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Trajectories.java @@ -37,7 +37,7 @@ public class Trajectories extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); + private final SettingGroup sgRender = settings.createGroup("render"); // General @@ -82,38 +82,38 @@ public class Trajectories extends Module { // Render - private final Setting ignoreFirstTicks = sgVisual.add(new IntSetting.Builder() + private final Setting ignoreFirstTicks = sgRender.add(new IntSetting.Builder() .name("ignore-rendering-first-ticks") .defaultValue(3) .min(0) .build() ); - private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() + private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(255, 150, 0, 35)) .build() ); - private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(255, 150, 0)) .build() ); - private final Setting renderPositionBox = sgVisual.add(new BoolSetting.Builder() + private final Setting renderPositionBox = sgRender.add(new BoolSetting.Builder() .name("render-position-boxes") .defaultValue(false) .build() ); - private final Setting positionBoxSize = sgVisual.add(new DoubleSetting.Builder() + private final Setting positionBoxSize = sgRender.add(new DoubleSetting.Builder() .name("position-box-size") .defaultValue(0.02) .sliderRange(0.01, 0.1) @@ -121,14 +121,14 @@ public class Trajectories extends Module { .build() ); - private final Setting positionSideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting positionSideColor = sgRender.add(new ColorSetting.Builder() .name("position-side-color") .defaultValue(new SettingColor(255, 150, 0, 35)) .visible(renderPositionBox::get) .build() ); - private final Setting positionLineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting positionLineColor = sgRender.add(new ColorSetting.Builder() .name("position-line-color") .defaultValue(new SettingColor(255, 150, 0)) .visible(renderPositionBox::get) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/VoidESP.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/VoidESP.java index 228a2870dc..561e9052e5 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/VoidESP.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/VoidESP.java @@ -30,7 +30,7 @@ public class VoidESP extends Module { private static final Direction[] SIDES = {Direction.EAST, Direction.NORTH, Direction.SOUTH, Direction.WEST}; private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); + private final SettingGroup sgRender = settings.createGroup("render"); // General @@ -64,19 +64,19 @@ public class VoidESP extends Module { // Render - private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() + private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("fill-color") .defaultValue(new SettingColor(225, 25, 25, 50)) .build() ); - private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(225, 25, 255)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/CuboidMarker.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/CuboidMarker.java index 02ad8922c7..e869df4538 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/CuboidMarker.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/CuboidMarker.java @@ -20,7 +20,7 @@ public enum Mode { } private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgVisual = settings.createGroup("Visual").renamedFrom("Render"); + private final SettingGroup sgRender = settings.createGroup("Render"); // General @@ -38,28 +38,28 @@ public enum Mode { // Render - private final Setting mode = sgVisual.add(new EnumSetting.Builder() + private final Setting mode = sgRender.add(new EnumSetting.Builder() .name("mode") .description("What mode to use for this marker.") .defaultValue(Mode.Full) .build() ); - private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() + private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") .description("The color of the sides of the blocks being rendered.") .defaultValue(new SettingColor(0, 100, 255, 50)) .build() ); - private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") .description("The color of the lines of the blocks being rendered.") .defaultValue(new SettingColor(0, 100, 255, 255)) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/Sphere2dMarker.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/Sphere2dMarker.java index f14b5efd51..53b57e9a48 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/Sphere2dMarker.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/Sphere2dMarker.java @@ -33,7 +33,7 @@ public Block(int x, int y, int z) { public static final String type = "Sphere-2D"; private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgVisual = settings.createGroup("Visual").renamedFrom("Render"); + private final SettingGroup sgRender = settings.createGroup("Render"); private final SettingGroup sgKeybinding = settings.createGroup("Keybinding"); private final Setting center = sgGeneral.add(new BlockPosSetting.Builder() @@ -65,14 +65,14 @@ public Block(int x, int y, int z) { // Render - private final Setting limitRenderRange = sgVisual.add(new BoolSetting.Builder() + private final Setting limitRenderRange = sgRender.add(new BoolSetting.Builder() .name("limit-render-range") .description("Whether to limit rendering range (useful in very large circles)") .defaultValue(false) .build() ); - private final Setting renderRange = sgVisual.add(new IntSetting.Builder() + private final Setting renderRange = sgRender.add(new IntSetting.Builder() .name("render-range") .description("Rendering range") .defaultValue(10) @@ -82,21 +82,21 @@ public Block(int x, int y, int z) { .build() ); - private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() + private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") .description("The color of the sides of the blocks being rendered.") .defaultValue(new SettingColor(0, 100, 255, 50)) .build() ); - private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") .description("The color of the lines of the blocks being rendered.") .defaultValue(new SettingColor(0, 100, 255, 255)) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/EChestFarmer.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/EChestFarmer.java index a30c934f70..7ee661687a 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/EChestFarmer.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/EChestFarmer.java @@ -33,7 +33,7 @@ public class EChestFarmer extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); + private final SettingGroup sgRender = settings.createGroup("render"); private final Setting selfToggle = sgGeneral.add(new BoolSetting.Builder() .name("self-toggle") @@ -60,31 +60,31 @@ public class EChestFarmer extends Module { // Render - private final Setting swingHand = sgVisual.add(new BoolSetting.Builder() + private final Setting swingHand = sgRender.add(new BoolSetting.Builder() .name("swing-hand") .defaultValue(true) .build() ); - private final Setting render = sgVisual.add(new BoolSetting.Builder() + private final Setting render = sgRender.add(new BoolSetting.Builder() .name("render") .defaultValue(true) .build() ); - private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() + private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(204, 0, 0, 50)) .build() ); - private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(204, 0, 0, 255)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Excavator.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Excavator.java index 4b613d8e61..f359176d50 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Excavator.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Excavator.java @@ -25,7 +25,7 @@ public class Excavator extends Module { private final IBaritone baritone = BaritoneAPI.getProvider().getPrimaryBaritone(); private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("rendering"); + private final SettingGroup sgRendering = settings.createGroup("rendering"); // Keybindings private final Setting selectionBind = sgGeneral.add(new KeybindSetting.Builder() @@ -48,19 +48,19 @@ public class Excavator extends Module { ); // Rendering - private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() + private final Setting shapeMode = sgRendering.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting sideColor = sgRendering.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(255, 255, 255, 50)) .build() ); - private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting lineColor = sgRendering.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(255, 255, 255, 255)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Nuker.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Nuker.java index 71f25c356c..481517600a 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Nuker.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Nuker.java @@ -47,7 +47,7 @@ public class Nuker extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); private final SettingGroup sgWhitelist = settings.createGroup("whitelist"); - private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); + private final SettingGroup sgRender = settings.createGroup("render"); // General @@ -198,57 +198,57 @@ public class Nuker extends Module { // Rendering - private final Setting swing = sgVisual.add(new BoolSetting.Builder() + private final Setting swing = sgRender.add(new BoolSetting.Builder() .name("swing") .defaultValue(true) .build() ); - private final Setting enableRenderBounding = sgVisual.add(new BoolSetting.Builder() + private final Setting enableRenderBounding = sgRender.add(new BoolSetting.Builder() .name("bounding-box") .defaultValue(true) .build() ); - private final Setting shapeModeBox = sgVisual.add(new EnumSetting.Builder() + private final Setting shapeModeBox = sgRender.add(new EnumSetting.Builder() .name("nuke-box-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColorBox = sgVisual.add(new ColorSetting.Builder() + private final Setting sideColorBox = sgRender.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(16,106,144, 100)) .build() ); - private final Setting lineColorBox = sgVisual.add(new ColorSetting.Builder() + private final Setting lineColorBox = sgRender.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(16,106,144, 255)) .build() ); - private final Setting enableRenderBreaking = sgVisual.add(new BoolSetting.Builder() + private final Setting enableRenderBreaking = sgRender.add(new BoolSetting.Builder() .name("broken-blocks") .defaultValue(true) .build() ); - private final Setting shapeModeBreak = sgVisual.add(new EnumSetting.Builder() + private final Setting shapeModeBreak = sgRender.add(new EnumSetting.Builder() .name("nuke-block-mode") .defaultValue(ShapeMode.Both) .visible(enableRenderBreaking::get) .build() ); - private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("breaking-side-color") .defaultValue(new SettingColor(255, 0, 0, 80)) .visible(enableRenderBreaking::get) .build() ); - private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("breaking-line-color") .defaultValue(new SettingColor(255, 0, 0, 255)) .visible(enableRenderBreaking::get) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/PacketMine.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/PacketMine.java index 9837fc5300..a3209d11db 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/PacketMine.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/PacketMine.java @@ -35,7 +35,7 @@ public class PacketMine extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); + private final SettingGroup sgRender = settings.createGroup("render"); // General @@ -73,37 +73,37 @@ public class PacketMine extends Module { // Render - private final Setting render = sgVisual.add(new BoolSetting.Builder() + private final Setting render = sgRender.add(new BoolSetting.Builder() .name("render") .defaultValue(true) .build() ); - private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() + private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting readySideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting readySideColor = sgRender.add(new ColorSetting.Builder() .name("ready-side-color") .defaultValue(new SettingColor(0, 204, 0, 10)) .build() ); - private final Setting readyLineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting readyLineColor = sgRender.add(new ColorSetting.Builder() .name("ready-line-color") .defaultValue(new SettingColor(0, 204, 0, 255)) .build() ); - private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(204, 0, 0, 10)) .build() ); - private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(204, 0, 0, 255)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/StashFinder.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/StashFinder.java index 3cdce03aa7..3bc9693430 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/StashFinder.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/StashFinder.java @@ -51,7 +51,7 @@ public class StashFinder extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); + private final SettingGroup sgRender = settings.createGroup("render"); private static final List DEFAULT_SUPPORT_BLOCK_BLACKLIST = List.of( Blocks.OXIDIZED_COPPER, @@ -105,20 +105,20 @@ public class StashFinder extends Module { .build() ); - private final Setting renderTracer = sgVisual.add(new BoolSetting.Builder() + private final Setting renderTracer = sgRender.add(new BoolSetting.Builder() .name("render-tracer") .defaultValue(true) .build() ); - private final Setting traceColor = sgVisual.add(new ColorSetting.Builder() + private final Setting traceColor = sgRender.add(new ColorSetting.Builder() .name("tracer-color") .defaultValue(new SettingColor(255, 215, 0, 255)) .visible(renderTracer::get) .build() ); - private final Setting traceArrivalDistance = sgVisual.add(new IntSetting.Builder() + private final Setting traceArrivalDistance = sgRender.add(new IntSetting.Builder() .name("tracer-hide-at-distance") .defaultValue(16) .min(1) @@ -128,7 +128,7 @@ public class StashFinder extends Module { .build() ); - private final Setting traceMaxDistance = sgVisual.add(new IntSetting.Builder() + private final Setting traceMaxDistance = sgRender.add(new IntSetting.Builder() .name("tracer-max-distance") .defaultValue(2000) .min(10) @@ -138,20 +138,20 @@ public class StashFinder extends Module { .build() ); - private final Setting renderChunkColumn = sgVisual.add(new BoolSetting.Builder() + private final Setting renderChunkColumn = sgRender.add(new BoolSetting.Builder() .name("render-chunk-column") .defaultValue(false) .build() ); - private final Setting traceColumnColor = sgVisual.add(new ColorSetting.Builder() + private final Setting traceColumnColor = sgRender.add(new ColorSetting.Builder() .name("chunk-column-color") .defaultValue(new SettingColor(255, 215, 0, 100)) .visible(renderChunkColumn::get) .build() ); - private final Setting clearTracesBind = sgVisual.add(new KeybindSetting.Builder() + private final Setting clearTracesBind = sgRender.add(new KeybindSetting.Builder() .name("clear-traces-bind") .defaultValue(Keybind.none()) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/VeinMiner.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/VeinMiner.java index 8d13147fe3..ef7a7ac268 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/VeinMiner.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/VeinMiner.java @@ -34,7 +34,7 @@ public class VeinMiner extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgVisual = settings.createGroup("visual").renamedFrom("render"); + private final SettingGroup sgRender = settings.createGroup("render"); private final Set blockNeighbours = Set.of( new Vec3i(1, -1, 1), new Vec3i(0, -1, 1), new Vec3i(-1, -1, 1), @@ -88,31 +88,31 @@ public class VeinMiner extends Module { // Render - private final Setting swingHand = sgVisual.add(new BoolSetting.Builder() + private final Setting swingHand = sgRender.add(new BoolSetting.Builder() .name("swing-hand") .defaultValue(true) .build() ); - private final Setting render = sgVisual.add(new BoolSetting.Builder() + private final Setting render = sgRender.add(new BoolSetting.Builder() .name("render") .defaultValue(true) .build() ); - private final Setting shapeMode = sgVisual.add(new EnumSetting.Builder() + private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") .defaultValue(ShapeMode.Both) .build() ); - private final Setting sideColor = sgVisual.add(new ColorSetting.Builder() + private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") .defaultValue(new SettingColor(204, 0, 0, 10)) .build() ); - private final Setting lineColor = sgVisual.add(new ColorSetting.Builder() + private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") .defaultValue(new SettingColor(204, 0, 0, 255)) .build() From 97cfd458760c9c8f81626167c68e197ea9ee8666 Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Mon, 5 Jan 2026 19:28:42 -0500 Subject: [PATCH 38/52] map categories --- .../commands/commands/ModulesCommand.java | 2 +- .../meteorclient/gui/screens/ModulesScreen.java | 2 +- .../meteorclient/systems/modules/Categories.java | 12 ++++++------ .../meteorclient/systems/modules/Category.java | 9 ++++++++- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/ModulesCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/ModulesCommand.java index e677da9b73..b3aaf85cf6 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/ModulesCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/ModulesCommand.java @@ -29,7 +29,7 @@ public void build(LiteralArgumentBuilder builder) { Modules.loopCategories().forEach(category -> { MutableText categoryMessage = Text.literal(""); Modules.get().getGroup(category).forEach(module -> categoryMessage.append(getModuleText(module))); - ChatUtils.sendMsg(category.name, categoryMessage); + ChatUtils.sendMsg(category.getName(), categoryMessage); // todo }); return SINGLE_SUCCESS; diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/ModulesScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/ModulesScreen.java index a20aac7c9d..4610674f07 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/ModulesScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/ModulesScreen.java @@ -86,7 +86,7 @@ protected void init() { // Category protected WWindow createCategory(WContainer c, Category category, List moduleList) { - WWindow w = theme.window(category.name); + WWindow w = theme.window(category.getName()); w.id = category.name; w.padding = 0; w.spacing = 0; diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/Categories.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/Categories.java index 5ff0101feb..6ef58af416 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/Categories.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/Categories.java @@ -10,12 +10,12 @@ import net.minecraft.item.Items; public class Categories { - public static final Category Combat = new Category("Combat", Items.GOLDEN_SWORD.getDefaultStack()); - public static final Category Player = new Category("Player", Items.ARMOR_STAND.getDefaultStack()); - public static final Category Movement = new Category("Movement", Items.DIAMOND_BOOTS.getDefaultStack()); - public static final Category Render = new Category("Render", Items.GLASS.getDefaultStack()); - public static final Category World = new Category("World", Items.GRASS_BLOCK.getDefaultStack()); - public static final Category Misc = new Category("Misc", Items.LAVA_BUCKET.getDefaultStack()); + public static final Category Combat = new Category("combat", Items.GOLDEN_SWORD.getDefaultStack()); + public static final Category Player = new Category("player", Items.ARMOR_STAND.getDefaultStack()); + public static final Category Movement = new Category("movement", Items.DIAMOND_BOOTS.getDefaultStack()); + public static final Category Render = new Category("render", Items.GLASS.getDefaultStack()); + public static final Category World = new Category("world", Items.GRASS_BLOCK.getDefaultStack()); + public static final Category Misc = new Category("misc", Items.LAVA_BUCKET.getDefaultStack()); public static boolean REGISTERING; diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/Category.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/Category.java index 0deefe861c..69688550ab 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/Category.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/Category.java @@ -5,16 +5,19 @@ package meteordevelopment.meteorclient.systems.modules; +import meteordevelopment.meteorclient.utils.misc.MeteorTranslations; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; public class Category { public final String name; + private final String translationKey; public final ItemStack icon; private final int nameHash; public Category(String name, ItemStack icon) { this.name = name; + this.translationKey = "category." + name; this.nameHash = name.hashCode(); this.icon = icon == null ? Items.AIR.getDefaultStack() : icon; } @@ -22,9 +25,13 @@ public Category(String name) { this(name, null); } + public String getName() { + return MeteorTranslations.translate(this.translationKey); + } + @Override public String toString() { - return name; + return this.getName(); } @Override From 4c517a9d58f0cff654e52c2ae7540a8783e5e552 Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Mon, 5 Jan 2026 19:33:25 -0500 Subject: [PATCH 39/52] warn on missing keys --- .../meteorclient/utils/misc/MeteorTranslations.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java index ca8ffabd18..e0407c5f9f 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java @@ -11,6 +11,7 @@ import meteordevelopment.meteorclient.addons.AddonManager; import meteordevelopment.meteorclient.addons.MeteorAddon; import meteordevelopment.meteorclient.utils.PreInit; +import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.MinecraftClient; import net.minecraft.client.resource.language.LanguageDefinition; import net.minecraft.client.resource.language.ReorderingUtil; @@ -30,6 +31,7 @@ @SuppressWarnings("unused") public class MeteorTranslations { + private static final boolean DEBUG_MISSING_ENTRIES = FabricLoader.getInstance().isDevelopmentEnvironment() || Boolean.getBoolean("meteor.lang.debug"); private static final String EN_US_CODE = "en_us"; private static final Gson GSON = new Gson(); private static final Map languages = new Object2ObjectOpenHashMap<>(); @@ -101,6 +103,7 @@ public static void clearUnusedLanguages(String currentLanguageCode) { public static String translate(String key, Object... args) { MeteorLanguage currentLang = getCurrentLanguage(); + debug(currentLang, key); String translated = currentLang.get(key, getDefaultLanguage().get(key)); try { @@ -112,6 +115,7 @@ public static String translate(String key, Object... args) { public static String translate(String key, String fallback, Object... args) { MeteorLanguage currentLang = getCurrentLanguage(); + debug(currentLang, key); String translated = currentLang.get(key, getDefaultLanguage().get(key, fallback)); try { @@ -123,6 +127,7 @@ public static String translate(String key, String fallback, Object... args) { public static String translate(String key, Supplier fallback, Object... args) { MeteorLanguage currentLang = getCurrentLanguage(); + debug(currentLang, key); String translated = currentLang.get(key, getDefaultLanguage().get(key, fallback)); try { @@ -132,6 +137,12 @@ public static String translate(String key, Supplier fallback, Object... } } + private static void debug(MeteorLanguage language, String key) { + if (DEBUG_MISSING_ENTRIES && !language.hasTranslation(key)) { + MeteorClient.LOG.warn("Missing entry for '{}' in lang '{}'.", key, mc.options.language); + } + } + public static MeteorLanguage getLanguage(String lang) { return languages.get(lang); } From e81bb30982d51bb8e4c7f865cf9922d73317d1ad Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Mon, 5 Jan 2026 19:37:23 -0500 Subject: [PATCH 40/52] Revert "support renaming settinggroups without losing data" This reverts commit 3e3a93e746c7c7606221d948a76f9311206f15a6. --- .../meteorclient/settings/SettingGroup.java | 8 -------- .../meteordevelopment/meteorclient/settings/Settings.java | 5 ----- 2 files changed, 13 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/settings/SettingGroup.java b/src/main/java/meteordevelopment/meteorclient/settings/SettingGroup.java index b2fe870d3a..8112c2b039 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/SettingGroup.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/SettingGroup.java @@ -5,13 +5,11 @@ package meteordevelopment.meteorclient.settings; -import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.misc.ISerializable; import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtElement; import net.minecraft.nbt.NbtList; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Iterator; @@ -21,7 +19,6 @@ public class SettingGroup implements ISerializable, Iterable> settings = new ArrayList<>(1); @@ -56,11 +53,6 @@ public boolean wasChanged() { return false; } - public SettingGroup renamedFrom(String oldName) { - this.oldName = Utils.titleToName(oldName); - return this; - } - @Override public @NotNull Iterator> iterator() { return settings.iterator(); diff --git a/src/main/java/meteordevelopment/meteorclient/settings/Settings.java b/src/main/java/meteordevelopment/meteorclient/settings/Settings.java index 36e054efa2..c3a1a8a74b 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/Settings.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/Settings.java @@ -21,7 +21,6 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import java.util.Objects; public class Settings implements ISerializable, Iterable { private SettingGroup defaultGroup; @@ -83,10 +82,6 @@ public SettingGroup getGroup(String name) { if (sg.name.equals(name)) return sg; } - for (SettingGroup sg : this) { - if (Objects.equals(sg.oldName, name)) return sg; - } - return null; } From e63d3e528f16f5b9abaf125e1fe998e1217afeda Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Mon, 5 Jan 2026 19:40:46 -0500 Subject: [PATCH 41/52] finishing touches --- .../gui/DefaultSettingsWidgetFactory.java | 2 +- .../meteorclient/settings/SettingGroup.java | 2 +- .../meteorclient/systems/modules/Module.java | 9 ++++----- .../utils/misc/MeteorTranslations.java | 6 +++--- .../assets/meteor-client/language/en_us.json | 19 ------------------- 5 files changed, 9 insertions(+), 29 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java b/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java index 6aa01dbb88..9a23adfbdc 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java @@ -112,7 +112,7 @@ private void group(WVerticalList list, SettingGroup group, String filter, List setting : group) { String settingKey = baseKey + "." + group.name + "." + setting.name; - String title = MeteorTranslations.translate(settingKey, () -> Utils.nameToTitle(setting.name)); + String title = MeteorTranslations.translate(settingKey); if (!Strings.CI.contains(title, filter) && !Strings.CI.contains(setting.name, filter)) continue; boolean visible = setting.isVisible(); diff --git a/src/main/java/meteordevelopment/meteorclient/settings/SettingGroup.java b/src/main/java/meteordevelopment/meteorclient/settings/SettingGroup.java index 8112c2b039..eeaa1a005e 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/SettingGroup.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/SettingGroup.java @@ -24,7 +24,7 @@ public class SettingGroup implements ISerializable, Iterable Utils.nameToTitle(this.name)); + return MeteorTranslations.translate("module." + this.name); } public MutableText getTitleText() { - return MutableText.of(new MeteorTranslatableTextComponent("module." + this.name, Utils.nameToTitle(this.name))); + return MeteorClient.translatable("module." + this.name); } public String getDescription() { - return MeteorTranslations.translate("module." + this.name + ".description", ""); + return MeteorTranslations.translate("module." + this.name + ".description"); } public MutableText getDescriptionText() { - return MutableText.of(new MeteorTranslatableTextComponent("module." + this.name + ".description", "")); + return MeteorClient.translatable("module." + this.name + ".description"); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java index e0407c5f9f..505da3c566 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java @@ -104,7 +104,7 @@ public static void clearUnusedLanguages(String currentLanguageCode) { public static String translate(String key, Object... args) { MeteorLanguage currentLang = getCurrentLanguage(); debug(currentLang, key); - String translated = currentLang.get(key, getDefaultLanguage().get(key)); + String translated = currentLang.get(key, () -> getDefaultLanguage().get(key)); try { return String.format(translated, args); @@ -116,7 +116,7 @@ public static String translate(String key, Object... args) { public static String translate(String key, String fallback, Object... args) { MeteorLanguage currentLang = getCurrentLanguage(); debug(currentLang, key); - String translated = currentLang.get(key, getDefaultLanguage().get(key, fallback)); + String translated = currentLang.get(key, () -> getDefaultLanguage().get(key, fallback)); try { return String.format(translated, args); @@ -128,7 +128,7 @@ public static String translate(String key, String fallback, Object... args) { public static String translate(String key, Supplier fallback, Object... args) { MeteorLanguage currentLang = getCurrentLanguage(); debug(currentLang, key); - String translated = currentLang.get(key, getDefaultLanguage().get(key, fallback)); + String translated = currentLang.get(key, () -> getDefaultLanguage().get(key, fallback)); try { return String.format(translated, args); diff --git a/src/main/resources/assets/meteor-client/language/en_us.json b/src/main/resources/assets/meteor-client/language/en_us.json index ff14b1f513..55d99da0d0 100644 --- a/src/main/resources/assets/meteor-client/language/en_us.json +++ b/src/main/resources/assets/meteor-client/language/en_us.json @@ -1032,12 +1032,9 @@ "module.hand-view.off-hand.rotation": "Rotation", "module.hand-view.off-hand.rotation.description": "The rotation of your off hand.", "module.hand-view.arm.scale": "Scale", - "module.hand-view.arm.position": "Position", - "module.hand-view.arm.rotation": "Rotation", - "module.instant-rebreak": "Instant Rebreak", "module.instant-rebreak.description": "Instantly re-breaks blocks in the same position.", "module.instant-rebreak.general.delay": "Delay", @@ -1693,7 +1690,6 @@ "module.flamethrower.general.target-babies": "Target Babies", "module.flamethrower.general.target-babies.description": "If checked babies will also be killed.", "module.flamethrower.general.tick-interval": "Tick Interval", - "module.flamethrower.general.rotate": "Rotate", "module.flamethrower.general.rotate.description": "Automatically faces towards the animal roasted.", "module.flamethrower.general.entities": "Entities", @@ -2036,35 +2032,20 @@ "module.notebot.general.check-noteblocks-again-delay.description": "How much delay should be between end of tuning and checking again", "module.notebot.note-map": "Note Map", "module.notebot.note-map.Harp": "Harp", - "module.notebot.note-map.Basedrum": "Basedrum", - "module.notebot.note-map.Snare": "Snare", - "module.notebot.note-map.Hat": "Hat", - "module.notebot.note-map.Bass": "Bass", - "module.notebot.note-map.Flute": "Flute", - "module.notebot.note-map.Bell": "Bell", - "module.notebot.note-map.Guitar": "Guitar", - "module.notebot.note-map.Chime": "Chime", - "module.notebot.note-map.Xylophone": "Xylophone", - "module.notebot.note-map.IronXylophone": "IronXylophone", - "module.notebot.note-map.CowBell": "CowBell", - "module.notebot.note-map.Didgeridoo": "Didgeridoo", - "module.notebot.note-map.Bit": "Bit", - "module.notebot.note-map.Banjo": "Banjo", - "module.notebot.note-map.Pling": "Pling", "module.notebot.render.render-text": "Render Text", From 2d7e9cfe9d750a3c7fa07f9e4ffaa7cef09ec8dd Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Mon, 5 Jan 2026 19:46:31 -0500 Subject: [PATCH 42/52] when did i touch this :sob: --- .../meteordevelopment/meteorclient/renderer/MeshRenderer.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/meteordevelopment/meteorclient/renderer/MeshRenderer.java b/src/main/java/meteordevelopment/meteorclient/renderer/MeshRenderer.java index 961b7921f6..738e623776 100644 --- a/src/main/java/meteordevelopment/meteorclient/renderer/MeshRenderer.java +++ b/src/main/java/meteordevelopment/meteorclient/renderer/MeshRenderer.java @@ -166,7 +166,6 @@ public void end() { pass.setPipeline(pipeline); pass.setUniform("MeshData", meshData); - uniforms.forEach(pass::setUniform); for (var name : uniforms.keySet()) { pass.setUniform(name, uniforms.get(name)); } From 38f03000baad6df2541c4d204ddd31ccc10b219a Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Mon, 5 Jan 2026 19:57:27 -0500 Subject: [PATCH 43/52] error checking n shit --- .../utils/misc/MeteorTranslations.java | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java index 505da3c566..4424140ef7 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/misc/MeteorTranslations.java @@ -6,6 +6,9 @@ package meteordevelopment.meteorclient.utils.misc; import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.addons.AddonManager; @@ -23,6 +26,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.io.Reader; import java.nio.charset.StandardCharsets; import java.util.*; import java.util.function.Supplier; @@ -64,10 +68,7 @@ public static void loadLanguage(String languageCode) { else MeteorClient.LOG.info("No language file found for '{}'", languageCode); } else { - // noinspection unchecked - Object2ObjectOpenHashMap map = GSON.fromJson(new InputStreamReader(stream, StandardCharsets.UTF_8), Object2ObjectOpenHashMap.class); - languageMap.putAll(map); - + loadToMap(new InputStreamReader(stream, StandardCharsets.UTF_8), languageMap); MeteorClient.LOG.info("Loaded language: {}", languageCode); } } catch (IOException e) { @@ -81,11 +82,7 @@ public static void loadLanguage(String languageCode) { try (InputStream stream = addon.getClass().getResourceAsStream("/assets/" + addon.id + "/language/" + languageCode + ".json")) { if (stream == null) continue; - // noinspection unchecked - Object2ObjectOpenHashMap map = GSON.fromJson(new InputStreamReader(stream, StandardCharsets.UTF_8), Object2ObjectOpenHashMap.class); - map.values().removeIf(String::isEmpty); - languageMap.putAll(map); - + loadToMap(new InputStreamReader(stream, StandardCharsets.UTF_8), languageMap); MeteorClient.LOG.info("Loaded language {} from addon {}", languageCode, addon.name); } catch (IOException e) { MeteorClient.LOG.error("Error loading language {} from addon {}", languageCode, addon.name, e); @@ -97,6 +94,18 @@ public static void loadLanguage(String languageCode) { } } + private static void loadToMap(Reader reader, Map map) { + JsonObject object = GSON.fromJson(reader, JsonObject.class); + for (Map.Entry entry : object.entrySet()) { + if (entry.getValue() instanceof JsonPrimitive primitive && primitive.isString()) { + String value = primitive.getAsString(); + if (!value.isEmpty()) map.put(entry.getKey(), value); + } else { + MeteorClient.LOG.error("Unexpected element '{}' for '{}'.", entry.getValue().toString(), entry.getKey()); + } + } + } + public static void clearUnusedLanguages(String currentLanguageCode) { languages.keySet().removeIf(languageCode -> !languageCode.equals(EN_US_CODE) && !languageCode.equals(currentLanguageCode)); } From 479f21df42e157e3385e82161564b21f3f5cb93f Mon Sep 17 00:00:00 2001 From: Wide_Cat Date: Tue, 6 Jan 2026 16:09:18 +0000 Subject: [PATCH 44/52] fix typo + clean up duplicates in the lang file --- .../systems/modules/combat/AttributeSwap.java | 2 +- .../assets/meteor-client/language/en_us.json | 29 +------------------ 2 files changed, 2 insertions(+), 29 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AttributeSwap.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AttributeSwap.java index 319db4969c..b5a0c763e0 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AttributeSwap.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/combat/AttributeSwap.java @@ -30,7 +30,7 @@ public class AttributeSwap extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgSwappingOptions = settings.createGroup("swapping-ptions"); + private final SettingGroup sgSwappingOptions = settings.createGroup("swapping-options"); private final SettingGroup sgSwordEnchants = settings.createGroup("sword-enchants"); private final SettingGroup sgMaceEnchants = settings.createGroup("mace-enchants"); private final SettingGroup sgOtherEnchants = settings.createGroup("other-enchants"); diff --git a/src/main/resources/assets/meteor-client/language/en_us.json b/src/main/resources/assets/meteor-client/language/en_us.json index 55d99da0d0..3119a16048 100644 --- a/src/main/resources/assets/meteor-client/language/en_us.json +++ b/src/main/resources/assets/meteor-client/language/en_us.json @@ -117,7 +117,7 @@ "setting.group.hud": "Hud", "setting.group.world": "World", "setting.group.entity": "Entity", - "setting.group.swapping-ptions": "Swapping Ptions", + "setting.group.swapping-options": "Swapping Options", "setting.group.sword-enchants": "Sword Enchants", "setting.group.mace-enchants": "Mace Enchants", "setting.group.other-enchants": "Other Enchants", @@ -371,7 +371,6 @@ "module.better-tooltips.other.byte-size-format.description": "The format by which to display the item's byte size.", "module.better-tooltips.other.status-effects": "Status Effects", "module.better-tooltips.other.status-effects.description": "Adds list of status effects to tooltips of food items.", - "module.better-tooltips.hide-flags": "Hide Flags", "module.better-tooltips.hide-flags.tooltip": "Tooltip", "module.better-tooltips.hide-flags.tooltip.description": "Show the tooltip when it's hidden.", "module.better-tooltips.hide-flags.tooltip-components": "Tooltip Components", @@ -379,7 +378,6 @@ "module.notifier": "Notifier", "module.notifier.description": "Notifies you of different events.", - "module.notifier.totem-pops": "Totem Pops", "module.notifier.totem-pops.totem-pops": "Totem Pops", "module.notifier.totem-pops.totem-pops.description": "Notifies you when a player pops a totem.", "module.notifier.totem-pops.distance-check": "Distance Check", @@ -392,7 +390,6 @@ "module.notifier.totem-pops.ignore-friends.description": "Ignores friends totem pops.", "module.notifier.totem-pops.ignore-others": "Ignore Others", "module.notifier.totem-pops.ignore-others.description": "Ignores other players totem pops.", - "module.notifier.visual-range": "Visual Range", "module.notifier.visual-range.visual-range": "Visual Range", "module.notifier.visual-range.visual-range.description": "Notifies you when an entity enters your render distance.", "module.notifier.visual-range.event": "Event", @@ -411,7 +408,6 @@ "module.notifier.pearl.ignore-own.description": "Ignores your own pearls.", "module.notifier.pearl.ignore-friends": "Ignore Friends", "module.notifier.pearl.ignore-friends.description": "Ignores friends pearls.", - "module.notifier.joins/leaves": "Joins/Leaves", "module.notifier.joins/leaves.player-joins-leaves": "Player Joins Leaves", "module.notifier.joins/leaves.player-joins-leaves.description": "How to handle player join/leave notifications.", "module.notifier.joins/leaves.notification-delay": "Notification Delay", @@ -578,7 +574,6 @@ "module.chams": "Chams", "module.chams.description": "Tweaks rendering of entities.", - "module.chams.through-walls": "Through Walls", "module.chams.through-walls.entities": "Entities", "module.chams.through-walls.entities.description": "Select entities to show through walls.", "module.chams.through-walls.shader": "Shader", @@ -1017,14 +1012,12 @@ "module.hand-view.general.main-hand-progress.description": "The swing progress of your main hand.", "module.hand-view.general.off-hand-progress": "Off Hand Progress", "module.hand-view.general.off-hand-progress.description": "The swing progress of your off hand.", - "module.hand-view.main-hand": "Main Hand", "module.hand-view.main-hand.scale": "Scale", "module.hand-view.main-hand.scale.description": "The scale of your main hand.", "module.hand-view.main-hand.position": "Position", "module.hand-view.main-hand.position.description": "The position of your main hand.", "module.hand-view.main-hand.rotation": "Rotation", "module.hand-view.main-hand.rotation.description": "The rotation of your main hand.", - "module.hand-view.off-hand": "Off Hand", "module.hand-view.off-hand.scale": "Scale", "module.hand-view.off-hand.scale.description": "The scale of your off hand.", "module.hand-view.off-hand.position": "Position", @@ -1101,7 +1094,6 @@ "module.crystal-aura.place.support.description": "Places a support block in air if no other position have been found.", "module.crystal-aura.place.support-delay": "Support Delay", "module.crystal-aura.place.support-delay.description": "Delay in ticks after placing support block.", - "module.crystal-aura.face-place": "Face Place", "module.crystal-aura.face-place.face-place": "Face Place", "module.crystal-aura.face-place.face-place.description": "Will face-place when target is below a certain health or armor durability threshold.", "module.crystal-aura.face-place.face-place-health": "Face Place Health", @@ -1501,7 +1493,6 @@ "module.highway-builder.inventory.instantly-rebreak-echests.description": "Whether or not to use the instant rebreak exploit to break echests.", "module.highway-builder.inventory.rebreak-delay": "Rebreak Delay", "module.highway-builder.inventory.rebreak-delay.description": "Delay between rebreak attempts.", - "module.highway-builder.render-digging": "Render Digging", "module.highway-builder.render-digging.render-blocks-to-mine": "Render Blocks To Mine", "module.highway-builder.render-digging.render-blocks-to-mine.description": "Render blocks to be mined.", "module.highway-builder.render-digging.blocks-to-mine-shape-mode": "Blocks To Mine Shape Mode", @@ -1510,7 +1501,6 @@ "module.highway-builder.render-digging.blocks-to-mine-side-color.description": "Color of blocks to be mined.", "module.highway-builder.render-digging.blocks-to-mine-line-color": "Blocks To Mine Line Color", "module.highway-builder.render-digging.blocks-to-mine-line-color.description": "Color of blocks to be mined.", - "module.highway-builder.render-paving": "Render Paving", "module.highway-builder.render-paving.render-blocks-to-place": "Render Blocks To Place", "module.highway-builder.render-paving.render-blocks-to-place.description": "Render blocks to be placed.", "module.highway-builder.render-paving.blocks-to-place-shape-mode": "Blocks To Place Shape Mode", @@ -1582,7 +1572,6 @@ "module.storage-esp.general.other.description": "The color of furnaces, dispensers, droppers and hoppers.", "module.storage-esp.general.fade-distance": "Fade Distance", "module.storage-esp.general.fade-distance.description": "The distance at which the color will fade.", - "module.storage-esp.opened-rendering": "Opened Rendering", "module.storage-esp.opened-rendering.hide-opened": "Hide Opened", "module.storage-esp.opened-rendering.hide-opened.description": "Hides opened containers.", "module.storage-esp.opened-rendering.opened-color": "Opened Color", @@ -1603,7 +1592,6 @@ "module.attribute-swap.general.swap-back.description": "Swap back to the original slot after a delay.", "module.attribute-swap.general.swap-back-delay": "Swap Back Delay", "module.attribute-swap.general.swap-back-delay.description": "Delay in ticks before swapping back.", - "module.attribute-swap.swapping-options": "Swapping Options", "module.attribute-swap.swapping-options.shield-breaker": "Shield Breaker", "module.attribute-swap.swapping-options.shield-breaker.description": "Automatically swaps to an axe if the target is blocking.", "module.attribute-swap.swapping-options.durability-saver": "Durability Saver", @@ -1614,7 +1602,6 @@ "module.attribute-swap.swapping-options.mace-swapping.description": "Enables smart swapping for mace enchantments.", "module.attribute-swap.swapping-options.other-swapping": "Other Swapping", "module.attribute-swap.swapping-options.other-swapping.description": "Enables smart swapping for other enchantments like Impaling.", - "module.attribute-swap.sword-enchants": "Sword Enchants", "module.attribute-swap.sword-enchants.fire-aspect": "Fire Aspect", "module.attribute-swap.sword-enchants.fire-aspect.description": "Swaps to an item with Fire Aspect to set the target on fire, if target isn't already on fire", "module.attribute-swap.sword-enchants.looting": "Looting", @@ -1627,7 +1614,6 @@ "module.attribute-swap.sword-enchants.bane-of-arthropods.description": "Swaps to an item with Bane of Arthropods for increased damage against arthropods.", "module.attribute-swap.sword-enchants.sweeping-edge": "Sweeping Edge", "module.attribute-swap.sword-enchants.sweeping-edge.description": "Swaps to an item with Sweeping Edge for increased sweeping attack damage.", - "module.attribute-swap.mace-enchants": "Mace Enchants", "module.attribute-swap.mace-enchants.regular-mace": "Regular Mace", "module.attribute-swap.mace-enchants.regular-mace.description": "Swaps to a regular Mace when falling if no better option is available.", "module.attribute-swap.mace-enchants.density": "Density", @@ -1636,10 +1622,8 @@ "module.attribute-swap.mace-enchants.breach.description": "Swaps to a Mace with Breach to reduce the target's armor effectiveness.", "module.attribute-swap.mace-enchants.wind-burst": "Wind Burst", "module.attribute-swap.mace-enchants.wind-burst.description": "Swaps to a Mace with Wind Burst to launch up when hitting while falling.", - "module.attribute-swap.other-enchants": "Other Enchants", "module.attribute-swap.other-enchants.impaling": "Impaling", "module.attribute-swap.other-enchants.impaling.description": "Swaps to an item with Impaling for increased damage against aquatic mobs.", - "module.attribute-swap.weapon-options": "Weapon Options", "module.attribute-swap.weapon-options.only-on-weapon": "Only On Weapon", "module.attribute-swap.weapon-options.only-on-weapon.description": "Only swaps when holding a selected weapon in hand.", "module.attribute-swap.weapon-options.sword": "Sword", @@ -2030,7 +2014,6 @@ "module.notebot.general.swing-arm.description": "Should swing arm on hit", "module.notebot.general.check-noteblocks-again-delay": "Check Noteblocks Again Delay", "module.notebot.general.check-noteblocks-again-delay.description": "How much delay should be between end of tuning and checking again", - "module.notebot.note-map": "Note Map", "module.notebot.note-map.Harp": "Harp", "module.notebot.note-map.Basedrum": "Basedrum", "module.notebot.note-map.Snare": "Snare", @@ -2368,7 +2351,6 @@ "module.better-chat.filter.filter-regex.description": "Filter out chat messages that match the regex filter.", "module.better-chat.filter.regex-filter": "Regex Filter", "module.better-chat.filter.regex-filter.description": "Regex filter used for filtering chat messages.", - "module.better-chat.longer-chat": "Longer Chat", "module.better-chat.longer-chat.infinite-chat-box": "Infinite Chat Box", "module.better-chat.longer-chat.infinite-chat-box.description": "Lets you type infinitely long messages.", "module.better-chat.longer-chat.longer-chat-history": "Longer Chat History", @@ -2862,7 +2844,6 @@ "module.waypoints.general.text-render-distance.description": "Maximum distance from the center of the screen at which text will be rendered.", "module.waypoints.general.waypoint-fade-distance": "Waypoint Fade Distance", "module.waypoints.general.waypoint-fade-distance.description": "The distance to a waypoint at which it begins to start fading.", - "module.waypoints.death-position": "Death Position", "module.waypoints.death-position.max-death-positions": "Max Death Positions", "module.waypoints.death-position.max-death-positions.description": "The amount of death positions to save, 0 to disable", "module.waypoints.death-position.chat": "Chat", @@ -2918,7 +2899,6 @@ "module.hitboxes.general.expand.description": "How much to expand the hitbox of the entity.", "module.hitboxes.general.ignore-friends": "Ignore Friends", "module.hitboxes.general.ignore-friends.description": "Doesn't expand the hitboxes of friends.", - "module.hitboxes.weapon-options": "Weapon Options", "module.hitboxes.weapon-options.only-on-weapon": "Only On Weapon", "module.hitboxes.weapon-options.only-on-weapon.description": "Only modifies hitbox when holding a weapon in hand.", "module.hitboxes.weapon-options.sword": "Sword", @@ -2968,7 +2948,6 @@ "module.flight.general.vertical-speed-match.description": "Matches your vertical speed to your horizontal speed, otherwise uses vanilla ratio.", "module.flight.general.no-sneak": "No Sneak", "module.flight.general.no-sneak.description": "Prevents you from sneaking while flying.", - "module.flight.anti-kick": "Anti Kick", "module.flight.anti-kick.mode": "Mode", "module.flight.anti-kick.mode.description": "The mode for anti kick.", "module.flight.anti-kick.delay": "Delay", @@ -3002,14 +2981,12 @@ "module.discord-presence": "Discord Presence", "module.discord-presence.description": "Displays Meteor as your presence on Discord.", - "module.discord-presence.line-1": "Line 1", "module.discord-presence.line-1.line-1-messages": "Line 1 Messages", "module.discord-presence.line-1.line-1-messages.description": "Messages used for the first line.", "module.discord-presence.line-1.line-1-update-delay": "Line 1 Update Delay", "module.discord-presence.line-1.line-1-update-delay.description": "How fast to update the first line in ticks.", "module.discord-presence.line-1.line-1-select-mode": "Line 1 Select Mode", "module.discord-presence.line-1.line-1-select-mode.description": "How to select messages for the first line.", - "module.discord-presence.line-2": "Line 2", "module.discord-presence.line-2.line-2-messages": "Line 2 Messages", "module.discord-presence.line-2.line-2-messages.description": "Messages used for the second line.", "module.discord-presence.line-2.line-2-update-delay": "Line 2 Update Delay", @@ -3074,14 +3051,12 @@ "module.inventory-tweaks.sorting.sorting-delay.description": "Delay in ticks between moving items when sorting.", "module.inventory-tweaks.sorting.disable-in-creative": "Disable In Creative", "module.inventory-tweaks.sorting.disable-in-creative.description": "Disables the inventory sorter when in creative mode.", - "module.inventory-tweaks.anti-drop": "Anti Drop", "module.inventory-tweaks.anti-drop.anti-drop-items": "Anti Drop Items", "module.inventory-tweaks.anti-drop.anti-drop-items.description": "Items to prevent dropping. Doesn't work in creative inventory screen.", "module.inventory-tweaks.anti-drop.item-frames": "Item Frames", "module.inventory-tweaks.anti-drop.item-frames.description": "Prevent anti-drop items from being placed in item frames or pots", "module.inventory-tweaks.anti-drop.override-bind": "Override Bind", "module.inventory-tweaks.anti-drop.override-bind.description": "Hold this bind to temporarily bypass anti-drop", - "module.inventory-tweaks.auto-drop": "Auto Drop", "module.inventory-tweaks.auto-drop.auto-drop-items": "Auto Drop Items", "module.inventory-tweaks.auto-drop.auto-drop-items.description": "Items to drop.", "module.inventory-tweaks.auto-drop.exclude-equipped": "Exclude Equipped", @@ -3090,7 +3065,6 @@ "module.inventory-tweaks.auto-drop.exclude-hotbar.description": "Whether or not to drop items from your hotbar.", "module.inventory-tweaks.auto-drop.only-full-stacks": "Only Full Stacks", "module.inventory-tweaks.auto-drop.only-full-stacks.description": "Only drops the items if the stack is full.", - "module.inventory-tweaks.steal-and-dump": "Steal and Dump", "module.inventory-tweaks.steal-and-dump.steal-screens": "Steal Screens", "module.inventory-tweaks.steal-and-dump.steal-screens.description": "Select the screens to display buttons and auto steal.", "module.inventory-tweaks.steal-and-dump.inventory-buttons": "Inventory Buttons", @@ -3107,7 +3081,6 @@ "module.inventory-tweaks.steal-and-dump.steal-filter.description": "Steal mode.", "module.inventory-tweaks.steal-and-dump.steal-items": "Steal Items", "module.inventory-tweaks.steal-and-dump.steal-items.description": "Items to steal.", - "module.inventory-tweaks.auto-steal": "Auto Steal", "module.inventory-tweaks.auto-steal.auto-steal": "Auto Steal", "module.inventory-tweaks.auto-steal.auto-steal.description": "Automatically removes all possible items when you open a container.", "module.inventory-tweaks.auto-steal.auto-dump": "Auto Dump", From 720f178a6c77fffd6f7a80c03ab4ef1cfae02892 Mon Sep 17 00:00:00 2001 From: Wide_Cat Date: Tue, 6 Jan 2026 16:15:01 +0000 Subject: [PATCH 45/52] copy en_us over to en_gb --- .../assets/meteor-client/language/en_gb.json | 3506 ++++++++++++++++- .../assets/meteor-client/language/en_us.json | 2 + 2 files changed, 3440 insertions(+), 68 deletions(-) diff --git a/src/main/resources/assets/meteor-client/language/en_gb.json b/src/main/resources/assets/meteor-client/language/en_gb.json index c27502e5fe..718c010de5 100644 --- a/src/main/resources/assets/meteor-client/language/en_gb.json +++ b/src/main/resources/assets/meteor-client/language/en_gb.json @@ -1,74 +1,3444 @@ { + "meteor.lang.translators" : "MeteorDevelopment", + "meteor.key.category": "Meteor Client", "meteor.key.open-commands": "Open Commands", "meteor.key.open-gui": "Open GUI", - "meteor.command.bind.description": "Binds a specified module to the next pressed key.", - "meteor.command.binds.description": "List of all bound modules.", - "meteor.command.commands.description": "List of all commands.", - "meteor.command.damage.description": "Damages self.", - "meteor.command.disconnect.description": "Disconnect from the server", - "meteor.command.disconnect.disconnection_message": "%s[%sDisconnectCommand%s] Disconnected by user.", - "meteor.command.dismount.description": "Dismounts you from entity you are riding.", - "meteor.command.drop.description": "Automatically drops specified items.", - "meteor.command.drop.exception.no_such_item": "Could not find an item with that name!", - "meteor.command.drop.exception.not_spectator": "Can't drop items while in spectator.", - "meteor.command.enchant.description": "Enchants the item in your hand. REQUIRES Creative mode.", - "meteor.command.enchant.exception.not_holding_item": "You need to hold some item to enchant.", - "meteor.command.enchant.exception.not_in_creative": "You must be in creative mode to use this.", - "meteor.command.ender-chest.description": "Allows you to preview memory of your ender chest.", - "meteor.command.fake-player.description": "Manages fake players that you can use for testing.", - "meteor.command.fake-player.error.not_found": "Couldn't find a Fake Player with that name.", - "meteor.command.fake-player.info.removed": "Removed Fake Player %s.", - "meteor.command.fov.description": "Changes your fov.", - "meteor.command.friends.description": "Manages friends.", - "meteor.command.gamemode.description": "Changes your gamemode client-side.", - "meteor.command.give.description": "Gives you any item.", - "meteor.command.give.exception.not_in_creative": "You must be in creative mode to use this.", - "meteor.command.give.exception.no_space": "No space in hotbar.", - "meteor.command.hclip.description": "Lets you clip through blocks horizontally.", - "meteor.command.input.description": "Keyboard input simulation.", - "meteor.command.input.info.cleared_handlers": "Cleared all keypress handlers.", - "meteor.command.input.info.active_handlers": "Active keypress handlers: ", - "meteor.command.input.info.keypress_handler": "(highlight)%d(default) - (highlight)%s %d(default) ticks left out of (highlight)%d(default).", - "meteor.command.input.info.removed_handler": "Removed keypress handler.", - "meteor.command.input.warning.no_handlers": "No active keypress handlers.", - "meteor.command.input.warning.out_of_range": "Index out of range.", - "meteor.command.inventory.description": "Allows you to see parts of another player's inventory.", - "meteor.command.locate.description": "Locates structures", - "meteor.command.macro.description": "Allows you to execute macros.", - "meteor.command.macro.error.none_scheduled": "No macros are currently scheduled.", - "meteor.command.macro.error.not_scheduled": "This macro is not currently scheduled.", - "meteor.command.macro.info.cleared_all": "Cleared all scheduled macros.", - "meteor.command.macro.info.cleared": "Cleared scheduled macro.", - "meteor.command.modules.description": "Displays a list of all modules.", - "meteor.command.name-history.description": "Provides a list of a players previous names from the laby.net api", - "meteor.command.name-history.error.error_fetching_name": "There was an error fetching that users name history.", - "meteor.command.name-history.inaccurate": "This name history entry is not accurate according to laby.net", - "meteor.command.nbt.description": "Modifies NBT data for an item, example: .nbt add {display:{Name:'{\"text\":\"$cRed Name\"}'}}", - "meteor.command.notebot.description": "Allows you load notebot files", - "meteor.command.peek.description": "Lets you see what's inside storage block items.", - "meteor.command.profiles.description": "Loads and saves profiles.", - "meteor.command.profiles.info.loaded": "Loaded profile (highlight)%s(default).", - "meteor.command.profiles.info.saved": "Saved profile (highlight)%s(default).", - "meteor.command.profiles.info.deleted": "Deleted profile (highlight)%s(default).", - "meteor.command.reload.description": "Reloads many systems.", - "meteor.command.reload.warning.reloading": "Reloading systems, this may take a while.", - "meteor.command.reset.description": "Resets specified settings.", - "meteor.command.rotation.description": "Modifies your rotation.", - "meteor.command.save-map.description": "Saves a map to an image.", - "meteor.command.save-map.error.error_writing_texture": "Error writing map texture", - "meteor.command.save-map.exception.map_not_found": "You must be holding a filled map.", - "meteor.command.save-map.exception.oops": "Something went wrong.", - "meteor.command.say.description": "Sends messages in chat.", - "meteor.command.server.description": "Prints server information", - "meteor.command.settings.description": "Allows you to view and change module settings.", - "meteor.command.spectate.description": "Allows you to spectate nearby players", - "meteor.command.swarm.description": "Sends commands to connected swarm workers.", - "meteor.command.toggle.description": "Toggles a module.", - "meteor.command.vclip.description": "Lets you clip through blocks vertically.", - "meteor.command.wasp.description": "Sets the auto wasp target.", - "meteor.command.wasp.exception.cant_wasp_self": "You cannot target yourself!", - "meteor.command.wasp.info.target": "%s set as target.", - "meteor.command.waypoint.description": "Manages waypoints." + "command.bind.description": "Binds a specified module to the next pressed key.", + "command.binds.description": "List of all bound modules.", + "command.commands.description": "List of all commands.", + "command.damage.description": "Damages self.", + "command.disconnect.description": "Disconnect from the server", + "command.disconnect.disconnection_message": "%s[%sDisconnectCommand%s] Disconnected by user.", + "command.dismount.description": "Dismounts you from entity you are riding.", + "command.drop.description": "Automatically drops specified items.", + "command.drop.exception.no_such_item": "Could not find an item with that name!", + "command.drop.exception.not_spectator": "Can't drop items while in spectator.", + "command.enchant.description": "Enchants the item in your hand. REQUIRES Creative mode.", + "command.enchant.exception.not_holding_item": "You need to hold some item to enchant.", + "command.enchant.exception.not_in_creative": "You must be in creative mode to use this.", + "command.ender-chest.description": "Allows you to preview memory of your ender chest.", + "command.fake-player.description": "Manages fake players that you can use for testing.", + "command.fake-player.error.not_found": "Couldn't find a Fake Player with that name.", + "command.fake-player.info.removed": "Removed Fake Player %s.", + "command.fov.description": "Changes your fov.", + "command.friends.description": "Manages friends.", + "command.gamemode.description": "Changes your gamemode client-side.", + "command.give.description": "Gives you any item.", + "command.give.exception.not_in_creative": "You must be in creative mode to use this.", + "command.give.exception.no_space": "No space in hotbar.", + "command.hclip.description": "Lets you clip through blocks horizontally.", + "command.input.description": "Keyboard input simulation.", + "command.input.info.cleared_handlers": "Cleared all keypress handlers.", + "command.input.info.active_handlers": "Active keypress handlers: ", + "command.input.info.keypress_handler": "(highlight)%d(default) - (highlight)%s %d(default) ticks left out of (highlight)%d(default).", + "command.input.info.removed_handler": "Removed keypress handler.", + "command.input.warning.no_handlers": "No active keypress handlers.", + "command.input.warning.out_of_range": "Index out of range.", + "command.inventory.description": "Allows you to see parts of another player's inventory.", + "command.locate.description": "Locates structures", + "command.macro.description": "Allows you to execute macros.", + "command.macro.error.none_scheduled": "No macros are currently scheduled.", + "command.macro.error.not_scheduled": "This macro is not currently scheduled.", + "command.macro.info.cleared_all": "Cleared all scheduled macros.", + "command.macro.info.cleared": "Cleared scheduled macro.", + "command.modules.description": "Displays a list of all modules.", + "command.name-history.description": "Provides a list of a players previous names from the laby.net api", + "command.name-history.error.error_fetching_name": "There was an error fetching that users name history.", + "command.name-history.inaccurate": "This name history entry is not accurate according to laby.net", + "command.nbt.description": "Modifies NBT data for an item, example: .nbt add {display:{Name:'{\"text\":\"$cRed Name\"}'}}", + "command.notebot.description": "Allows you load notebot files", + "command.peek.description": "Lets you see what's inside storage block items.", + "command.profiles.description": "Loads and saves profiles.", + "command.profiles.info.loaded": "Loaded profile (highlight)%s(default).", + "command.profiles.info.saved": "Saved profile (highlight)%s(default).", + "command.profiles.info.deleted": "Deleted profile (highlight)%s(default).", + "command.reload.description": "Reloads many systems.", + "command.reload.warning.reloading": "Reloading systems, this may take a while.", + "command.reset.description": "Resets specified settings.", + "command.rotation.description": "Modifies your rotation.", + "command.save-map.description": "Saves a map to an image.", + "command.save-map.error.error_writing_texture": "Error writing map texture", + "command.save-map.exception.map_not_found": "You must be holding a filled map.", + "command.save-map.exception.oops": "Something went wrong.", + "command.say.description": "Sends messages in chat.", + "command.server.description": "Prints server information", + "command.settings.description": "Allows you to view and change module settings.", + "command.spectate.description": "Allows you to spectate nearby players", + "command.swarm.description": "Sends commands to connected swarm workers.", + "command.toggle.description": "Toggles a module.", + "command.vclip.description": "Lets you clip through blocks vertically.", + "command.wasp.description": "Sets the auto wasp target.", + "command.wasp.exception.cant_wasp_self": "You cannot target yourself!", + "command.wasp.info.target": "%s set as target.", + "command.waypoint.description": "Manages waypoints.", + + "category.combat": "Combat", + "category.player": "Player", + "category.movement": "Movement", + "category.render": "Render", + "category.world": "World", + "category.misc": "Misc", + + "setting.group.general": "General", + "setting.group.entities": "Entities", + "setting.group.whitelist": "Whitelist", + "setting.group.visual": "Visual", + "setting.group.arrows": "Arrows", + "setting.group.movement": "Movement", + "setting.group.pathing": "Pathing", + "setting.group.screens": "Screens", + "setting.group.yaw": "Yaw", + "setting.group.pitch": "Pitch", + "setting.group.threshold": "Threshold", + "setting.group.players": "Players", + "setting.group.items": "Items", + "setting.group.colors": "Colors", + "setting.group.water": "Water", + "setting.group.lava": "Lava", + "setting.group.targeting": "Targeting", + "setting.group.inventory": "Inventory", + "setting.group.pause": "Pause", + "setting.group.filter": "Filter", + "setting.group.longer-chat": "Longer Chat", + "setting.group.prefix": "Prefix", + "setting.group.suffix": "Suffix", + "setting.group.toggles": "Toggles", + "setting.group.note-map": "Note Map", + "setting.group.render": "Render", + "setting.group.scrolling": "Scrolling", + "setting.group.main-hand": "Main Hand", + "setting.group.off-hand": "Off Hand", + "setting.group.arm": "Arm", + "setting.group.opened-rendering": "Opened Rendering", + "setting.group.potions": "Potions", + "setting.group.health": "Health", + "setting.group.death-position": "Death Position", + "setting.group.overlay": "Overlay", + "setting.group.hud": "Hud", + "setting.group.world": "World", + "setting.group.entity": "Entity", + "setting.group.swapping-options": "Swapping Options", + "setting.group.sword-enchants": "Sword Enchants", + "setting.group.mace-enchants": "Mace Enchants", + "setting.group.other-enchants": "Other Enchants", + "setting.group.weapon-options": "Weapon Options", + "setting.group.blocks": "Blocks", + "setting.group.through-walls": "Through Walls", + "setting.group.crystals": "Crystals", + "setting.group.hand": "Hand", + "setting.group.sky": "Sky", + "setting.group.place": "Place", + "setting.group.break": "Break", + "setting.group.combat": "Combat", + "setting.group.totem": "Totem", + "setting.group.previews": "Previews", + "setting.group.other": "Other", + "setting.group.hide-flags": "Hide Flags", + "setting.group.safety": "Safety", + "setting.group.mace": "Mace", + "setting.group.switch": "Switch", + "setting.group.face-place": "Face Place", + "setting.group.digging": "Digging", + "setting.group.paving": "Paving", + "setting.group.render-digging": "Render Digging", + "setting.group.render-paving": "Render Paving", + "setting.group.crossbows": "Crossbows", + "setting.group.timing": "Timing", + "setting.group.sorting": "Sorting", + "setting.group.anti-drop": "Anti Drop", + "setting.group.auto-drop": "Auto Drop", + "setting.group.steal-and-dump": "Steal And Dump", + "setting.group.auto-steal": "Auto Steal", + "setting.group.line-1": "Line 1", + "setting.group.line-2": "Line 2", + "setting.group.anti-kick": "Anti Kick", + "setting.group.appearance": "Appearance", + "setting.group.autopilot": "Autopilot", + "setting.group.totem-pops": "Totem Pops", + "setting.group.visual-range": "Visual Range", + "setting.group.pearl": "Pearl", + "setting.group.joins/leaves": "Joins/leaves", + "setting.group.actions": "Actions", + "setting.group.messages": "Messages", + "setting.group.control": "Control", + "setting.group.speed": "Speed", + "setting.group.flight": "Flight", + "setting.group.range": "Range", + "setting.group.smart": "Smart", + + "module.base.bind": "Bind", + "module.base.bind.bind": "Bind: ", + "module.base.bind.toggle-on-release": "Toggle on bind release: ", + "module.base.bind.chat-feedback": "Chat Feedback: ", + "module.base.active": "Active: ", + "module.base.copy-config": "Copy config", + "module.base.paste-config": "Paste config", + "module.base.from": "From: ", + + "module.air-jump": "Air Jump", + "module.air-jump.description": "Lets you jump in the air.", + "module.air-jump.general.maintain-level": "Maintain Level", + "module.air-jump.general.maintain-level.description": "Maintains your current Y level when holding the jump key.", + + "module.auto-fish": "Auto Fish", + "module.auto-fish.description": "Automatically fishes for you.", + "module.auto-fish.general.auto-switch": "Auto Switch", + "module.auto-fish.general.auto-switch.description": "Automatically switch to a fishing rod.", + "module.auto-fish.general.anti-break": "Anti Break", + "module.auto-fish.general.anti-break.description": "Avoid using rods that would break if they were cast.", + "module.auto-fish.general.auto-cast": "Auto Cast", + "module.auto-fish.general.auto-cast.description": "Automatically cast the fishing rod.", + "module.auto-fish.general.cast-delay": "Cast Delay", + "module.auto-fish.general.cast-delay.description": "How long to wait between recasts if the bobber fails to land in water.", + "module.auto-fish.general.cast-delay-variance": "Cast Delay Variance", + "module.auto-fish.general.cast-delay-variance.description": "Maximum amount of randomness added to cast delay.", + "module.auto-fish.general.catch-delay": "Catch Delay", + "module.auto-fish.general.catch-delay.description": "How long to wait after hooking a fish to reel it in.", + "module.auto-fish.general.catch-delay-variance": "Catch Delay Variance", + "module.auto-fish.general.catch-delay-variance.description": "Maximum amount of randomness added to catch delay.", + + "module.name-protect": "Name Protect", + "module.name-protect.description": "Hide player names and skins.", + "module.name-protect.general.name-protect": "Name Protect", + "module.name-protect.general.name-protect.description": "Hides your name client-side.", + "module.name-protect.general.name": "Name", + "module.name-protect.general.name.description": "Name to be replaced with.", + "module.name-protect.general.skin-protect": "Skin Protect", + "module.name-protect.general.skin-protect.description": "Make players become Steves.", + + "module.velocity": "Velocity", + "module.velocity.description": "Prevents you from being moved by external forces.", + "module.velocity.general.knockback": "Knockback", + "module.velocity.general.knockback.description": "Modifies the amount of knockback you take from attacks.", + "module.velocity.general.knockback-horizontal": "Knockback Horizontal", + "module.velocity.general.knockback-horizontal.description": "How much horizontal knockback you will take.", + "module.velocity.general.knockback-vertical": "Knockback Vertical", + "module.velocity.general.knockback-vertical.description": "How much vertical knockback you will take.", + "module.velocity.general.explosions": "Explosions", + "module.velocity.general.explosions.description": "Modifies your knockback from explosions.", + "module.velocity.general.explosions-horizontal": "Explosions Horizontal", + "module.velocity.general.explosions-horizontal.description": "How much velocity you will take from explosions horizontally.", + "module.velocity.general.explosions-vertical": "Explosions Vertical", + "module.velocity.general.explosions-vertical.description": "How much velocity you will take from explosions vertically.", + "module.velocity.general.liquids": "Liquids", + "module.velocity.general.liquids.description": "Modifies the amount you are pushed by flowing liquids.", + "module.velocity.general.liquids-horizontal": "Liquids Horizontal", + "module.velocity.general.liquids-horizontal.description": "How much velocity you will take from liquids horizontally.", + "module.velocity.general.liquids-vertical": "Liquids Vertical", + "module.velocity.general.liquids-vertical.description": "How much velocity you will take from liquids vertically.", + "module.velocity.general.entity-push": "Entity Push", + "module.velocity.general.entity-push.description": "Modifies the amount you are pushed by entities.", + "module.velocity.general.entity-push-amount": "Entity Push Amount", + "module.velocity.general.entity-push-amount.description": "How much you will be pushed.", + "module.velocity.general.blocks": "Blocks", + "module.velocity.general.blocks.description": "Prevents you from being pushed out of blocks.", + "module.velocity.general.sinking": "Sinking", + "module.velocity.general.sinking.description": "Prevents you from sinking in liquids.", + "module.velocity.general.fishing": "Fishing", + "module.velocity.general.fishing.description": "Prevents you from being pulled by fishing rods.", + + "module.no-ghost-blocks": "No Ghost Blocks", + "module.no-ghost-blocks.description": "Attempts to prevent ghost blocks arising.", + "module.no-ghost-blocks.general.breaking": "Breaking", + "module.no-ghost-blocks.general.breaking.description": "Whether to apply for block breaking actions.", + "module.no-ghost-blocks.general.placing": "Placing", + "module.no-ghost-blocks.general.placing.description": "Whether to apply for block placement actions.", + + "module.bed-aura": "Bed Aura", + "module.bed-aura.description": "Automatically places and explodes beds in the Nether and End.", + "module.bed-aura.general.delay": "Delay", + "module.bed-aura.general.delay.description": "The delay between placing beds in ticks.", + "module.bed-aura.general.strict-direction": "Strict Direction", + "module.bed-aura.general.strict-direction.description": "Only places beds in the direction you are facing.", + "module.bed-aura.targeting.target-range": "Target Range", + "module.bed-aura.targeting.target-range.description": "The range at which players can be targeted.", + "module.bed-aura.targeting.target-priority": "Target Priority", + "module.bed-aura.targeting.target-priority.description": "How to filter targets within range.", + "module.bed-aura.targeting.min-damage": "Min Damage", + "module.bed-aura.targeting.min-damage.description": "The minimum damage to inflict on your target.", + "module.bed-aura.targeting.max-self-damage": "Max Self Damage", + "module.bed-aura.targeting.max-self-damage.description": "The maximum damage to inflict on yourself.", + "module.bed-aura.targeting.anti-suicide": "Anti Suicide", + "module.bed-aura.targeting.anti-suicide.description": "Will not place and break beds if they will kill you.", + "module.bed-aura.inventory.auto-move": "Auto Move", + "module.bed-aura.inventory.auto-move.description": "Moves beds into a selected hotbar slot.", + "module.bed-aura.inventory.auto-move-slot": "Auto Move Slot", + "module.bed-aura.inventory.auto-move-slot.description": "The slot auto move moves beds to.", + "module.bed-aura.inventory.auto-switch": "Auto Switch", + "module.bed-aura.inventory.auto-switch.description": "Switches to and from beds automatically.", + "module.bed-aura.pause.pause-on-eat": "Pause On Eat", + "module.bed-aura.pause.pause-on-eat.description": "Pauses while eating.", + "module.bed-aura.pause.pause-on-drink": "Pause On Drink", + "module.bed-aura.pause.pause-on-drink.description": "Pauses while drinking.", + "module.bed-aura.pause.pause-on-mine": "Pause On Mine", + "module.bed-aura.pause.pause-on-mine.description": "Pauses while mining.", + "module.bed-aura.render.swing": "Swing", + "module.bed-aura.render.swing.description": "Whether to swing hand client-side.", + "module.bed-aura.render.render": "Render", + "module.bed-aura.render.render.description": "Renders the block where it is placing a bed.", + "module.bed-aura.render.shape-mode": "Shape Mode", + "module.bed-aura.render.shape-mode.description": "How the shapes are rendered.", + "module.bed-aura.render.side-color": "Side Color", + "module.bed-aura.render.side-color.description": "The side color for positions to be placed.", + "module.bed-aura.render.line-color": "Line Color", + "module.bed-aura.render.line-color.description": "The line color for positions to be placed.", + + "module.auto-jump": "Auto Jump", + "module.auto-jump.description": "Automatically jumps.", + "module.auto-jump.general.mode": "Mode", + "module.auto-jump.general.mode.description": "The method of jumping.", + "module.auto-jump.general.jump-if": "Jump If", + "module.auto-jump.general.jump-if.description": "Jump if.", + "module.auto-jump.general.velocity-height": "Velocity Height", + "module.auto-jump.general.velocity-height.description": "The distance that velocity mode moves you.", + + "module.ambience": "Ambience", + "module.ambience.description": "Change the color of various pieces of the environment.", + "module.ambience.sky.end-sky": "End Sky", + "module.ambience.sky.end-sky.description": "Makes the sky like the end.", + "module.ambience.sky.custom-sky-color": "Custom Sky Color", + "module.ambience.sky.custom-sky-color.description": "Whether the sky color should be changed.", + "module.ambience.sky.overworld-sky-color": "Overworld Sky Color", + "module.ambience.sky.overworld-sky-color.description": "The color of the overworld sky.", + "module.ambience.sky.nether-sky-color": "Nether Sky Color", + "module.ambience.sky.nether-sky-color.description": "The color of the nether sky.", + "module.ambience.sky.end-sky-color": "End Sky Color", + "module.ambience.sky.end-sky-color.description": "The color of the end sky.", + "module.ambience.sky.custom-cloud-color": "Custom Cloud Color", + "module.ambience.sky.custom-cloud-color.description": "Whether the clouds color should be changed.", + "module.ambience.sky.cloud-color": "Cloud Color", + "module.ambience.sky.cloud-color.description": "The color of the clouds.", + "module.ambience.sky.custom-lightning-color": "Custom Lightning Color", + "module.ambience.sky.custom-lightning-color.description": "Whether the lightning color should be changed.", + "module.ambience.sky.lightning-color": "Lightning Color", + "module.ambience.sky.lightning-color.description": "The color of the lightning.", + "module.ambience.world.custom-grass-color": "Custom Grass Color", + "module.ambience.world.custom-grass-color.description": "Whether the grass color should be changed.", + "module.ambience.world.grass-color": "Grass Color", + "module.ambience.world.grass-color.description": "The color of the grass.", + "module.ambience.world.custom-foliage-color": "Custom Foliage Color", + "module.ambience.world.custom-foliage-color.description": "Whether the foliage color should be changed.", + "module.ambience.world.foliage-color": "Foliage Color", + "module.ambience.world.foliage-color.description": "The color of the foliage.", + "module.ambience.world.custom-water-color": "Custom Water Color", + "module.ambience.world.custom-water-color.description": "Whether the water color should be changed.", + "module.ambience.world.water-color": "Water Color", + "module.ambience.world.water-color.description": "The color of the water.", + "module.ambience.world.custom-lava-color": "Custom Lava Color", + "module.ambience.world.custom-lava-color.description": "Whether the lava color should be changed.", + "module.ambience.world.lava-color": "Lava Color", + "module.ambience.world.lava-color.description": "The color of the lava.", + "module.ambience.world.custom-fog-color": "Custom Fog Color", + "module.ambience.world.custom-fog-color.description": "Whether the fog color should be changed.", + "module.ambience.world.fog-color": "Fog Color", + "module.ambience.world.fog-color.description": "The color of the fog.", + + "module.better-tooltips": "Better Tooltips", + "module.better-tooltips.description": "Displays more useful tooltips for certain items.", + "module.better-tooltips.general.display-when": "Display When", + "module.better-tooltips.general.display-when.description": "When to display previews.", + "module.better-tooltips.general.keybind": "Keybind", + "module.better-tooltips.general.keybind.description": "The bind for keybind mode.", + "module.better-tooltips.general.open-contents": "Open Contents", + "module.better-tooltips.general.open-contents.description": "Opens a GUI window with the inventory of the storage block or book when you click the item.", + "module.better-tooltips.general.open-contents-keybind": "Open Contents Keybind", + "module.better-tooltips.general.open-contents-keybind.description": "Key to open contents (containers, books, etc.) when pressed on items.", + "module.better-tooltips.general.pause-in-creative": "Pause In Creative", + "module.better-tooltips.general.pause-in-creative.description": "Pauses middle click open while the player is in creative mode.", + "module.better-tooltips.previews.containers": "Containers", + "module.better-tooltips.previews.containers.description": "Shows a preview of a containers when hovering over it in an inventory.", + "module.better-tooltips.previews.compact-shulker-tooltip": "Compact Shulker Tooltip", + "module.better-tooltips.previews.compact-shulker-tooltip.description": "Compacts the lines of the shulker tooltip.", + "module.better-tooltips.previews.echests": "Echests", + "module.better-tooltips.previews.echests.description": "Shows a preview of your echest when hovering over it in an inventory.", + "module.better-tooltips.previews.maps": "Maps", + "module.better-tooltips.previews.maps.description": "Shows a preview of a map when hovering over it in an inventory.", + "module.better-tooltips.previews.map-scale": "Map Scale", + "module.better-tooltips.previews.map-scale.description": "The scale of the map preview.", + "module.better-tooltips.previews.books": "Books", + "module.better-tooltips.previews.books.description": "Shows contents of a book when hovering over it in an inventory.", + "module.better-tooltips.previews.banners": "Banners", + "module.better-tooltips.previews.banners.description": "Shows banners' patterns when hovering over it in an inventory. Also works with shields.", + "module.better-tooltips.previews.entities-in-buckets": "Entities In Buckets", + "module.better-tooltips.previews.entities-in-buckets.description": "Shows entities in buckets when hovering over it in an inventory.", + "module.better-tooltips.previews.bundles": "Bundles", + "module.better-tooltips.previews.bundles.description": "Shows a preview of bundle contents when hovering over it in an inventory.", + "module.better-tooltips.previews.food-info": "Food Info", + "module.better-tooltips.previews.food-info.description": "Shows hunger and saturation values for food items.", + "module.better-tooltips.other.byte-size": "Byte Size", + "module.better-tooltips.other.byte-size.description": "Displays an item's size in bytes in the tooltip.", + "module.better-tooltips.other.byte-size-format": "Byte Size Format", + "module.better-tooltips.other.byte-size-format.description": "The format by which to display the item's byte size.", + "module.better-tooltips.other.status-effects": "Status Effects", + "module.better-tooltips.other.status-effects.description": "Adds list of status effects to tooltips of food items.", + "module.better-tooltips.hide-flags.tooltip": "Tooltip", + "module.better-tooltips.hide-flags.tooltip.description": "Show the tooltip when it's hidden.", + "module.better-tooltips.hide-flags.tooltip-components": "Tooltip Components", + "module.better-tooltips.hide-flags.tooltip-components.description": "Shows tooltip components when they're hidden - e.g. enchantments, attributes, lore, etc.", + + "module.notifier": "Notifier", + "module.notifier.description": "Notifies you of different events.", + "module.notifier.totem-pops.totem-pops": "Totem Pops", + "module.notifier.totem-pops.totem-pops.description": "Notifies you when a player pops a totem.", + "module.notifier.totem-pops.distance-check": "Distance Check", + "module.notifier.totem-pops.distance-check.description": "Limits the distance in which the pops are recognized.", + "module.notifier.totem-pops.player-radius": "Player Radius", + "module.notifier.totem-pops.player-radius.description": "The radius in which to log totem pops.", + "module.notifier.totem-pops.ignore-own": "Ignore Own", + "module.notifier.totem-pops.ignore-own.description": "Ignores your own totem pops.", + "module.notifier.totem-pops.ignore-friends": "Ignore Friends", + "module.notifier.totem-pops.ignore-friends.description": "Ignores friends totem pops.", + "module.notifier.totem-pops.ignore-others": "Ignore Others", + "module.notifier.totem-pops.ignore-others.description": "Ignores other players totem pops.", + "module.notifier.visual-range.visual-range": "Visual Range", + "module.notifier.visual-range.visual-range.description": "Notifies you when an entity enters your render distance.", + "module.notifier.visual-range.event": "Event", + "module.notifier.visual-range.event.description": "When to log the entities.", + "module.notifier.visual-range.entities": "Entities", + "module.notifier.visual-range.entities.description": "Which entities to notify about.", + "module.notifier.visual-range.ignore-friends": "Ignore Friends", + "module.notifier.visual-range.ignore-friends.description": "Ignores friends.", + "module.notifier.visual-range.ignore-fake-players": "Ignore Fake Players", + "module.notifier.visual-range.ignore-fake-players.description": "Ignores fake players.", + "module.notifier.visual-range.sound": "Sound", + "module.notifier.visual-range.sound.description": "Emits a sound effect on enter / leave", + "module.notifier.pearl.pearl": "Pearl", + "module.notifier.pearl.pearl.description": "Notifies you when a player is teleported using an ender pearl.", + "module.notifier.pearl.ignore-own": "Ignore Own", + "module.notifier.pearl.ignore-own.description": "Ignores your own pearls.", + "module.notifier.pearl.ignore-friends": "Ignore Friends", + "module.notifier.pearl.ignore-friends.description": "Ignores friends pearls.", + "module.notifier.joins/leaves.player-joins-leaves": "Player Joins Leaves", + "module.notifier.joins/leaves.player-joins-leaves.description": "How to handle player join/leave notifications.", + "module.notifier.joins/leaves.notification-delay": "Notification Delay", + "module.notifier.joins/leaves.notification-delay.description": "How long to wait in ticks before posting the next join/leave notification in your chat.", + "module.notifier.joins/leaves.simple-notifications": "Simple Notifications", + "module.notifier.joins/leaves.simple-notifications.description": "Display join/leave notifications without a prefix, to reduce chat clutter.", + + "module.item-physics": "Item Physics", + "module.item-physics.description": "Applies physics to items on the ground.", + "module.item-physics.general.random-rotation": "Random Rotation", + "module.item-physics.general.random-rotation.description": "Adds a random rotation to every item.", + + "module.air-place": "Air Place", + "module.air-place.description": "Places a block where your crosshair is pointing at.", + "module.air-place.general.render": "Render", + "module.air-place.general.render.description": "Renders a block overlay where the obsidian will be placed.", + "module.air-place.general.shape-mode": "Shape Mode", + "module.air-place.general.shape-mode.description": "How the shapes are rendered.", + "module.air-place.general.side-color": "Side Color", + "module.air-place.general.side-color.description": "The color of the sides of the blocks being rendered.", + "module.air-place.general.line-color": "Line Color", + "module.air-place.general.line-color.description": "The color of the lines of the blocks being rendered.", + "module.air-place.range.custom-range": "Custom Range", + "module.air-place.range.custom-range.description": "Use custom range for air place.", + "module.air-place.range.range": "Range", + "module.air-place.range.range.description": "Custom range to place at.", + + "module.enderman-look": "Enderman Look", + "module.enderman-look.description": "Either looks at all Endermen or prevents you from looking at Endermen.", + "module.enderman-look.general.look-mode": "Look Mode", + "module.enderman-look.general.look-mode.description": "How this module behaves.", + "module.enderman-look.general.stun-hostiles": "Stun Hostiles", + "module.enderman-look.general.stun-hostiles.description": "Automatically stares at hostile endermen to stun them in place.", + + "module.excavator": "Excavator", + "module.excavator.description": "Excavate a selection area.", + "module.excavator.general.selection-bind": "Selection Bind", + "module.excavator.general.selection-bind.description": "Bind to draw selection.", + "module.excavator.general.log-selection": "Log Selection", + "module.excavator.general.log-selection.description": "Logs the selection coordinates to the chat.", + "module.excavator.general.keep-active": "Keep Active", + "module.excavator.general.keep-active.description": "Keep the module active after finishing the excavation.", + "module.excavator.rendering.shape-mode": "Shape Mode", + "module.excavator.rendering.shape-mode.description": "How the shapes are rendered.", + "module.excavator.rendering.side-color": "Side Color", + "module.excavator.rendering.side-color.description": "The side color.", + "module.excavator.rendering.line-color": "Line Color", + "module.excavator.rendering.line-color.description": "The line color.", + + "module.timer": "Timer", + "module.timer.description": "Changes the speed of everything in your game.", + "module.timer.general.multiplier": "Multiplier", + "module.timer.general.multiplier.description": "The timer multiplier amount.", + + "module.surround": "Surround", + "module.surround.description": "Surrounds you in blocks to prevent massive crystal damage.", + "module.surround.general.blocks": "Blocks", + "module.surround.general.blocks.description": "What blocks to use for surround.", + "module.surround.general.delay": "Delay", + "module.surround.general.delay.description": "Delay, in ticks, between block placements.", + "module.surround.general.blocks-per-tick": "Blocks Per Tick", + "module.surround.general.blocks-per-tick.description": "How many blocks to place in one tick.", + "module.surround.general.center": "Center", + "module.surround.general.center.description": "Teleports you to the center of the block.", + "module.surround.general.double-height": "Double Height", + "module.surround.general.double-height.description": "Places obsidian on top of the original surround blocks to prevent people from face-placing you.", + "module.surround.general.only-on-ground": "Only On Ground", + "module.surround.general.only-on-ground.description": "Works only when you are standing on blocks.", + "module.surround.general.air-place": "Air Place", + "module.surround.general.air-place.description": "Allows Surround to place blocks in the air.", + "module.surround.general.toggle-modules": "Toggle Modules", + "module.surround.general.toggle-modules.description": "Turn off other modules when surround is activated.", + "module.surround.general.toggle-back-on": "Toggle Back On", + "module.surround.general.toggle-back-on.description": "Turn the other modules back on when surround is deactivated.", + "module.surround.general.modules": "Modules", + "module.surround.general.modules.description": "Which modules to disable on activation.", + "module.surround.general.rotate": "Rotate", + "module.surround.general.rotate.description": "Automatically faces towards the obsidian being placed.", + "module.surround.general.protect": "Protect", + "module.surround.general.protect.description": "Attempts to break crystals around surround positions to prevent surround break.", + "module.surround.toggles.toggle-on-y-change": "Toggle On Y Change", + "module.surround.toggles.toggle-on-y-change.description": "Automatically disables when your y level changes (step, jumping, etc).", + "module.surround.toggles.toggle-on-complete": "Toggle On Complete", + "module.surround.toggles.toggle-on-complete.description": "Toggles off when all blocks are placed.", + "module.surround.toggles.toggle-on-death": "Toggle On Death", + "module.surround.toggles.toggle-on-death.description": "Toggles off when you die.", + "module.surround.render.swing": "Swing", + "module.surround.render.swing.description": "Render your hand swinging when placing surround blocks.", + "module.surround.render.render": "Render", + "module.surround.render.render.description": "Renders a block overlay where the obsidian will be placed.", + "module.surround.render.below": "Below", + "module.surround.render.below.description": "Renders the block below you.", + "module.surround.render.shape-mode": "Shape Mode", + "module.surround.render.shape-mode.description": "How the shapes are rendered.", + "module.surround.render.safe-side-color": "Safe Side Color", + "module.surround.render.safe-side-color.description": "The side color for safe blocks.", + "module.surround.render.safe-line-color": "Safe Line Color", + "module.surround.render.safe-line-color.description": "The line color for safe blocks.", + "module.surround.render.normal-side-color": "Normal Side Color", + "module.surround.render.normal-side-color.description": "The side color for normal blocks.", + "module.surround.render.normal-line-color": "Normal Line Color", + "module.surround.render.normal-line-color.description": "The line color for normal blocks.", + "module.surround.render.unsafe-side-color": "Unsafe Side Color", + "module.surround.render.unsafe-side-color.description": "The side color for unsafe blocks.", + "module.surround.render.unsafe-line-color": "Unsafe Line Color", + "module.surround.render.unsafe-line-color.description": "The line color for unsafe blocks.", + + "module.no-rotate": "No Rotate", + "module.no-rotate.description": "Attempts to block rotations sent from server to client.", + + "module.long-jump": "Long Jump", + "module.long-jump.description": "Allows you to jump further than normal.", + "module.long-jump.general.mode": "Mode", + "module.long-jump.general.mode.description": "The method of jumping.", + "module.long-jump.general.vanilla-boost-factor": "Vanilla Boost Factor", + "module.long-jump.general.vanilla-boost-factor.description": "The amount by which to boost the jump.", + "module.long-jump.general.burst-initial-speed": "Burst Initial Speed", + "module.long-jump.general.burst-initial-speed.description": "The initial speed of the runup.", + "module.long-jump.general.burst-boost-factor": "Burst Boost Factor", + "module.long-jump.general.burst-boost-factor.description": "The amount by which to boost the jump.", + "module.long-jump.general.only-on-ground": "Only On Ground", + "module.long-jump.general.only-on-ground.description": "Only performs the jump if you are on the ground.", + "module.long-jump.general.on-jump": "On Jump", + "module.long-jump.general.on-jump.description": "Whether the player needs to jump first or not.", + "module.long-jump.general.glide-multiplier": "Glide Multiplier", + "module.long-jump.general.glide-multiplier.description": "The amount by to multiply the glide velocity.", + "module.long-jump.general.timer": "Timer", + "module.long-jump.general.timer.description": "Timer override.", + "module.long-jump.general.auto-disable": "Auto Disable", + "module.long-jump.general.auto-disable.description": "Automatically disabled the module after jumping.", + "module.long-jump.general.disable-on-rubberband": "Disable On Rubberband", + "module.long-jump.general.disable-on-rubberband.description": "Disables the module when you get lagged back.", + + "module.trajectories": "Trajectories", + "module.trajectories.description": "Predicts the trajectory of throwable items.", + "module.trajectories.general.items": "Items", + "module.trajectories.general.items.description": "Items to display trajectories for.", + "module.trajectories.general.other-players": "Other Players", + "module.trajectories.general.other-players.description": "Calculates trajectories for other players.", + "module.trajectories.general.fired-projectiles": "Fired Projectiles", + "module.trajectories.general.fired-projectiles.description": "Calculates trajectories for already fired projectiles.", + "module.trajectories.general.ignore-wither-skulls": "Ignore Wither Skulls", + "module.trajectories.general.ignore-wither-skulls.description": "Whether to ignore fired wither skulls.", + "module.trajectories.general.accurate": "Accurate", + "module.trajectories.general.accurate.description": "Whether or not to calculate more accurate.", + "module.trajectories.general.simulation-steps": "Simulation Steps", + "module.trajectories.general.simulation-steps.description": "How many steps to simulate projectiles. Zero for no limit", + "module.trajectories.render.ignore-rendering-first-ticks": "Ignore Rendering First Ticks", + "module.trajectories.render.ignore-rendering-first-ticks.description": "Ignores rendering the first given ticks, to make the rest of the path more visible.", + "module.trajectories.render.shape-mode": "Shape Mode", + "module.trajectories.render.shape-mode.description": "How the shapes are rendered.", + "module.trajectories.render.side-color": "Side Color", + "module.trajectories.render.side-color.description": "The side color.", + "module.trajectories.render.line-color": "Line Color", + "module.trajectories.render.line-color.description": "The line color.", + "module.trajectories.render.render-position-boxes": "Render Position Boxes", + "module.trajectories.render.render-position-boxes.description": "Renders the actual position the projectile will be at each tick along it's trajectory.", + "module.trajectories.render.position-box-size": "Position Box Size", + "module.trajectories.render.position-box-size.description": "The size of the box drawn at the simulated positions.", + "module.trajectories.render.position-side-color": "Position Side Color", + "module.trajectories.render.position-side-color.description": "The side color.", + "module.trajectories.render.position-line-color": "Position Line Color", + "module.trajectories.render.position-line-color.description": "The line color.", + + "module.chams": "Chams", + "module.chams.description": "Tweaks rendering of entities.", + "module.chams.through-walls.entities": "Entities", + "module.chams.through-walls.entities.description": "Select entities to show through walls.", + "module.chams.through-walls.shader": "Shader", + "module.chams.through-walls.shader.description": "Renders a shader over of the entities.", + "module.chams.through-walls.color": "Color", + "module.chams.through-walls.color.description": "The color that the shader is drawn with.", + "module.chams.through-walls.ignore-self": "Ignore Self", + "module.chams.through-walls.ignore-self.description": "Ignores yourself drawing the player.", + "module.chams.players.players": "Players", + "module.chams.players.players.description": "Enables model tweaks for players.", + "module.chams.players.ignore-self": "Ignore Self", + "module.chams.players.ignore-self.description": "Ignores yourself when tweaking player models.", + "module.chams.players.texture": "Texture", + "module.chams.players.texture.description": "Enables player model textures.", + "module.chams.players.color": "Color", + "module.chams.players.color.description": "The color of player models.", + "module.chams.players.scale": "Scale", + "module.chams.players.scale.description": "Players scale.", + "module.chams.crystals.crystals": "Crystals", + "module.chams.crystals.crystals.description": "Enables model tweaks for end crystals.", + "module.chams.crystals.scale": "Scale", + "module.chams.crystals.scale.description": "Crystal scale.", + "module.chams.crystals.bounce": "Bounce", + "module.chams.crystals.bounce.description": "How high crystals bounce.", + "module.chams.crystals.rotation-speed": "Rotation Speed", + "module.chams.crystals.rotation-speed.description": "Multiplies the rotation speed of the crystal.", + "module.chams.crystals.texture": "Texture", + "module.chams.crystals.texture.description": "Whether to render crystal model textures.", + "module.chams.crystals.crystal-color": "Crystal Color", + "module.chams.crystals.crystal-color.description": "The color of the of the crystal.", + "module.chams.hand.enabled": "Enabled", + "module.chams.hand.enabled.description": "Enables tweaks of hand rendering.", + "module.chams.hand.texture": "Texture", + "module.chams.hand.texture.description": "Whether to render hand textures.", + "module.chams.hand.hand-color": "Hand Color", + "module.chams.hand.hand-color.description": "The color of your hand.", + + "module.server-spoof": "Server Spoof", + "module.server-spoof.description": "Spoof client brand, resource pack and channels.", + "module.server-spoof.general.spoof-brand": "Spoof Brand", + "module.server-spoof.general.spoof-brand.description": "Whether or not to spoof the brand.", + "module.server-spoof.general.brand": "Brand", + "module.server-spoof.general.brand.description": "Specify the brand that will be send to the server.", + "module.server-spoof.general.resource-pack": "Resource Pack", + "module.server-spoof.general.resource-pack.description": "Spoof accepting server resource pack.", + "module.server-spoof.general.block-channels": "Block Channels", + "module.server-spoof.general.block-channels.description": "Whether or not to block some channels.", + "module.server-spoof.general.channels": "Channels", + "module.server-spoof.general.channels.description": "If the channel contains the keyword, this outgoing channel will be blocked.", + + "module.fullbright": "Fullbright", + "module.fullbright.description": "Lights up your world!", + "module.fullbright.general.mode": "Mode", + "module.fullbright.general.mode.description": "The mode to use for Fullbright.", + "module.fullbright.general.light-type": "Light Type", + "module.fullbright.general.light-type.description": "Which type of light to use for Luminance mode.", + "module.fullbright.general.minimum-light-level": "Minimum Light Level", + "module.fullbright.general.minimum-light-level.description": "Minimum light level when using Luminance mode.", + + "module.freecam": "Freecam", + "module.freecam.description": "Allows the camera to move away from the player.", + "module.freecam.general.speed": "Speed", + "module.freecam.general.speed.description": "Your speed while in freecam.", + "module.freecam.general.speed-scroll-sensitivity": "Speed Scroll Sensitivity", + "module.freecam.general.speed-scroll-sensitivity.description": "Allows you to change speed value using scroll wheel. 0 to disable.", + "module.freecam.general.stay-sneaking": "Stay Sneaking", + "module.freecam.general.stay-sneaking.description": "If you are sneaking when you enter freecam, whether your player should remain sneaking.", + "module.freecam.general.toggle-on-damage": "Toggle On Damage", + "module.freecam.general.toggle-on-damage.description": "Disables freecam when you take damage.", + "module.freecam.general.toggle-on-death": "Toggle On Death", + "module.freecam.general.toggle-on-death.description": "Disables freecam when you die.", + "module.freecam.general.toggle-on-log": "Toggle On Log", + "module.freecam.general.toggle-on-log.description": "Disables freecam when you disconnect from a server.", + "module.freecam.general.reload-chunks": "Reload Chunks", + "module.freecam.general.reload-chunks.description": "Disables cave culling.", + "module.freecam.general.show-hands": "Show Hands", + "module.freecam.general.show-hands.description": "Whether or not to render your hands in freecam.", + "module.freecam.general.rotate": "Rotate", + "module.freecam.general.rotate.description": "Rotates to the block or entity you are looking at.", + "module.freecam.general.static": "Static", + "module.freecam.general.static.description": "Disables settings that move the view.", + "module.freecam.pathing.click-to-path": "Click To Path", + "module.freecam.pathing.click-to-path.description": "Sets a pathfinding goal to any block/entity you click at.", + "module.freecam.pathing.double-click": "Double Click", + "module.freecam.pathing.double-click.description": "Require two clicks to start pathing.", + + "module.exp-thrower": "Exp Thrower", + "module.exp-thrower.description": "Automatically throws XP bottles from your hotbar.", + + "module.auto-totem": "Auto Totem", + "module.auto-totem.description": "Automatically equips a totem in your offhand.", + "module.auto-totem.general.mode": "Mode", + "module.auto-totem.general.mode.description": "Determines when to hold a totem, strict will always hold.", + "module.auto-totem.general.delay": "Delay", + "module.auto-totem.general.delay.description": "The ticks between slot movements.", + "module.auto-totem.general.health": "Health", + "module.auto-totem.general.health.description": "The health to hold a totem at.", + "module.auto-totem.general.elytra": "Elytra", + "module.auto-totem.general.elytra.description": "Will always hold a totem when flying with elytra.", + "module.auto-totem.general.fall": "Fall", + "module.auto-totem.general.fall.description": "Will hold a totem when fall damage could kill you.", + "module.auto-totem.general.explosion": "Explosion", + "module.auto-totem.general.explosion.description": "Will hold a totem when explosion damage could kill you.", + + "module.book-bot": "Book Bot", + "module.book-bot.description": "Automatically writes in books.", + "module.book-bot.general.mode": "Mode", + "module.book-bot.general.mode.description": "What kind of text to write.", + "module.book-bot.general.pages": "Pages", + "module.book-bot.general.pages.description": "The number of pages to write per book.", + "module.book-bot.general.ascii-only": "Ascii Only", + "module.book-bot.general.ascii-only.description": "Only uses the characters in the ASCII charset.", + "module.book-bot.general.delay": "Delay", + "module.book-bot.general.delay.description": "The amount of delay between writing books.", + "module.book-bot.general.sign": "Sign", + "module.book-bot.general.sign.description": "Whether to sign the book.", + "module.book-bot.general.name": "Name", + "module.book-bot.general.name.description": "The name you want to give your books.", + "module.book-bot.general.append-count": "Append Count", + "module.book-bot.general.append-count.description": "Whether to append the number of the book to the title.", + "module.book-bot.general.word-wrap": "Word Wrap", + "module.book-bot.general.word-wrap.description": "Prevents words from being cut in the middle of lines.", + + "module.auto-gap": "Auto Gap", + "module.auto-gap.description": "Automatically eats Gaps or E-Gaps.", + "module.auto-gap.general.allow-egap": "Allow Egap", + "module.auto-gap.general.allow-egap.description": "Allow eating E-Gaps over Gaps if found.", + "module.auto-gap.general.always": "Always", + "module.auto-gap.general.always.description": "If it should always eat.", + "module.auto-gap.general.pause-auras": "Pause Auras", + "module.auto-gap.general.pause-auras.description": "Pauses all auras when eating.", + "module.auto-gap.general.pause-baritone": "Pause Baritone", + "module.auto-gap.general.pause-baritone.description": "Pause baritone when eating.", + "module.auto-gap.potions.before-expiry": "Before Expiry", + "module.auto-gap.potions.before-expiry.description": "If it should eat before potion effects expire.", + "module.auto-gap.potions.expiry-threshold": "Expiry Threshold", + "module.auto-gap.potions.expiry-threshold.description": "Time in ticks before the potion effect expires to start eating.", + "module.auto-gap.potions.potions-regeneration": "Potions Regeneration", + "module.auto-gap.potions.potions-regeneration.description": "If it should eat when Regeneration runs out.", + "module.auto-gap.potions.potions-fire-resistance": "Potions Fire Resistance", + "module.auto-gap.potions.potions-fire-resistance.description": "If it should eat when Fire Resistance runs out. Requires E-Gaps.", + "module.auto-gap.potions.potions-absorption": "Potions Absorption", + "module.auto-gap.potions.potions-absorption.description": "If it should eat when Absorption runs out. Requires E-Gaps.", + "module.auto-gap.health.health-enabled": "Health Enabled", + "module.auto-gap.health.health-enabled.description": "If it should eat when health drops below threshold.", + "module.auto-gap.health.health-threshold": "Health Threshold", + "module.auto-gap.health.health-threshold.description": "Health threshold to eat at. Includes absorption.", + + "module.middle-click-extra": "Middle Click Extra", + "module.middle-click-extra.description": "Perform various actions when you middle click.", + "module.middle-click-extra.general.mode": "Mode", + "module.middle-click-extra.general.mode.description": "Which item to use when you middle click.", + "module.middle-click-extra.general.send-message": "Send Message", + "module.middle-click-extra.general.send-message.description": "Sends a message when you add a player as a friend.", + "module.middle-click-extra.general.message-to-send": "Message To Send", + "module.middle-click-extra.general.message-to-send.description": "Message to send when you add a player as a friend (use %player for the player's name)", + "module.middle-click-extra.general.quick-swap": "Quick Swap", + "module.middle-click-extra.general.quick-swap.description": "Allows you to use items in your inventory by simulating hotbar key presses. May get flagged by anticheats.", + "module.middle-click-extra.general.swap-back": "Swap Back", + "module.middle-click-extra.general.swap-back.description": "Swap back to your original slot when you finish using an item.", + "module.middle-click-extra.general.disable-in-creative": "Disable In Creative", + "module.middle-click-extra.general.disable-in-creative.description": "Middle click action is disabled in Creative mode.", + "module.middle-click-extra.general.notify": "Notify", + "module.middle-click-extra.general.notify.description": "Notifies you when you do not have the specified item in your hotbar.", + + "module.logout-spots": "Logout Spots", + "module.logout-spots.description": "Displays a box where another player has logged out at.", + "module.logout-spots.general.scale": "Scale", + "module.logout-spots.general.scale.description": "The scale.", + "module.logout-spots.general.full-height": "Full Height", + "module.logout-spots.general.full-height.description": "Displays the height as the player's full height.", + "module.logout-spots.render.shape-mode": "Shape Mode", + "module.logout-spots.render.shape-mode.description": "How the shapes are rendered.", + "module.logout-spots.render.side-color": "Side Color", + "module.logout-spots.render.side-color.description": "The side color.", + "module.logout-spots.render.line-color": "Line Color", + "module.logout-spots.render.line-color.description": "The line color.", + "module.logout-spots.render.name-color": "Name Color", + "module.logout-spots.render.name-color.description": "The name color.", + "module.logout-spots.render.name-background-color": "Name Background Color", + "module.logout-spots.render.name-background-color.description": "The name background color.", + + "module.sound-blocker": "Sound Blocker", + "module.sound-blocker.description": "Cancels out selected sounds.", + "module.sound-blocker.general.sounds": "Sounds", + "module.sound-blocker.general.sounds.description": "Sounds to block.", + + "module.vein-miner": "Vein Miner", + "module.vein-miner.description": "Mines all nearby blocks with this type", + "module.vein-miner.general.blocks": "Blocks", + "module.vein-miner.general.blocks.description": "Which blocks to select.", + "module.vein-miner.general.mode": "Mode", + "module.vein-miner.general.mode.description": "Selection mode.", + "module.vein-miner.general.depth": "Depth", + "module.vein-miner.general.depth.description": "Amount of iterations used to scan for similar blocks.", + "module.vein-miner.general.delay": "Delay", + "module.vein-miner.general.delay.description": "Delay between mining blocks.", + "module.vein-miner.general.rotate": "Rotate", + "module.vein-miner.general.rotate.description": "Sends rotation packets to the server when mining.", + "module.vein-miner.render.swing-hand": "Swing Hand", + "module.vein-miner.render.swing-hand.description": "Swing hand client-side.", + "module.vein-miner.render.render": "Render", + "module.vein-miner.render.render.description": "Whether or not to render the block being mined.", + "module.vein-miner.render.shape-mode": "Shape Mode", + "module.vein-miner.render.shape-mode.description": "How the shapes are rendered.", + "module.vein-miner.render.side-color": "Side Color", + "module.vein-miner.render.side-color.description": "The color of the sides of the blocks being rendered.", + "module.vein-miner.render.line-color": "Line Color", + "module.vein-miner.render.line-color.description": "The color of the lines of the blocks being rendered.", + + "module.nuker": "Nuker", + "module.nuker.description": "Breaks blocks around you.", + "module.nuker.general.shape": "Shape", + "module.nuker.general.shape.description": "The shape of nuking algorithm.", + "module.nuker.general.mode": "Mode", + "module.nuker.general.mode.description": "The way the blocks are broken.", + "module.nuker.general.range": "Range", + "module.nuker.general.range.description": "The break range.", + "module.nuker.general.up": "Up", + "module.nuker.general.up.description": "The break range.", + "module.nuker.general.down": "Down", + "module.nuker.general.down.description": "The break range.", + "module.nuker.general.left": "Left", + "module.nuker.general.left.description": "The break range.", + "module.nuker.general.right": "Right", + "module.nuker.general.right.description": "The break range.", + "module.nuker.general.forward": "Forward", + "module.nuker.general.forward.description": "The break range.", + "module.nuker.general.back": "Back", + "module.nuker.general.back.description": "The break range.", + "module.nuker.general.walls-range": "Walls Range", + "module.nuker.general.walls-range.description": "Range in which to break when behind blocks.", + "module.nuker.general.delay": "Delay", + "module.nuker.general.delay.description": "Delay in ticks between breaking blocks.", + "module.nuker.general.max-blocks-per-tick": "Max Blocks Per Tick", + "module.nuker.general.max-blocks-per-tick.description": "Maximum blocks to try to break per tick. Useful when insta mining.", + "module.nuker.general.sort-mode": "Sort Mode", + "module.nuker.general.sort-mode.description": "The blocks you want to mine first.", + "module.nuker.general.packet-mine": "Packet Mine", + "module.nuker.general.packet-mine.description": "Attempt to instamine everything at once.", + "module.nuker.general.only-suitable-tools": "Only Suitable Tools", + "module.nuker.general.only-suitable-tools.description": "Only mines when using an appropriate for the block.", + "module.nuker.general.interact": "Interact", + "module.nuker.general.interact.description": "Interacts with the block instead of mining.", + "module.nuker.general.rotate": "Rotate", + "module.nuker.general.rotate.description": "Rotates server-side to the block being mined.", + "module.nuker.whitelist.list-mode": "List Mode", + "module.nuker.whitelist.list-mode.description": "Selection mode.", + "module.nuker.whitelist.blacklist": "Blacklist", + "module.nuker.whitelist.blacklist.description": "The blocks you don't want to mine.", + "module.nuker.whitelist.whitelist": "Whitelist", + "module.nuker.whitelist.whitelist.description": "The blocks you want to mine.", + "module.nuker.whitelist.select-block-bind": "Select Block Bind", + "module.nuker.whitelist.select-block-bind.description": "Adds targeted block to list when this button is pressed.", + "module.nuker.render.swing": "Swing", + "module.nuker.render.swing.description": "Whether to swing hand client-side.", + "module.nuker.render.bounding-box": "Bounding Box", + "module.nuker.render.bounding-box.description": "Enable rendering bounding box for Cube and Uniform Cube.", + "module.nuker.render.nuke-box-mode": "Nuke Box Mode", + "module.nuker.render.nuke-box-mode.description": "How the shape for the bounding box is rendered.", + "module.nuker.render.side-color": "Side Color", + "module.nuker.render.side-color.description": "The side color of the bounding box.", + "module.nuker.render.line-color": "Line Color", + "module.nuker.render.line-color.description": "The line color of the bounding box.", + "module.nuker.render.broken-blocks": "Broken Blocks", + "module.nuker.render.broken-blocks.description": "Enable rendering bounding box for Cube and Uniform Cube.", + "module.nuker.render.nuke-block-mode": "Nuke Block Mode", + "module.nuker.render.nuke-block-mode.description": "How the shapes for broken blocks are rendered.", + "module.nuker.render.breaking-side-color": "Breaking Side Color", + "module.nuker.render.breaking-side-color.description": "The side color of the target block rendering.", + "module.nuker.render.breaking-line-color": "Breaking Line Color", + "module.nuker.render.breaking-line-color.description": "The line color of the target block rendering.", + + "module.auto-trap": "Auto Trap", + "module.auto-trap.description": "Traps people in a box to prevent them from moving.", + "module.auto-trap.general.whitelist": "Whitelist", + "module.auto-trap.general.whitelist.description": "Which blocks to use.", + "module.auto-trap.general.place-range": "Place Range", + "module.auto-trap.general.place-range.description": "The range at which blocks can be placed.", + "module.auto-trap.general.walls-range": "Walls Range", + "module.auto-trap.general.walls-range.description": "Range in which to place when behind blocks.", + "module.auto-trap.general.target-priority": "Target Priority", + "module.auto-trap.general.target-priority.description": "How to select the player to target.", + "module.auto-trap.general.target-range": "Target Range", + "module.auto-trap.general.target-range.description": "The maximum distance to target players.", + "module.auto-trap.general.place-delay": "Place Delay", + "module.auto-trap.general.place-delay.description": "How many ticks between block placements.", + "module.auto-trap.general.blocks-per-tick": "Blocks Per Tick", + "module.auto-trap.general.blocks-per-tick.description": "How many blocks to place in one tick.", + "module.auto-trap.general.top-blocks": "Top Blocks", + "module.auto-trap.general.top-blocks.description": "Which blocks to place on the top half of the target.", + "module.auto-trap.general.bottom-blocks": "Bottom Blocks", + "module.auto-trap.general.bottom-blocks.description": "Which blocks to place on the bottom half of the target.", + "module.auto-trap.general.self-toggle": "Self Toggle", + "module.auto-trap.general.self-toggle.description": "Turns off after placing all blocks.", + "module.auto-trap.general.rotate": "Rotate", + "module.auto-trap.general.rotate.description": "Rotates towards blocks when placing.", + "module.auto-trap.render.render": "Render", + "module.auto-trap.render.render.description": "Renders an overlay where blocks will be placed.", + "module.auto-trap.render.shape-mode": "Shape Mode", + "module.auto-trap.render.shape-mode.description": "How the shapes are rendered.", + "module.auto-trap.render.side-color": "Side Color", + "module.auto-trap.render.side-color.description": "The side color of the target block rendering.", + "module.auto-trap.render.line-color": "Line Color", + "module.auto-trap.render.line-color.description": "The line color of the target block rendering.", + "module.auto-trap.render.next-side-color": "Next Side Color", + "module.auto-trap.render.next-side-color.description": "The side color of the next block to be placed.", + "module.auto-trap.render.next-line-color": "Next Line Color", + "module.auto-trap.render.next-line-color.description": "The line color of the next block to be placed.", + + "module.wall-hack": "Wall Hack", + "module.wall-hack.description": "Makes blocks translucent.", + "module.wall-hack.general.opacity": "Opacity", + "module.wall-hack.general.opacity.description": "The opacity for rendered blocks.", + "module.wall-hack.general.blocks": "Blocks", + "module.wall-hack.general.blocks.description": "What blocks should be targeted for Wall Hack.", + "module.wall-hack.general.occlude-chunks": "Occlude Chunks", + "module.wall-hack.general.occlude-chunks.description": "Whether caves should occlude underground (may look wonky when on).", + + "module.no-render": "No Render", + "module.no-render.description": "Disables certain animations or overlays from rendering.", + "module.no-render.overlay.portal-overlay": "Portal Overlay", + "module.no-render.overlay.portal-overlay.description": "Disables rendering of the nether portal overlay.", + "module.no-render.overlay.spyglass-overlay": "Spyglass Overlay", + "module.no-render.overlay.spyglass-overlay.description": "Disables rendering of the spyglass overlay.", + "module.no-render.overlay.nausea": "Nausea", + "module.no-render.overlay.nausea.description": "Disables rendering of the nausea overlay.", + "module.no-render.overlay.pumpkin-overlay": "Pumpkin Overlay", + "module.no-render.overlay.pumpkin-overlay.description": "Disables rendering of the pumpkin head overlay", + "module.no-render.overlay.powdered-snow-overlay": "Powdered Snow Overlay", + "module.no-render.overlay.powdered-snow-overlay.description": "Disables rendering of the powdered snow overlay.", + "module.no-render.overlay.fire-overlay": "Fire Overlay", + "module.no-render.overlay.fire-overlay.description": "Disables rendering of the fire overlay.", + "module.no-render.overlay.liquid-overlay": "Liquid Overlay", + "module.no-render.overlay.liquid-overlay.description": "Disables rendering of the liquid overlay.", + "module.no-render.overlay.in-wall-overlay": "In Wall Overlay", + "module.no-render.overlay.in-wall-overlay.description": "Disables rendering of the overlay when inside blocks.", + "module.no-render.overlay.vignette": "Vignette", + "module.no-render.overlay.vignette.description": "Disables rendering of the vignette overlay.", + "module.no-render.overlay.gui-background": "Gui Background", + "module.no-render.overlay.gui-background.description": "Disables rendering of the GUI background overlay.", + "module.no-render.overlay.totem-animation": "Totem Animation", + "module.no-render.overlay.totem-animation.description": "Disables rendering of the totem animation when you pop a totem.", + "module.no-render.overlay.eating-particles": "Eating Particles", + "module.no-render.overlay.eating-particles.description": "Disables rendering of eating particles.", + "module.no-render.overlay.enchantment-glint": "Enchantment Glint", + "module.no-render.overlay.enchantment-glint.description": "Disables rending of the enchantment glint.", + "module.no-render.hud.boss-bar": "Boss Bar", + "module.no-render.hud.boss-bar.description": "Disable rendering of boss bars.", + "module.no-render.hud.scoreboard": "Scoreboard", + "module.no-render.hud.scoreboard.description": "Disable rendering of the scoreboard.", + "module.no-render.hud.crosshair": "Crosshair", + "module.no-render.hud.crosshair.description": "Disables rendering of the crosshair.", + "module.no-render.hud.title": "Title", + "module.no-render.hud.title.description": "Disables rendering of the title.", + "module.no-render.hud.held-item-name": "Held Item Name", + "module.no-render.hud.held-item-name.description": "Disables rendering of the held item name.", + "module.no-render.hud.obfuscation": "Obfuscation", + "module.no-render.hud.obfuscation.description": "Disables obfuscation styling of characters.", + "module.no-render.hud.potion-icons": "Potion Icons", + "module.no-render.hud.potion-icons.description": "Disables rendering of status effect icons.", + "module.no-render.hud.message-signature-indicator": "Message Signature Indicator", + "module.no-render.hud.message-signature-indicator.description": "Disables chat message signature indicator on the left of the message.", + "module.no-render.world.weather": "Weather", + "module.no-render.world.weather.description": "Disables rendering of weather.", + "module.no-render.world.world-border": "World Border", + "module.no-render.world.world-border.description": "Disables rendering of the world border.", + "module.no-render.world.blindness": "Blindness", + "module.no-render.world.blindness.description": "Disables rendering of blindness.", + "module.no-render.world.darkness": "Darkness", + "module.no-render.world.darkness.description": "Disables rendering of darkness.", + "module.no-render.world.fog": "Fog", + "module.no-render.world.fog.description": "Disables rendering of fog.", + "module.no-render.world.enchantment-table-book": "Enchantment Table Book", + "module.no-render.world.enchantment-table-book.description": "Disables rendering of books above enchanting tables.", + "module.no-render.world.sign-text": "Sign Text", + "module.no-render.world.sign-text.description": "Disables rendering of text on signs.", + "module.no-render.world.block-break-particles": "Block Break Particles", + "module.no-render.world.block-break-particles.description": "Disables rendering of block-break particles.", + "module.no-render.world.block-break-overlay": "Block Break Overlay", + "module.no-render.world.block-break-overlay.description": "Disables rendering of block-break overlay.", + "module.no-render.world.beacon-beams": "Beacon Beams", + "module.no-render.world.beacon-beams.description": "Disables rendering of beacon beams.", + "module.no-render.world.falling-blocks": "Falling Blocks", + "module.no-render.world.falling-blocks.description": "Disables rendering of falling blocks.", + "module.no-render.world.cave-culling": "Cave Culling", + "module.no-render.world.cave-culling.description": "Disables Minecraft's cave culling algorithm.", + "module.no-render.world.map-markers": "Map Markers", + "module.no-render.world.map-markers.description": "Disables markers on maps.", + "module.no-render.world.map-contents": "Map Contents", + "module.no-render.world.map-contents.description": "Disable rendering of maps.", + "module.no-render.world.banners": "Banners", + "module.no-render.world.banners.description": "Changes rendering of banners.", + "module.no-render.world.firework-explosions": "Firework Explosions", + "module.no-render.world.firework-explosions.description": "Disables rendering of firework explosions.", + "module.no-render.world.particles": "Particles", + "module.no-render.world.particles.description": "Particles to not render.", + "module.no-render.world.barrier-invisibility": "Barrier Invisibility", + "module.no-render.world.barrier-invisibility.description": "Disables barriers being invisible when not holding one.", + "module.no-render.world.texture-rotations": "Texture Rotations", + "module.no-render.world.texture-rotations.description": "Changes texture rotations and model offsets to use a constant value instead of the block position.", + "module.no-render.world.block-entities": "Block Entities", + "module.no-render.world.block-entities.description": "Block entities (chest, shulker block, etc.) to not render.", + "module.no-render.entity.entities": "Entities", + "module.no-render.entity.entities.description": "Disables rendering of selected entities.", + "module.no-render.entity.drop-spawn-packets": "Drop Spawn Packets", + "module.no-render.entity.drop-spawn-packets.description": "WARNING! Drops all spawn packets of entities selected in the above list.", + "module.no-render.entity.armor": "Armor", + "module.no-render.entity.armor.description": "Disables rendering of armor on entities.", + "module.no-render.entity.invisibility": "Invisibility", + "module.no-render.entity.invisibility.description": "Shows invisible entities.", + "module.no-render.entity.glowing": "Glowing", + "module.no-render.entity.glowing.description": "Disables rendering of the glowing effect", + "module.no-render.entity.spawner-entities": "Spawner Entities", + "module.no-render.entity.spawner-entities.description": "Disables rendering of spinning mobs inside of mob spawners", + "module.no-render.entity.dead-entities": "Dead Entities", + "module.no-render.entity.dead-entities.description": "Disables rendering of dead entities", + "module.no-render.entity.nametags": "Nametags", + "module.no-render.entity.nametags.description": "Disables rendering of entity nametags", + + "module.hand-view": "Hand View", + "module.hand-view.description": "Alters the way items are rendered in your hands.", + "module.hand-view.general.server-rotations": "Server Rotations", + "module.hand-view.general.server-rotations.description": "Makes your hands follow your serverside rotations.", + "module.hand-view.general.old-animations": "Old Animations", + "module.hand-view.general.old-animations.description": "Changes hit animations to those like 1.8", + "module.hand-view.general.skip-swapping-animation": "Skip Swapping Animation", + "module.hand-view.general.skip-swapping-animation.description": "Whether or not to skip the item swapping animation", + "module.hand-view.general.disable-eating-animation": "Disable Eating Animation", + "module.hand-view.general.disable-eating-animation.description": "Disables the eating animation. Potentially desirable if it goes offscreen.", + "module.hand-view.general.swing-mode": "Swing Mode", + "module.hand-view.general.swing-mode.description": "Modifies your client & server hand swinging.", + "module.hand-view.general.swing-speed": "Swing Speed", + "module.hand-view.general.swing-speed.description": "The swing speed of your hands.", + "module.hand-view.general.main-hand-progress": "Main Hand Progress", + "module.hand-view.general.main-hand-progress.description": "The swing progress of your main hand.", + "module.hand-view.general.off-hand-progress": "Off Hand Progress", + "module.hand-view.general.off-hand-progress.description": "The swing progress of your off hand.", + "module.hand-view.main-hand.scale": "Scale", + "module.hand-view.main-hand.scale.description": "The scale of your main hand.", + "module.hand-view.main-hand.position": "Position", + "module.hand-view.main-hand.position.description": "The position of your main hand.", + "module.hand-view.main-hand.rotation": "Rotation", + "module.hand-view.main-hand.rotation.description": "The rotation of your main hand.", + "module.hand-view.off-hand.scale": "Scale", + "module.hand-view.off-hand.scale.description": "The scale of your off hand.", + "module.hand-view.off-hand.position": "Position", + "module.hand-view.off-hand.position.description": "The position of your off hand.", + "module.hand-view.off-hand.rotation": "Rotation", + "module.hand-view.off-hand.rotation.description": "The rotation of your off hand.", + "module.hand-view.arm.scale": "Scale", + "module.hand-view.arm.position": "Position", + "module.hand-view.arm.rotation": "Rotation", + + "module.instant-rebreak": "Instant Rebreak", + "module.instant-rebreak.description": "Instantly re-breaks blocks in the same position.", + "module.instant-rebreak.general.delay": "Delay", + "module.instant-rebreak.general.delay.description": "The delay between break attempts.", + "module.instant-rebreak.general.only-pick": "Only Pick", + "module.instant-rebreak.general.only-pick.description": "Only tries to mine the block if you are holding a pickaxe.", + "module.instant-rebreak.general.rotate": "Rotate", + "module.instant-rebreak.general.rotate.description": "Faces the block being mined server side.", + "module.instant-rebreak.render.render": "Render", + "module.instant-rebreak.render.render.description": "Renders an overlay on the block being broken.", + "module.instant-rebreak.render.shape-mode": "Shape Mode", + "module.instant-rebreak.render.shape-mode.description": "How the shapes are rendered.", + "module.instant-rebreak.render.side-color": "Side Color", + "module.instant-rebreak.render.side-color.description": "The color of the sides of the blocks being rendered.", + "module.instant-rebreak.render.line-color": "Line Color", + "module.instant-rebreak.render.line-color.description": "The color of the lines of the blocks being rendered.", + + "module.liquid-interact": "Liquid Interact", + "module.liquid-interact.description": "Allows you to interact with liquids.", + + "module.crystal-aura": "Crystal Aura", + "module.crystal-aura.description": "Automatically places and attacks crystals.", + "module.crystal-aura.general.target-range": "Target Range", + "module.crystal-aura.general.target-range.description": "Range in which to target players.", + "module.crystal-aura.general.predict-movement": "Predict Movement", + "module.crystal-aura.general.predict-movement.description": "Predicts target movement.", + "module.crystal-aura.general.min-damage": "Min Damage", + "module.crystal-aura.general.min-damage.description": "Minimum damage the crystal needs to deal to your target.", + "module.crystal-aura.general.max-damage": "Max Damage", + "module.crystal-aura.general.max-damage.description": "Maximum damage crystals can deal to yourself.", + "module.crystal-aura.general.anti-suicide": "Anti Suicide", + "module.crystal-aura.general.anti-suicide.description": "Will not place and break crystals if they will kill you.", + "module.crystal-aura.general.ignore-nakeds": "Ignore Nakeds", + "module.crystal-aura.general.ignore-nakeds.description": "Ignore players with no items.", + "module.crystal-aura.general.rotate": "Rotate", + "module.crystal-aura.general.rotate.description": "Rotates server-side towards the crystals being hit/placed.", + "module.crystal-aura.general.yaw-steps-mode": "Yaw Steps Mode", + "module.crystal-aura.general.yaw-steps-mode.description": "When to run the yaw steps check.", + "module.crystal-aura.general.yaw-steps": "Yaw Steps", + "module.crystal-aura.general.yaw-steps.description": "Maximum number of degrees its allowed to rotate in one tick.", + "module.crystal-aura.general.entities": "Entities", + "module.crystal-aura.general.entities.description": "Entities to attack.", + "module.crystal-aura.switch.auto-switch": "Auto Switch", + "module.crystal-aura.switch.auto-switch.description": "Switches to crystals in your hotbar once a target is found.", + "module.crystal-aura.switch.switch-delay": "Switch Delay", + "module.crystal-aura.switch.switch-delay.description": "The delay in ticks to wait to break a crystal after switching hotbar slot.", + "module.crystal-aura.switch.no-gap-switch": "No Gap Switch", + "module.crystal-aura.switch.no-gap-switch.description": "Won't auto switch if you're holding a gapple.", + "module.crystal-aura.switch.no-bow-switch": "No Bow Switch", + "module.crystal-aura.switch.no-bow-switch.description": "Won't auto switch if you're holding a bow.", + "module.crystal-aura.switch.anti-weakness": "Anti Weakness", + "module.crystal-aura.switch.anti-weakness.description": "Switches to tools with so you can break crystals with the weakness effect.", + "module.crystal-aura.place.place": "Place", + "module.crystal-aura.place.place.description": "If the CA should place crystals.", + "module.crystal-aura.place.place-delay": "Place Delay", + "module.crystal-aura.place.place-delay.description": "The delay in ticks to wait to place a crystal after it's exploded.", + "module.crystal-aura.place.place-range": "Place Range", + "module.crystal-aura.place.place-range.description": "Range in which to place crystals.", + "module.crystal-aura.place.walls-range": "Walls Range", + "module.crystal-aura.place.walls-range.description": "Range in which to place crystals when behind blocks.", + "module.crystal-aura.place.1.12-placement": "1.12 Placement", + "module.crystal-aura.place.1.12-placement.description": "Uses 1.12 crystal placement.", + "module.crystal-aura.place.support": "Support", + "module.crystal-aura.place.support.description": "Places a support block in air if no other position have been found.", + "module.crystal-aura.place.support-delay": "Support Delay", + "module.crystal-aura.place.support-delay.description": "Delay in ticks after placing support block.", + "module.crystal-aura.face-place.face-place": "Face Place", + "module.crystal-aura.face-place.face-place.description": "Will face-place when target is below a certain health or armor durability threshold.", + "module.crystal-aura.face-place.face-place-health": "Face Place Health", + "module.crystal-aura.face-place.face-place-health.description": "The health the target has to be at to start face placing.", + "module.crystal-aura.face-place.face-place-durability": "Face Place Durability", + "module.crystal-aura.face-place.face-place-durability.description": "The durability threshold percentage to be able to face-place.", + "module.crystal-aura.face-place.face-place-missing-armor": "Face Place Missing Armor", + "module.crystal-aura.face-place.face-place-missing-armor.description": "Automatically starts face placing when a target misses a piece of armor.", + "module.crystal-aura.face-place.force-face-place": "Force Face Place", + "module.crystal-aura.face-place.force-face-place.description": "Starts face place when this button is pressed.", + "module.crystal-aura.break.break": "Break", + "module.crystal-aura.break.break.description": "If the CA should break crystals.", + "module.crystal-aura.break.break-delay": "Break Delay", + "module.crystal-aura.break.break-delay.description": "The delay in ticks to wait to break a crystal after it's placed.", + "module.crystal-aura.break.smart-delay": "Smart Delay", + "module.crystal-aura.break.smart-delay.description": "Only breaks crystals when the target can receive damage.", + "module.crystal-aura.break.break-range": "Break Range", + "module.crystal-aura.break.break-range.description": "Range in which to break crystals.", + "module.crystal-aura.break.walls-range": "Walls Range", + "module.crystal-aura.break.walls-range.description": "Range in which to break crystals when behind blocks.", + "module.crystal-aura.break.only-own": "Only Own", + "module.crystal-aura.break.only-own.description": "Only breaks own crystals.", + "module.crystal-aura.break.break-attempts": "Break Attempts", + "module.crystal-aura.break.break-attempts.description": "How many times to hit a crystal before stopping to target it.", + "module.crystal-aura.break.ticks-existed": "Ticks Existed", + "module.crystal-aura.break.ticks-existed.description": "Amount of ticks a crystal needs to have lived for it to be attacked by CrystalAura.", + "module.crystal-aura.break.attack-frequency": "Attack Frequency", + "module.crystal-aura.break.attack-frequency.description": "Maximum hits to do per second.", + "module.crystal-aura.break.fast-break": "Fast Break", + "module.crystal-aura.break.fast-break.description": "Ignores break delay and tries to break the crystal as soon as it's spawned in the world.", + "module.crystal-aura.pause.pause-on-use": "Pause On Use", + "module.crystal-aura.pause.pause-on-use.description": "Which processes should be paused while using an item.", + "module.crystal-aura.pause.pause-on-mine": "Pause On Mine", + "module.crystal-aura.pause.pause-on-mine.description": "Which processes should be paused while mining a block.", + "module.crystal-aura.pause.pause-on-lag": "Pause On Lag", + "module.crystal-aura.pause.pause-on-lag.description": "Whether to pause if the server is not responding.", + "module.crystal-aura.pause.pause-modules": "Pause Modules", + "module.crystal-aura.pause.pause-modules.description": "Pauses while any of the selected modules are active.", + "module.crystal-aura.pause.pause-health": "Pause Health", + "module.crystal-aura.pause.pause-health.description": "Pauses when you go below a certain health.", + "module.crystal-aura.render.swing-mode": "Swing Mode", + "module.crystal-aura.render.swing-mode.description": "How to swing when placing.", + "module.crystal-aura.render.render-mode": "Render Mode", + "module.crystal-aura.render.render-mode.description": "The mode to render in.", + "module.crystal-aura.render.render-place": "Render Place", + "module.crystal-aura.render.render-place.description": "Renders a block overlay over the block the crystals are being placed on.", + "module.crystal-aura.render.place-time": "Place Time", + "module.crystal-aura.render.place-time.description": "How long to render placements.", + "module.crystal-aura.render.render-break": "Render Break", + "module.crystal-aura.render.render-break.description": "Renders a block overlay over the block the crystals are broken on.", + "module.crystal-aura.render.break-time": "Break Time", + "module.crystal-aura.render.break-time.description": "How long to render breaking for.", + "module.crystal-aura.render.smoothness": "Smoothness", + "module.crystal-aura.render.smoothness.description": "How smoothly the render should move around.", + "module.crystal-aura.render.height": "Height", + "module.crystal-aura.render.height.description": "How tall the gradient should be.", + "module.crystal-aura.render.render-time": "Render Time", + "module.crystal-aura.render.render-time.description": "How long to render placements.", + "module.crystal-aura.render.shape-mode": "Shape Mode", + "module.crystal-aura.render.shape-mode.description": "How the shapes are rendered.", + "module.crystal-aura.render.side-color": "Side Color", + "module.crystal-aura.render.side-color.description": "The side color of the block overlay.", + "module.crystal-aura.render.line-color": "Line Color", + "module.crystal-aura.render.line-color.description": "The line color of the block overlay.", + "module.crystal-aura.render.damage": "Damage", + "module.crystal-aura.render.damage.description": "Renders crystal damage text in the block overlay.", + "module.crystal-aura.render.damage-color": "Damage Color", + "module.crystal-aura.render.damage-color.description": "The color of the damage text.", + "module.crystal-aura.render.damage-scale": "Damage Scale", + "module.crystal-aura.render.damage-scale.description": "How big the damage text should be.", + + "module.spider": "Spider", + "module.spider.description": "Allows you to climb walls like a spider.", + "module.spider.general.climb-speed": "Climb Speed", + "module.spider.general.climb-speed.description": "The speed you go up blocks.", + + "module.auto-log": "Auto Log", + "module.auto-log.description": "Automatically disconnects you when certain requirements are met.", + "module.auto-log.general.health": "Health", + "module.auto-log.general.health.description": "Automatically disconnects when health is lower or equal to this value. Set to 0 to disable.", + "module.auto-log.general.predict-incoming-damage": "Predict Incoming Damage", + "module.auto-log.general.predict-incoming-damage.description": "Disconnects when it detects you're about to take enough damage to set you under the 'health' setting.", + "module.auto-log.general.totem-pops": "Totem Pops", + "module.auto-log.general.totem-pops.description": "Disconnects when you have popped this many totems. Set to 0 to disable.", + "module.auto-log.general.only-trusted": "Only Trusted", + "module.auto-log.general.only-trusted.description": "Disconnects when a player not on your friends list appears in render distance.", + "module.auto-log.general.32K": "32K", + "module.auto-log.general.32K.description": "Disconnects when a player near you can instantly kill you.", + "module.auto-log.general.smart-toggle": "Smart Toggle", + "module.auto-log.general.smart-toggle.description": "Disables Auto Log after a low-health logout. WILL re-enable once you heal.", + "module.auto-log.general.toggle-off": "Toggle Off", + "module.auto-log.general.toggle-off.description": "Disables Auto Log after usage.", + "module.auto-log.general.toggle-auto-reconnect": "Toggle Auto Reconnect", + "module.auto-log.general.toggle-auto-reconnect.description": "Whether to disable Auto Reconnect after a logout.", + "module.auto-log.entities.entities": "Entities", + "module.auto-log.entities.entities.description": "Disconnects when a specified entity is present within a specified range.", + "module.auto-log.entities.use-total-count": "Use Total Count", + "module.auto-log.entities.use-total-count.description": "Toggle between counting the total number of all selected entities or each entity individually.", + "module.auto-log.entities.combined-entity-threshold": "Combined Entity Threshold", + "module.auto-log.entities.combined-entity-threshold.description": "The minimum total number of selected entities that must be near you before disconnection occurs.", + "module.auto-log.entities.individual-entity-threshold": "Individual Entity Threshold", + "module.auto-log.entities.individual-entity-threshold.description": "The minimum number of entities individually that must be near you before disconnection occurs.", + "module.auto-log.entities.range": "Range", + "module.auto-log.entities.range.description": "How close an entity has to be to you before you disconnect.", + + "module.high-jump": "High Jump", + "module.high-jump.description": "Makes you jump higher than normal.", + "module.high-jump.general.jump-multiplier": "Jump Multiplier", + "module.high-jump.general.jump-multiplier.description": "Jump height multiplier.", + + "module.speed": "Speed", + "module.speed.description": "Modifies your movement speed when moving on the ground.", + "module.speed.general.mode": "Mode", + "module.speed.general.mode.description": "The method of applying speed.", + "module.speed.general.vanilla-speed": "Vanilla Speed", + "module.speed.general.vanilla-speed.description": "The speed in blocks per second.", + "module.speed.general.strafe-speed": "Strafe Speed", + "module.speed.general.strafe-speed.description": "The speed.", + "module.speed.general.speed-limit": "Speed Limit", + "module.speed.general.speed-limit.description": "Limits your speed on servers with very strict anticheats.", + "module.speed.general.timer": "Timer", + "module.speed.general.timer.description": "Timer override.", + "module.speed.general.in-liquids": "In Liquids", + "module.speed.general.in-liquids.description": "Uses speed when in lava or water.", + "module.speed.general.when-sneaking": "When Sneaking", + "module.speed.general.when-sneaking.description": "Uses speed when sneaking.", + "module.speed.general.only-on-ground": "Only On Ground", + "module.speed.general.only-on-ground.description": "Uses speed only when standing on a block.", + + "module.offhand": "Offhand", + "module.offhand.description": "Allows you to hold specified items in your offhand.", + "module.offhand.combat.item-switch-delay": "Item Switch Delay", + "module.offhand.combat.item-switch-delay.description": "The delay in ticks between slot movements.", + "module.offhand.combat.item": "Item", + "module.offhand.combat.item.description": "Which item to hold in your offhand.", + "module.offhand.combat.hotbar": "Hotbar", + "module.offhand.combat.hotbar.description": "Whether to use items from your hotbar.", + "module.offhand.combat.right-gapple": "Right Gapple", + "module.offhand.combat.right-gapple.description": "Will switch to a gapple when holding right click.(DO NOT USE WITH POTION ON)", + "module.offhand.combat.sword-gapple": "Sword Gapple", + "module.offhand.combat.sword-gapple.description": "Will switch to a gapple when holding a sword and right click.", + "module.offhand.combat.always-gap-on-sword": "Always Gap On Sword", + "module.offhand.combat.always-gap-on-sword.description": "Holds an Enchanted Golden Apple when you are holding a sword.", + "module.offhand.combat.always-pot-on-sword": "Always Pot On Sword", + "module.offhand.combat.always-pot-on-sword.description": "Will switch to a potion when holding a sword", + "module.offhand.combat.sword-pot": "Sword Pot", + "module.offhand.combat.sword-pot.description": "Will switch to a potion when holding a sword and right click.", + "module.offhand.totem.min-health": "Min Health", + "module.offhand.totem.min-health.description": "Will hold a totem when below this amount of health.", + "module.offhand.totem.elytra": "Elytra", + "module.offhand.totem.elytra.description": "Will always hold a totem while flying with an elytra.", + "module.offhand.totem.falling": "Falling", + "module.offhand.totem.falling.description": "Will hold a totem if fall damage could kill you.", + "module.offhand.totem.explosion": "Explosion", + "module.offhand.totem.explosion.description": "Will hold a totem when explosion damage could kill you.", + + "module.arrow-dodge": "Arrow Dodge", + "module.arrow-dodge.description": "Tries to dodge arrows coming at you.", + "module.arrow-dodge.general.ground-check": "Ground Check", + "module.arrow-dodge.general.ground-check.description": "Tries to prevent you from falling to your death.", + "module.arrow-dodge.general.all-projectiles": "All Projectiles", + "module.arrow-dodge.general.all-projectiles.description": "Dodge all projectiles, not only arrows.", + "module.arrow-dodge.general.ignore-own": "Ignore Own", + "module.arrow-dodge.general.ignore-own.description": "Ignore your own projectiles.", + "module.arrow-dodge.general.simulation-steps": "Simulation Steps", + "module.arrow-dodge.general.simulation-steps.description": "How many steps to simulate projectiles. Zero for no limit.", + "module.arrow-dodge.movement.move-type": "Move Type", + "module.arrow-dodge.movement.move-type.description": "The way you are moved by this module.", + "module.arrow-dodge.movement.move-speed": "Move Speed", + "module.arrow-dodge.movement.move-speed.description": "How fast should you be when dodging arrow.", + "module.arrow-dodge.movement.distance-check": "Distance Check", + "module.arrow-dodge.movement.distance-check.description": "How far should an arrow be from the player to be considered not hitting.", + + "module.multitask": "Multitask", + "module.multitask.description": "Lets you use items and attack at the same time.", + "module.multitask.general.attacking-entities": "Attacking Entities", + "module.multitask.general.attacking-entities.description": "Lets you attack entities while using an item.", + + "module.auto-replenish": "Auto Replenish", + "module.auto-replenish.description": "Automatically refills items in your hotbar, main hand, or offhand.", + "module.auto-replenish.general.min-count": "Min Count", + "module.auto-replenish.general.min-count.description": "Replenish a slot when it reaches this item count.", + "module.auto-replenish.general.delay": "Delay", + "module.auto-replenish.general.delay.description": "How long in ticks to wait between replenishing your hotbar.", + "module.auto-replenish.general.offhand": "Offhand", + "module.auto-replenish.general.offhand.description": "Whether or not to replenish items in your offhand.", + "module.auto-replenish.general.unstackable": "Unstackable", + "module.auto-replenish.general.unstackable.description": "Replenish unstackable items.", + "module.auto-replenish.general.same-enchants": "Same Enchants", + "module.auto-replenish.general.same-enchants.description": "Only replace unstackables with items that have the same enchants.", + "module.auto-replenish.general.search-hotbar": "Search Hotbar", + "module.auto-replenish.general.search-hotbar.description": "Combine stacks in your hotbar/offhand as a last resort.", + "module.auto-replenish.general.excluded-items": "Excluded Items", + "module.auto-replenish.general.excluded-items.description": "Items that won't be replenished.", + + "module.break-indicators": "Break Indicators", + "module.break-indicators.description": "Renders the progress of a block being broken.", + "module.break-indicators.general.shape-mode": "Shape Mode", + "module.break-indicators.general.shape-mode.description": "How the shapes are rendered.", + "module.break-indicators.general.packet-mine": "Packet Mine", + "module.break-indicators.general.packet-mine.description": "Whether or not to render blocks being packet mined.", + "module.break-indicators.general.start-color": "Start Color", + "module.break-indicators.general.start-color.description": "The color for the non-broken block.", + "module.break-indicators.general.end-color": "End Color", + "module.break-indicators.general.end-color.description": "The color for the fully-broken block.", + + "module.potion-saver": "Potion Saver", + "module.potion-saver.description": "Stops potion effects ticking when you stand still.", + "module.potion-saver.general.effects": "Effects", + "module.potion-saver.general.effects.description": "The effects to preserve.", + "module.potion-saver.general.only-when-stationary": "Only When Stationary", + "module.potion-saver.general.only-when-stationary.description": "Only freezes effects when you aren't moving.", + + "module.block-esp": "Block Esp", + "module.block-esp.description": "Renders specified blocks through walls.", + "module.block-esp.general.blocks": "Blocks", + "module.block-esp.general.blocks.description": "Blocks to search for.", + "module.block-esp.general.default-block-config": "Default Block Config", + "module.block-esp.general.default-block-config.description": "Default block config.", + "module.block-esp.general.block-configs": "Block Configs", + "module.block-esp.general.block-configs.description": "Config for each block.", + "module.block-esp.general.tracers": "Tracers", + "module.block-esp.general.tracers.description": "Render tracer lines.", + + "module.packet-mine": "Packet Mine", + "module.packet-mine.description": "Sends packets to mine blocks without the mining animation.", + "module.packet-mine.general.delay": "Delay", + "module.packet-mine.general.delay.description": "Delay between mining blocks in ticks.", + "module.packet-mine.general.rotate": "Rotate", + "module.packet-mine.general.rotate.description": "Sends rotation packets to the server when mining.", + "module.packet-mine.general.auto-switch": "Auto Switch", + "module.packet-mine.general.auto-switch.description": "Automatically switches to the best tool when the block is ready to be mined instantly.", + "module.packet-mine.general.not-on-use": "Not On Use", + "module.packet-mine.general.not-on-use.description": "Won't auto switch if you're using an item.", + "module.packet-mine.general.obscure-breaking-progress": "Obscure Breaking Progress", + "module.packet-mine.general.obscure-breaking-progress.description": "Spams abort breaking packets to obscure the block mining progress from other players. Does not hide it perfectly.", + "module.packet-mine.render.render": "Render", + "module.packet-mine.render.render.description": "Whether or not to render the block being mined.", + "module.packet-mine.render.shape-mode": "Shape Mode", + "module.packet-mine.render.shape-mode.description": "How the shapes are rendered.", + "module.packet-mine.render.ready-side-color": "Ready Side Color", + "module.packet-mine.render.ready-side-color.description": "The color of the sides of the blocks that can be broken.", + "module.packet-mine.render.ready-line-color": "Ready Line Color", + "module.packet-mine.render.ready-line-color.description": "The color of the lines of the blocks that can be broken.", + "module.packet-mine.render.side-color": "Side Color", + "module.packet-mine.render.side-color.description": "The color of the sides of the blocks being rendered.", + "module.packet-mine.render.line-color": "Line Color", + "module.packet-mine.render.line-color.description": "The color of the lines of the blocks being rendered.", + + "module.liquid-filler": "Liquid Filler", + "module.liquid-filler.description": "Places blocks inside of liquid source blocks within range of you.", + "module.liquid-filler.general.place-in": "Place In", + "module.liquid-filler.general.place-in.description": "What type of liquids to place in.", + "module.liquid-filler.general.shape": "Shape", + "module.liquid-filler.general.shape.description": "The shape of placing algorithm.", + "module.liquid-filler.general.place-range": "Place Range", + "module.liquid-filler.general.place-range.description": "The range at which blocks can be placed.", + "module.liquid-filler.general.walls-range": "Walls Range", + "module.liquid-filler.general.walls-range.description": "Range in which to place when behind blocks.", + "module.liquid-filler.general.delay": "Delay", + "module.liquid-filler.general.delay.description": "Delay between actions in ticks.", + "module.liquid-filler.general.max-blocks-per-tick": "Max Blocks Per Tick", + "module.liquid-filler.general.max-blocks-per-tick.description": "Maximum blocks to try to place per tick.", + "module.liquid-filler.general.sort-mode": "Sort Mode", + "module.liquid-filler.general.sort-mode.description": "The blocks you want to place first.", + "module.liquid-filler.general.rotate": "Rotate", + "module.liquid-filler.general.rotate.description": "Automatically rotates towards the space targeted for filling.", + "module.liquid-filler.whitelist.list-mode": "List Mode", + "module.liquid-filler.whitelist.list-mode.description": "Selection mode.", + "module.liquid-filler.whitelist.whitelist": "Whitelist", + "module.liquid-filler.whitelist.whitelist.description": "The allowed blocks that it will use to fill up the liquid.", + "module.liquid-filler.whitelist.blacklist": "Blacklist", + "module.liquid-filler.whitelist.blacklist.description": "The denied blocks that it not will use to fill up the liquid.", + + "module.quiver": "Quiver", + "module.quiver.description": "Shoots arrows at yourself.", + "module.quiver.general.effects": "Effects", + "module.quiver.general.effects.description": "Which effects to shoot you with.", + "module.quiver.general.cooldown": "Cooldown", + "module.quiver.general.cooldown.description": "How many ticks between shooting effects (19 minimum for NCP).", + "module.quiver.general.check-effects": "Check Effects", + "module.quiver.general.check-effects.description": "Won't shoot you with effects you already have.", + "module.quiver.general.silent-bow": "Silent Bow", + "module.quiver.general.silent-bow.description": "Takes a bow from your inventory to quiver.", + "module.quiver.general.chat-info": "Chat Info", + "module.quiver.general.chat-info.description": "Sends info about quiver checks in chat.", + "module.quiver.safety.only-in-holes": "Only In Holes", + "module.quiver.safety.only-in-holes.description": "Only quiver when you're in a hole.", + "module.quiver.safety.only-on-ground": "Only On Ground", + "module.quiver.safety.only-on-ground.description": "Only quiver when you're on the ground.", + "module.quiver.safety.min-health": "Min Health", + "module.quiver.safety.min-health.description": "How much health you must have to quiver.", + + "module.chest-swap": "Chest Swap", + "module.chest-swap.description": "Automatically swaps between a chestplate and an elytra.", + "module.chest-swap.general.chestplate": "Chestplate", + "module.chest-swap.general.chestplate.description": "Which type of chestplate to swap to.", + "module.chest-swap.general.stay-on": "Stay On", + "module.chest-swap.general.stay-on.description": "Stays on and activates when you turn it off.", + "module.chest-swap.general.close-inventory": "Close Inventory", + "module.chest-swap.general.close-inventory.description": "Sends inventory close after swap.", + + "module.fast-use": "Fast Use", + "module.fast-use.description": "Allows you to use items at very high speeds.", + "module.fast-use.general.mode": "Mode", + "module.fast-use.general.mode.description": "Which items to fast use.", + "module.fast-use.general.items": "Items", + "module.fast-use.general.items.description": "Which items should fast place work on in \"Some\" mode.", + "module.fast-use.general.blocks": "Blocks", + "module.fast-use.general.blocks.description": "Fast-places blocks if the mode is \"Some\" mode.", + "module.fast-use.general.cooldown": "Cooldown", + "module.fast-use.general.cooldown.description": "Fast-use cooldown in ticks.", + + "module.anchor": "Anchor", + "module.anchor.description": "Helps you get into holes by stopping your movement completely over a hole.", + "module.anchor.general.max-height": "Max Height", + "module.anchor.general.max-height.description": "The maximum height Anchor will work at.", + "module.anchor.general.min-pitch": "Min Pitch", + "module.anchor.general.min-pitch.description": "The minimum pitch at which anchor will work.", + "module.anchor.general.cancel-jump-in-hole": "Cancel Jump In Hole", + "module.anchor.general.cancel-jump-in-hole.description": "Prevents you from jumping when Anchor is active and Min Pitch is met.", + "module.anchor.general.pull": "Pull", + "module.anchor.general.pull.description": "The pull strength of Anchor.", + "module.anchor.general.pull-speed": "Pull Speed", + "module.anchor.general.pull-speed.description": "How fast to pull towards the hole in blocks per second.", + + "module.anti-anvil": "Anti Anvil", + "module.anti-anvil.description": "Automatically prevents Auto Anvil by placing between you and the anvil.", + "module.anti-anvil.general.swing": "Swing", + "module.anti-anvil.general.swing.description": "Swings your hand client-side when placing.", + "module.anti-anvil.general.rotate": "Rotate", + "module.anti-anvil.general.rotate.description": "Makes you rotate when placing.", + + "module.highway-builder": "Highway Builder", + "module.highway-builder.description": "Automatically builds highways.", + "module.highway-builder.general.width": "Width", + "module.highway-builder.general.width.description": "Width of the highway.", + "module.highway-builder.general.height": "Height", + "module.highway-builder.general.height.description": "Height of the highway.", + "module.highway-builder.general.floor": "Floor", + "module.highway-builder.general.floor.description": "What floor placement mode to use.", + "module.highway-builder.general.railings": "Railings", + "module.highway-builder.general.railings.description": "Builds railings next to the highway.", + "module.highway-builder.general.corner-support-block": "Corner Support Block", + "module.highway-builder.general.corner-support-block.description": "Places a support block underneath the railings, to prevent air placing.", + "module.highway-builder.general.mine-above-railings": "Mine Above Railings", + "module.highway-builder.general.mine-above-railings.description": "Mines blocks above railings.", + "module.highway-builder.general.rotation": "Rotation", + "module.highway-builder.general.rotation.description": "Mode of rotation.", + "module.highway-builder.general.disconnect-on-toggle": "Disconnect On Toggle", + "module.highway-builder.general.disconnect-on-toggle.description": "Automatically disconnects when the module is turned off, for example for not having enough blocks.", + "module.highway-builder.general.pause-on-lag": "Pause On Lag", + "module.highway-builder.general.pause-on-lag.description": "Pauses the current process while the server stops responding.", + "module.highway-builder.general.destroy-crystal-traps": "Destroy Crystal Traps", + "module.highway-builder.general.destroy-crystal-traps.description": "Use a bow to defuse crystal traps safely from a distance. An infinity bow is recommended.", + "module.highway-builder.digging.double-mine": "Double Mine", + "module.highway-builder.digging.double-mine.description": "Whether to double mine blocks when applicable (normal mine and packet mine simultaneously).", + "module.highway-builder.digging.fast-break": "Fast Break", + "module.highway-builder.digging.fast-break.description": "Whether to finish breaking blocks faster than normal while double mining.", + "module.highway-builder.digging.dont-break-tools": "Dont Break Tools", + "module.highway-builder.digging.dont-break-tools.description": "Don't break tools.", + "module.highway-builder.digging.durability-percentage": "Durability Percentage", + "module.highway-builder.digging.durability-percentage.description": "The durability percentage at which to stop using a tool.", + "module.highway-builder.digging.save-pickaxes": "Save Pickaxes", + "module.highway-builder.digging.save-pickaxes.description": "How many pickaxes to ensure are saved. Hitting this number in your inventory will trigger a restock or the module toggling off.", + "module.highway-builder.digging.break-delay": "Break Delay", + "module.highway-builder.digging.break-delay.description": "The delay between breaking blocks.", + "module.highway-builder.digging.blocks-per-tick": "Blocks Per Tick", + "module.highway-builder.digging.blocks-per-tick.description": "The maximum amount of blocks that can be mined in a tick. Only applies to blocks instantly breakable.", + "module.highway-builder.paving.blocks-to-place": "Blocks To Place", + "module.highway-builder.paving.blocks-to-place.description": "Blocks it is allowed to place.", + "module.highway-builder.paving.place-range": "Place Range", + "module.highway-builder.paving.place-range.description": "The maximum distance at which you can place blocks.", + "module.highway-builder.paving.place-delay": "Place Delay", + "module.highway-builder.paving.place-delay.description": "The delay between placing blocks.", + "module.highway-builder.paving.placements-per-tick": "Placements Per Tick", + "module.highway-builder.paving.placements-per-tick.description": "The maximum amount of blocks that can be placed in a tick.", + "module.highway-builder.inventory.trash-items": "Trash Items", + "module.highway-builder.inventory.trash-items.description": "Items that are considered trash and can be thrown out.", + "module.highway-builder.inventory.inventory-delay": "Inventory Delay", + "module.highway-builder.inventory.inventory-delay.description": "Delay in ticks on inventory interactions.", + "module.highway-builder.inventory.eject-useless-shulkers": "Eject Useless Shulkers", + "module.highway-builder.inventory.eject-useless-shulkers.description": "Whether you should eject useless shulkers. Warning - will throw out any shulkers that don't contain blocks to place, pickaxes, or food. Be careful with your kits.", + "module.highway-builder.inventory.search-ender-chest": "Search Ender Chest", + "module.highway-builder.inventory.search-ender-chest.description": "Searches your ender chest to find items to use. Be careful with this one, especially if you let it search through shulkers.", + "module.highway-builder.inventory.search-shulkers": "Search Shulkers", + "module.highway-builder.inventory.search-shulkers.description": "Searches through shulkers to find items to use.", + "module.highway-builder.inventory.minimum-empty-slots": "Minimum Empty Slots", + "module.highway-builder.inventory.minimum-empty-slots.description": "The minimum amount of empty slots you want left after mining obsidian.", + "module.highway-builder.inventory.mine-ender-chests": "Mine Ender Chests", + "module.highway-builder.inventory.mine-ender-chests.description": "Mines ender chests for obsidian.", + "module.highway-builder.inventory.echest-blockade-type": "Echest Blockade Type", + "module.highway-builder.inventory.echest-blockade-type.description": "What blockade type to use (the structure placed when mining echests).", + "module.highway-builder.inventory.save-ender-chests": "Save Ender Chests", + "module.highway-builder.inventory.save-ender-chests.description": "How many ender chests to ensure are saved. Hitting this number in your inventory will trigger a restock or the module toggling off.", + "module.highway-builder.inventory.instantly-rebreak-echests": "Instantly Rebreak Echests", + "module.highway-builder.inventory.instantly-rebreak-echests.description": "Whether or not to use the instant rebreak exploit to break echests.", + "module.highway-builder.inventory.rebreak-delay": "Rebreak Delay", + "module.highway-builder.inventory.rebreak-delay.description": "Delay between rebreak attempts.", + "module.highway-builder.render-digging.render-blocks-to-mine": "Render Blocks To Mine", + "module.highway-builder.render-digging.render-blocks-to-mine.description": "Render blocks to be mined.", + "module.highway-builder.render-digging.blocks-to-mine-shape-mode": "Blocks To Mine Shape Mode", + "module.highway-builder.render-digging.blocks-to-mine-shape-mode.description": "How the blocks to be mined are rendered.", + "module.highway-builder.render-digging.blocks-to-mine-side-color": "Blocks To Mine Side Color", + "module.highway-builder.render-digging.blocks-to-mine-side-color.description": "Color of blocks to be mined.", + "module.highway-builder.render-digging.blocks-to-mine-line-color": "Blocks To Mine Line Color", + "module.highway-builder.render-digging.blocks-to-mine-line-color.description": "Color of blocks to be mined.", + "module.highway-builder.render-paving.render-blocks-to-place": "Render Blocks To Place", + "module.highway-builder.render-paving.render-blocks-to-place.description": "Render blocks to be placed.", + "module.highway-builder.render-paving.blocks-to-place-shape-mode": "Blocks To Place Shape Mode", + "module.highway-builder.render-paving.blocks-to-place-shape-mode.description": "How the blocks to be placed are rendered.", + "module.highway-builder.render-paving.blocks-to-place-side-color": "Blocks To Place Side Color", + "module.highway-builder.render-paving.blocks-to-place-side-color.description": "Color of blocks to be placed.", + "module.highway-builder.render-paving.blocks-to-place-line-color": "Blocks To Place Line Color", + "module.highway-builder.render-paving.blocks-to-place-line-color.description": "Color of blocks to be placed.", + + "module.infinity-miner": "Infinity Miner", + "module.infinity-miner.description": "Allows you to essentially mine forever by mining repair blocks when the durability gets low. Needs a mending pickaxe.", + "module.infinity-miner.general.target-blocks": "Target Blocks", + "module.infinity-miner.general.target-blocks.description": "The target blocks to mine.", + "module.infinity-miner.general.target-items": "Target Items", + "module.infinity-miner.general.target-items.description": "The target items to collect.", + "module.infinity-miner.general.repair-blocks": "Repair Blocks", + "module.infinity-miner.general.repair-blocks.description": "The repair blocks to mine.", + "module.infinity-miner.general.start-repairing": "Start Repairing", + "module.infinity-miner.general.start-repairing.description": "The durability percentage at which to start repairing.", + "module.infinity-miner.general.start-mining": "Start Mining", + "module.infinity-miner.general.start-mining.description": "The durability percentage at which to start mining.", + "module.infinity-miner.when-full": "When Full", + "module.infinity-miner.when-full.walk-home": "Walk Home", + "module.infinity-miner.when-full.walk-home.description": "Will walk 'home' when your inventory is full.", + "module.infinity-miner.when-full.log-out": "Log Out", + "module.infinity-miner.when-full.log-out.description": "Logs out when your inventory is full. Will walk home FIRST if walk home is enabled.", + + "module.breadcrumbs": "Breadcrumbs", + "module.breadcrumbs.description": "Displays a trail behind where you have walked.", + "module.breadcrumbs.general.color": "Color", + "module.breadcrumbs.general.color.description": "The color of the Breadcrumbs trail.", + "module.breadcrumbs.general.max-sections": "Max Sections", + "module.breadcrumbs.general.max-sections.description": "The maximum number of sections.", + "module.breadcrumbs.general.section-length": "Section Length", + "module.breadcrumbs.general.section-length.description": "The section length in blocks.", + + "module.auto-brewer": "Auto Brewer", + "module.auto-brewer.description": "Automatically brews the specified potion.", + "module.auto-brewer.general.potion": "Potion", + "module.auto-brewer.general.potion.description": "The type of potion to brew.", + + "module.storage-esp": "Storage Esp", + "module.storage-esp.description": "Renders all specified storage blocks.", + "module.storage-esp.general.mode": "Mode", + "module.storage-esp.general.mode.description": "Rendering mode.", + "module.storage-esp.general.storage-blocks": "Storage Blocks", + "module.storage-esp.general.storage-blocks.description": "Select the storage blocks to display.", + "module.storage-esp.general.tracers": "Tracers", + "module.storage-esp.general.tracers.description": "Draws tracers to storage blocks.", + "module.storage-esp.general.shape-mode": "Shape Mode", + "module.storage-esp.general.shape-mode.description": "How the shapes are rendered.", + "module.storage-esp.general.fill-opacity": "Fill Opacity", + "module.storage-esp.general.fill-opacity.description": "The opacity of the shape fill.", + "module.storage-esp.general.width": "Width", + "module.storage-esp.general.width.description": "The width of the shader outline.", + "module.storage-esp.general.glow-multiplier": "Glow Multiplier", + "module.storage-esp.general.glow-multiplier.description": "Multiplier for glow effect", + "module.storage-esp.general.chest": "Chest", + "module.storage-esp.general.chest.description": "The color of chests.", + "module.storage-esp.general.trapped-chest": "Trapped Chest", + "module.storage-esp.general.trapped-chest.description": "The color of trapped chests.", + "module.storage-esp.general.barrel": "Barrel", + "module.storage-esp.general.barrel.description": "The color of barrels.", + "module.storage-esp.general.shulker": "Shulker", + "module.storage-esp.general.shulker.description": "The color of Shulker Boxes.", + "module.storage-esp.general.ender-chest": "Ender Chest", + "module.storage-esp.general.ender-chest.description": "The color of Ender Chests.", + "module.storage-esp.general.other": "Other", + "module.storage-esp.general.other.description": "The color of furnaces, dispensers, droppers and hoppers.", + "module.storage-esp.general.fade-distance": "Fade Distance", + "module.storage-esp.general.fade-distance.description": "The distance at which the color will fade.", + "module.storage-esp.opened-rendering.hide-opened": "Hide Opened", + "module.storage-esp.opened-rendering.hide-opened.description": "Hides opened containers.", + "module.storage-esp.opened-rendering.opened-color": "Opened Color", + "module.storage-esp.opened-rendering.opened-color.description": "Optional setting to change colors of opened chests, as opposed to not rendering. Disabled at zero opacity.", + + "module.no-status-effects": "No Status Effects", + "module.no-status-effects.description": "Blocks specified status effects.", + "module.no-status-effects.general.blocked-effects": "Blocked Effects", + "module.no-status-effects.general.blocked-effects.description": "Effects to block.", + + "module.attribute-swap": "Attribute Swap", + "module.attribute-swap.description": "Swaps to a target slot when you attack.", + "module.attribute-swap.general.mode": "Mode", + "module.attribute-swap.general.mode.description": "The mode to use.", + "module.attribute-swap.general.target-slot": "Target Slot", + "module.attribute-swap.general.target-slot.description": "Hotbar slot to swap to (1-9).", + "module.attribute-swap.general.swap-back": "Swap Back", + "module.attribute-swap.general.swap-back.description": "Swap back to the original slot after a delay.", + "module.attribute-swap.general.swap-back-delay": "Swap Back Delay", + "module.attribute-swap.general.swap-back-delay.description": "Delay in ticks before swapping back.", + "module.attribute-swap.swapping-options.shield-breaker": "Shield Breaker", + "module.attribute-swap.swapping-options.shield-breaker.description": "Automatically swaps to an axe if the target is blocking.", + "module.attribute-swap.swapping-options.durability-saver": "Durability Saver", + "module.attribute-swap.swapping-options.durability-saver.description": "Swaps to a non-damageable item to save durability on the main weapon.", + "module.attribute-swap.swapping-options.sword-swapping": "Sword Swapping", + "module.attribute-swap.swapping-options.sword-swapping.description": "Enables smart swapping for sword enchantments.", + "module.attribute-swap.swapping-options.mace-swapping": "Mace Swapping", + "module.attribute-swap.swapping-options.mace-swapping.description": "Enables smart swapping for mace enchantments.", + "module.attribute-swap.swapping-options.other-swapping": "Other Swapping", + "module.attribute-swap.swapping-options.other-swapping.description": "Enables smart swapping for other enchantments like Impaling.", + "module.attribute-swap.sword-enchants.fire-aspect": "Fire Aspect", + "module.attribute-swap.sword-enchants.fire-aspect.description": "Swaps to an item with Fire Aspect to set the target on fire, if target isn't already on fire", + "module.attribute-swap.sword-enchants.looting": "Looting", + "module.attribute-swap.sword-enchants.looting.description": "Swaps to an item with Looting for better drops or more experience. Only prefers for mobs (but fire aspect is priority)", + "module.attribute-swap.sword-enchants.sharpness": "Sharpness", + "module.attribute-swap.sword-enchants.sharpness.description": "Swaps to an item with Sharpness for increased damage against all entities.", + "module.attribute-swap.sword-enchants.smite": "Smite", + "module.attribute-swap.sword-enchants.smite.description": "Swaps to an item with Smite for increased damage against undead mobs.", + "module.attribute-swap.sword-enchants.bane-of-arthropods": "Bane Of Arthropods", + "module.attribute-swap.sword-enchants.bane-of-arthropods.description": "Swaps to an item with Bane of Arthropods for increased damage against arthropods.", + "module.attribute-swap.sword-enchants.sweeping-edge": "Sweeping Edge", + "module.attribute-swap.sword-enchants.sweeping-edge.description": "Swaps to an item with Sweeping Edge for increased sweeping attack damage.", + "module.attribute-swap.mace-enchants.regular-mace": "Regular Mace", + "module.attribute-swap.mace-enchants.regular-mace.description": "Swaps to a regular Mace when falling if no better option is available.", + "module.attribute-swap.mace-enchants.density": "Density", + "module.attribute-swap.mace-enchants.density.description": "Swaps to a Mace with Density to deal increased damage when falling.", + "module.attribute-swap.mace-enchants.breach": "Breach", + "module.attribute-swap.mace-enchants.breach.description": "Swaps to a Mace with Breach to reduce the target's armor effectiveness.", + "module.attribute-swap.mace-enchants.wind-burst": "Wind Burst", + "module.attribute-swap.mace-enchants.wind-burst.description": "Swaps to a Mace with Wind Burst to launch up when hitting while falling.", + "module.attribute-swap.other-enchants.impaling": "Impaling", + "module.attribute-swap.other-enchants.impaling.description": "Swaps to an item with Impaling for increased damage against aquatic mobs.", + "module.attribute-swap.weapon-options.only-on-weapon": "Only On Weapon", + "module.attribute-swap.weapon-options.only-on-weapon.description": "Only swaps when holding a selected weapon in hand.", + "module.attribute-swap.weapon-options.sword": "Sword", + "module.attribute-swap.weapon-options.sword.description": "Works while holding a sword.", + "module.attribute-swap.weapon-options.axe": "Axe", + "module.attribute-swap.weapon-options.axe.description": "Works while holding an axe.", + "module.attribute-swap.weapon-options.pickaxe": "Pickaxe", + "module.attribute-swap.weapon-options.pickaxe.description": "Works while holding a pickaxe.", + "module.attribute-swap.weapon-options.shovel": "Shovel", + "module.attribute-swap.weapon-options.shovel.description": "Works while holding a shovel.", + "module.attribute-swap.weapon-options.hoe": "Hoe", + "module.attribute-swap.weapon-options.hoe.description": "Works while holding a hoe.", + "module.attribute-swap.weapon-options.mace": "Mace", + "module.attribute-swap.weapon-options.mace.description": "Works while holding a mace.", + "module.attribute-swap.weapon-options.trident": "Trident", + "module.attribute-swap.weapon-options.trident.description": "Works while holding a trident.", + + "module.echest-farmer": "Echest Farmer", + "module.echest-farmer.description": "Places and breaks EChests to farm obsidian.", + "module.echest-farmer.general.self-toggle": "Self Toggle", + "module.echest-farmer.general.self-toggle.description": "Disables when you reach the desired amount of obsidian.", + "module.echest-farmer.general.ignore-existing": "Ignore Existing", + "module.echest-farmer.general.ignore-existing.description": "Ignores existing obsidian in your inventory and mines the total target amount.", + "module.echest-farmer.general.amount": "Amount", + "module.echest-farmer.general.amount.description": "The amount of obsidian to farm.", + "module.echest-farmer.render.swing-hand": "Swing Hand", + "module.echest-farmer.render.swing-hand.description": "Swing hand client-side.", + "module.echest-farmer.render.render": "Render", + "module.echest-farmer.render.render.description": "Renders a block overlay where the obsidian will be placed.", + "module.echest-farmer.render.shape-mode": "Shape Mode", + "module.echest-farmer.render.shape-mode.description": "How the shapes are rendered.", + "module.echest-farmer.render.side-color": "Side Color", + "module.echest-farmer.render.side-color.description": "The color of the sides of the blocks being rendered.", + "module.echest-farmer.render.line-color": "Line Color", + "module.echest-farmer.render.line-color.description": "The color of the lines of the blocks being rendered.", + + "module.self-anvil": "Self Anvil", + "module.self-anvil.description": "Automatically places an anvil on you to prevent other players from going into your hole.", + + "module.flamethrower": "Flamethrower", + "module.flamethrower.description": "Ignites every alive piece of food.", + "module.flamethrower.general.distance": "Distance", + "module.flamethrower.general.distance.description": "The maximum distance the animal has to be to be roasted.", + "module.flamethrower.general.anti-break": "Anti Break", + "module.flamethrower.general.anti-break.description": "Prevents flint and steel from being broken.", + "module.flamethrower.general.put-out-fire": "Put Out Fire", + "module.flamethrower.general.put-out-fire.description": "Tries to put out the fire when animal is low health, so the items don't burn.", + "module.flamethrower.general.target-babies": "Target Babies", + "module.flamethrower.general.target-babies.description": "If checked babies will also be killed.", + "module.flamethrower.general.tick-interval": "Tick Interval", + "module.flamethrower.general.rotate": "Rotate", + "module.flamethrower.general.rotate.description": "Automatically faces towards the animal roasted.", + "module.flamethrower.general.entities": "Entities", + "module.flamethrower.general.entities.description": "Entities to cook.", + + "module.anti-bed": "Anti Bed", + "module.anti-bed.description": "Places string to prevent beds being placed on you.", + "module.anti-bed.general.place-string-top": "Place String Top", + "module.anti-bed.general.place-string-top.description": "Places string above you.", + "module.anti-bed.general.place-string-middle": "Place String Middle", + "module.anti-bed.general.place-string-middle.description": "Places string in your upper hitbox.", + "module.anti-bed.general.place-string-bottom": "Place String Bottom", + "module.anti-bed.general.place-string-bottom.description": "Places string at your feet.", + "module.anti-bed.general.only-in-hole": "Only In Hole", + "module.anti-bed.general.only-in-hole.description": "Only functions when you are standing in a hole.", + + "module.auto-mend": "Auto Mend", + "module.auto-mend.description": "Automatically replaces items in your offhand with mending when fully repaired.", + "module.auto-mend.general.blacklist": "Blacklist", + "module.auto-mend.general.blacklist.description": "Item blacklist.", + "module.auto-mend.general.force": "Force", + "module.auto-mend.general.force.description": "Replaces item in offhand even if there is some other non-repairable item.", + "module.auto-mend.general.auto-disable": "Auto Disable", + "module.auto-mend.general.auto-disable.description": "Automatically disables when there are no more items to repair.", + + "module.auto-anvil": "Auto Anvil", + "module.auto-anvil.description": "Automatically places anvils above players to destroy helmets.", + "module.auto-anvil.general.target-range": "Target Range", + "module.auto-anvil.general.target-range.description": "The radius in which players get targeted.", + "module.auto-anvil.general.target-priority": "Target Priority", + "module.auto-anvil.general.target-priority.description": "How to select the player to target.", + "module.auto-anvil.general.height": "Height", + "module.auto-anvil.general.height.description": "The height to place anvils at.", + "module.auto-anvil.general.delay": "Delay", + "module.auto-anvil.general.delay.description": "The delay in between anvil placements.", + "module.auto-anvil.general.place-at-feet": "Place At Feet", + "module.auto-anvil.general.place-at-feet.description": "Automatically places a button or pressure plate at the targets feet to break the anvils.", + "module.auto-anvil.general.multi-place": "Multi Place", + "module.auto-anvil.general.multi-place.description": "Places multiple anvils at once.", + "module.auto-anvil.general.toggle-on-break": "Toggle On Break", + "module.auto-anvil.general.toggle-on-break.description": "Toggles when the target's helmet slot is empty.", + "module.auto-anvil.general.rotate": "Rotate", + "module.auto-anvil.general.rotate.description": "Automatically rotates towards the position anvils/pressure plates/buttons are placed.", + + "module.burrow": "Burrow", + "module.burrow.description": "Attempts to clip you into a block.", + "module.burrow.general.block-to-use": "Block To Use", + "module.burrow.general.block-to-use.description": "The block to use for Burrow.", + "module.burrow.general.instant": "Instant", + "module.burrow.general.instant.description": "Jumps with packets rather than vanilla jump.", + "module.burrow.general.automatic": "Automatic", + "module.burrow.general.automatic.description": "Automatically burrows on activate rather than waiting for jump.", + "module.burrow.general.trigger-height": "Trigger Height", + "module.burrow.general.trigger-height.description": "How high you have to jump before a rubberband is triggered.", + "module.burrow.general.rubberband-height": "Rubberband Height", + "module.burrow.general.rubberband-height.description": "How far to attempt to cause rubberband.", + "module.burrow.general.timer": "Timer", + "module.burrow.general.timer.description": "Timer override.", + "module.burrow.general.only-in-holes": "Only In Holes", + "module.burrow.general.only-in-holes.description": "Stops you from burrowing when not in a hole.", + "module.burrow.general.center": "Center", + "module.burrow.general.center.description": "Centers you to the middle of the block before burrowing.", + "module.burrow.general.rotate": "Rotate", + "module.burrow.general.rotate.description": "Faces the block you place server-side.", + + "module.auto-sign": "Auto Sign", + "module.auto-sign.description": "Automatically writes signs. The first sign's text will be used.", + "module.auto-sign.general.delay": "Delay", + "module.auto-sign.general.delay.description": "The tick delay between sign update packets.", + + "module.swarm": "Swarm", + "module.swarm.description": "Allows you to control multiple instances of Meteor from one central host.", + "module.swarm.general.mode": "Mode", + "module.swarm.general.mode.description": "What type of client to run.", + "module.swarm.general.ip": "Ip", + "module.swarm.general.ip.description": "The IP address of the host server.", + "module.swarm.general.port": "Port", + "module.swarm.general.port.description": "The port used for connections.", + + "module.auto-reconnect": "Auto Reconnect", + "module.auto-reconnect.description": "Automatically reconnects when disconnected from a server.", + "module.auto-reconnect.general.delay": "Delay", + "module.auto-reconnect.general.delay.description": "The amount of seconds to wait before reconnecting to the server.", + "module.auto-reconnect.general.hide-buttons": "Hide Buttons", + "module.auto-reconnect.general.hide-buttons.description": "Will hide the buttons related to Auto Reconnect.", + + "module.build-height": "Build Height", + "module.build-height.description": "Allows you to interact with objects at the build limit.", + + "module.time-changer": "Time Changer", + "module.time-changer.description": "Makes you able to set a custom time.", + "module.time-changer.general.time": "Time", + "module.time-changer.general.time.description": "The specified time to be set.", + + "module.hole-esp": "Hole Esp", + "module.hole-esp.description": "Displays holes that you will take less damage in.", + "module.hole-esp.general.horizontal-radius": "Horizontal Radius", + "module.hole-esp.general.horizontal-radius.description": "Horizontal radius in which to search for holes.", + "module.hole-esp.general.vertical-radius": "Vertical Radius", + "module.hole-esp.general.vertical-radius.description": "Vertical radius in which to search for holes.", + "module.hole-esp.general.min-height": "Min Height", + "module.hole-esp.general.min-height.description": "Minimum hole height required to be rendered.", + "module.hole-esp.general.doubles": "Doubles", + "module.hole-esp.general.doubles.description": "Highlights double holes that can be stood across.", + "module.hole-esp.general.ignore-own": "Ignore Own", + "module.hole-esp.general.ignore-own.description": "Ignores rendering the hole you are currently standing in.", + "module.hole-esp.general.webs": "Webs", + "module.hole-esp.general.webs.description": "Whether to show holes that have webs inside of them.", + "module.hole-esp.render.shape-mode": "Shape Mode", + "module.hole-esp.render.shape-mode.description": "How the shapes are rendered.", + "module.hole-esp.render.height": "Height", + "module.hole-esp.render.height.description": "The height of rendering.", + "module.hole-esp.render.top-quad": "Top Quad", + "module.hole-esp.render.top-quad.description": "Whether to render a quad at the top of the hole.", + "module.hole-esp.render.bottom-quad": "Bottom Quad", + "module.hole-esp.render.bottom-quad.description": "Whether to render a quad at the bottom of the hole.", + "module.hole-esp.render.bedrock-top": "Bedrock Top", + "module.hole-esp.render.bedrock-top.description": "The top color for holes that are completely bedrock.", + "module.hole-esp.render.bedrock-bottom": "Bedrock Bottom", + "module.hole-esp.render.bedrock-bottom.description": "The bottom color for holes that are completely bedrock.", + "module.hole-esp.render.obsidian-top": "Obsidian Top", + "module.hole-esp.render.obsidian-top.description": "The top color for holes that are completely obsidian.", + "module.hole-esp.render.obsidian-bottom": "Obsidian Bottom", + "module.hole-esp.render.obsidian-bottom.description": "The bottom color for holes that are completely obsidian.", + "module.hole-esp.render.mixed-top": "Mixed Top", + "module.hole-esp.render.mixed-top.description": "The top color for holes that have mixed bedrock and obsidian.", + "module.hole-esp.render.mixed-bottom": "Mixed Bottom", + "module.hole-esp.render.mixed-bottom.description": "The bottom color for holes that have mixed bedrock and obsidian.", + + "module.city-esp": "City Esp", + "module.city-esp.description": "Displays blocks that can be broken in order to city another player.", + "module.city-esp.render.shape-mode": "Shape Mode", + "module.city-esp.render.shape-mode.description": "How the shapes are rendered.", + "module.city-esp.render.side-color": "Side Color", + "module.city-esp.render.side-color.description": "The side color of the rendering.", + "module.city-esp.render.line-color": "Line Color", + "module.city-esp.render.line-color.description": "The line color of the rendering.", + + "module.anti-afk": "Anti Afk", + "module.anti-afk.description": "Performs different actions to prevent getting kicked while AFK.", + "module.anti-afk.actions.jump": "Jump", + "module.anti-afk.actions.jump.description": "Jump randomly.", + "module.anti-afk.actions.swing": "Swing", + "module.anti-afk.actions.swing.description": "Swings your hand.", + "module.anti-afk.actions.sneak": "Sneak", + "module.anti-afk.actions.sneak.description": "Sneaks and unsneaks quickly.", + "module.anti-afk.actions.sneak-time": "Sneak Time", + "module.anti-afk.actions.sneak-time.description": "How many ticks to stay sneaked.", + "module.anti-afk.actions.strafe": "Strafe", + "module.anti-afk.actions.strafe.description": "Strafe right and left.", + "module.anti-afk.actions.spin": "Spin", + "module.anti-afk.actions.spin.description": "Spins the player in place.", + "module.anti-afk.actions.spin-mode": "Spin Mode", + "module.anti-afk.actions.spin-mode.description": "The method of rotating.", + "module.anti-afk.actions.speed": "Speed", + "module.anti-afk.actions.speed.description": "The speed to spin you.", + "module.anti-afk.actions.pitch": "Pitch", + "module.anti-afk.actions.pitch.description": "The pitch to send to the server.", + "module.anti-afk.messages.send-messages": "Send Messages", + "module.anti-afk.messages.send-messages.description": "Sends messages to prevent getting kicked for AFK.", + "module.anti-afk.messages.random": "Random", + "module.anti-afk.messages.random.description": "Selects a random message from your message list.", + "module.anti-afk.messages.delay": "Delay", + "module.anti-afk.messages.delay.description": "The delay between specified messages in seconds.", + "module.anti-afk.messages.messages": "Messages", + "module.anti-afk.messages.messages.description": "The messages to choose from.", + + "module.gui-move": "Gui Move", + "module.gui-move.description": "Allows you to perform various actions while in GUIs.", + "module.gui-move.general.guis": "Guis", + "module.gui-move.general.guis.description": "Which GUIs to move in.", + "module.gui-move.general.jump": "Jump", + "module.gui-move.general.jump.description": "Allows you to jump while in GUIs.", + "module.gui-move.general.sneak": "Sneak", + "module.gui-move.general.sneak.description": "Allows you to sneak while in GUIs.", + "module.gui-move.general.sprint": "Sprint", + "module.gui-move.general.sprint.description": "Allows you to sprint while in GUIs.", + "module.gui-move.general.arrows-rotate": "Arrows Rotate", + "module.gui-move.general.arrows-rotate.description": "Allows you to use your arrow keys to rotate while in GUIs.", + "module.gui-move.general.rotate-speed": "Rotate Speed", + "module.gui-move.general.rotate-speed.description": "Rotation speed while in GUIs.", + + "module.trident-boost": "Trident Boost", + "module.trident-boost.description": "Boosts you when using riptide with a trident.", + "module.trident-boost.general.boost": "Boost", + "module.trident-boost.general.boost.description": "How much your velocity is multiplied by when using riptide.", + "module.trident-boost.general.out-of-water": "Out Of Water", + "module.trident-boost.general.out-of-water.description": "Whether riptide should work out of water", + + "module.better-tab": "Better Tab", + "module.better-tab.description": "Various improvements to the tab list.", + "module.better-tab.general.tablist-size": "Tablist Size", + "module.better-tab.general.tablist-size.description": "How many players in total to display in the tablist.", + "module.better-tab.general.column-height": "Column Height", + "module.better-tab.general.column-height.description": "How many players to display in each column.", + "module.better-tab.general.highlight-self": "Highlight Self", + "module.better-tab.general.highlight-self.description": "Highlights yourself in the tablist.", + "module.better-tab.general.self-color": "Self Color", + "module.better-tab.general.self-color.description": "The color to highlight your name with.", + "module.better-tab.general.highlight-friends": "Highlight Friends", + "module.better-tab.general.highlight-friends.description": "Highlights friends in the tablist.", + "module.better-tab.general.accurate-latency": "Accurate Latency", + "module.better-tab.general.accurate-latency.description": "Shows latency as a number in the tablist.", + "module.better-tab.general.gamemode": "Gamemode", + "module.better-tab.general.gamemode.description": "Display gamemode next to the nick.", + + "module.mount-bypass": "Mount Bypass", + "module.mount-bypass.description": "Allows you to bypass the IllegalStacks plugin and put chests on entities.", + + "module.anti-packet-kick": "Anti Packet Kick", + "module.anti-packet-kick.description": "Attempts to prevent you from being disconnected by large packets.", + "module.anti-packet-kick.general.catch-exceptions": "Catch Exceptions", + "module.anti-packet-kick.general.catch-exceptions.description": "Drops corrupted packets.", + "module.anti-packet-kick.general.log-exceptions": "Log Exceptions", + "module.anti-packet-kick.general.log-exceptions.description": "Logs caught exceptions.", + + "module.light-overlay": "Light Overlay", + "module.light-overlay.description": "Shows blocks where mobs can spawn.", + "module.light-overlay.general.horizontal-range": "Horizontal Range", + "module.light-overlay.general.horizontal-range.description": "Horizontal range in blocks.", + "module.light-overlay.general.vertical-range": "Vertical Range", + "module.light-overlay.general.vertical-range.description": "Vertical range in blocks.", + "module.light-overlay.general.see-through-blocks": "See Through Blocks", + "module.light-overlay.general.see-through-blocks.description": "Allows you to see the lines through blocks.", + "module.light-overlay.general.light-level": "Light Level", + "module.light-overlay.general.light-level.description": "Which light levels to render. Old spawning light: 7.", + "module.light-overlay.colors.color": "Color", + "module.light-overlay.colors.color.description": "Color of places where mobs can currently spawn.", + "module.light-overlay.colors.potential-color": "Potential Color", + "module.light-overlay.colors.potential-color.description": "Color of places where mobs can potentially spawn (eg at night).", + + "module.hole-filler": "Hole Filler", + "module.hole-filler.description": "Fills holes with specified blocks.", + "module.hole-filler.general.blocks": "Blocks", + "module.hole-filler.general.blocks.description": "Which blocks can be used to fill holes.", + "module.hole-filler.general.search-radius": "Search Radius", + "module.hole-filler.general.search-radius.description": "Horizontal radius in which to search for holes.", + "module.hole-filler.general.place-range": "Place Range", + "module.hole-filler.general.place-range.description": "How far away from the player you can place a block.", + "module.hole-filler.general.walls-range": "Walls Range", + "module.hole-filler.general.walls-range.description": "How far away from the player you can place a block behind walls.", + "module.hole-filler.general.doubles": "Doubles", + "module.hole-filler.general.doubles.description": "Fills double holes.", + "module.hole-filler.general.rotate": "Rotate", + "module.hole-filler.general.rotate.description": "Automatically rotates towards the holes being filled.", + "module.hole-filler.general.place-delay": "Place Delay", + "module.hole-filler.general.place-delay.description": "The ticks delay between placement.", + "module.hole-filler.general.blocks-per-tick": "Blocks Per Tick", + "module.hole-filler.general.blocks-per-tick.description": "How many blocks to place in one tick.", + "module.hole-filler.smart.smart": "Smart", + "module.hole-filler.smart.smart.description": "Take more factors into account before filling a hole.", + "module.hole-filler.smart.force-fill": "Force Fill", + "module.hole-filler.smart.force-fill.description": "Fills all holes around you regardless of target checks.", + "module.hole-filler.smart.predict-movement": "Predict Movement", + "module.hole-filler.smart.predict-movement.description": "Predict target movement to account for ping.", + "module.hole-filler.smart.ticks-to-predict": "Ticks To Predict", + "module.hole-filler.smart.ticks-to-predict.description": "How many ticks ahead we should predict for.", + "module.hole-filler.smart.ignore-safe": "Ignore Safe", + "module.hole-filler.smart.ignore-safe.description": "Ignore players in safe holes.", + "module.hole-filler.smart.only-moving": "Only Moving", + "module.hole-filler.smart.only-moving.description": "Ignore players if they're standing still.", + "module.hole-filler.smart.target-range": "Target Range", + "module.hole-filler.smart.target-range.description": "How far away to target players.", + "module.hole-filler.smart.feet-range": "Feet Range", + "module.hole-filler.smart.feet-range.description": "How far from a hole a player's feet must be to fill it.", + "module.hole-filler.render.swing": "Swing", + "module.hole-filler.render.swing.description": "Swing the player's hand when placing.", + "module.hole-filler.render.render": "Render", + "module.hole-filler.render.render.description": "Renders an overlay where blocks will be placed.", + "module.hole-filler.render.shape-mode": "Shape Mode", + "module.hole-filler.render.shape-mode.description": "How the shapes are rendered.", + "module.hole-filler.render.side-color": "Side Color", + "module.hole-filler.render.side-color.description": "The side color of the target block rendering.", + "module.hole-filler.render.line-color": "Line Color", + "module.hole-filler.render.line-color.description": "The line color of the target block rendering.", + "module.hole-filler.render.next-side-color": "Next Side Color", + "module.hole-filler.render.next-side-color.description": "The side color of the next block to be placed.", + "module.hole-filler.render.next-line-color": "Next Line Color", + "module.hole-filler.render.next-line-color.description": "The line color of the next block to be placed.", + + "module.message-aura": "Message Aura", + "module.message-aura.description": "Sends a specified message to any player that enters render distance.", + "module.message-aura.general.message": "Message", + "module.message-aura.general.message.description": "The specified message sent to the player.", + "module.message-aura.general.ignore-friends": "Ignore Friends", + "module.message-aura.general.ignore-friends.description": "Will not send any messages to people friended.", + + "module.fast-climb": "Fast Climb", + "module.fast-climb.description": "Allows you to climb faster.", + "module.fast-climb.general.timer-mode": "Timer Mode", + "module.fast-climb.general.timer-mode.description": "Use timer.", + "module.fast-climb.general.climb-speed": "Climb Speed", + "module.fast-climb.general.climb-speed.description": "Your climb speed.", + "module.fast-climb.general.timer": "Timer", + "module.fast-climb.general.timer.description": "The timer value for Timer.", + + "module.sprint": "Sprint", + "module.sprint.description": "Automatically sprints.", + "module.sprint.general.sprint-mode": "Sprint Mode", + "module.sprint.general.sprint-mode.description": "What mode of sprinting.", + "module.sprint.general.keep-sprint": "Keep Sprint", + "module.sprint.general.keep-sprint.description": "Whether to keep sprinting after attacking.", + "module.sprint.general.unsprint-on-hit": "Unsprint On Hit", + "module.sprint.general.unsprint-on-hit.description": "Whether to stop sprinting before attacking, to ensure you get crits and sweep attacks.", + "module.sprint.general.unsprint-in-water": "Unsprint In Water", + "module.sprint.general.unsprint-in-water.description": "Whether to stop sprinting when in water.", + "module.sprint.general.sprint-while-stationary": "Sprint While Stationary", + "module.sprint.general.sprint-while-stationary.description": "Sprint even when not moving.", + + "module.xray": "Xray", + "module.xray.description": "Only renders specified blocks. Good for mining.", + "module.xray.general.whitelist": "Whitelist", + "module.xray.general.whitelist.description": "Which blocks to show x-rayed.", + "module.xray.general.opacity": "Opacity", + "module.xray.general.opacity.description": "The opacity for all other blocks.", + "module.xray.general.exposed-only": "Exposed Only", + "module.xray.general.exposed-only.description": "Show only exposed ores.", + + "module.notebot": "Notebot", + "module.notebot.description": "Plays noteblock nicely", + "module.notebot.general.tick-delay": "Tick Delay", + "module.notebot.general.tick-delay.description": "The delay when loading a song.", + "module.notebot.general.concurrent-tune-blocks": "Concurrent Tune Blocks", + "module.notebot.general.concurrent-tune-blocks.description": "How many noteblocks can be tuned at the same time. On Paper it is recommended to set it to 1 to avoid bugs.", + "module.notebot.general.mode": "Mode", + "module.notebot.general.mode.description": "Select mode of notebot", + "module.notebot.general.instrument-detect-mode": "Instrument Detect Mode", + "module.notebot.general.instrument-detect-mode.description": "Select an instrument detect mode. Can be useful when server has a plugin that modifies noteblock state (e.g ItemsAdder) but noteblock can still play the right note", + "module.notebot.general.polyphonic": "Polyphonic", + "module.notebot.general.polyphonic.description": "Whether or not to allow multiple notes to be played at the same time", + "module.notebot.general.auto-rotate": "Auto Rotate", + "module.notebot.general.auto-rotate.description": "Should client look at note block when it wants to hit it", + "module.notebot.general.auto-play": "Auto Play", + "module.notebot.general.auto-play.description": "Auto plays random songs", + "module.notebot.general.round-out-of-range": "Round Out Of Range", + "module.notebot.general.round-out-of-range.description": "Rounds out of range notes", + "module.notebot.general.swing-arm": "Swing Arm", + "module.notebot.general.swing-arm.description": "Should swing arm on hit", + "module.notebot.general.check-noteblocks-again-delay": "Check Noteblocks Again Delay", + "module.notebot.general.check-noteblocks-again-delay.description": "How much delay should be between end of tuning and checking again", + "module.notebot.note-map.Harp": "Harp", + "module.notebot.note-map.Basedrum": "Basedrum", + "module.notebot.note-map.Snare": "Snare", + "module.notebot.note-map.Hat": "Hat", + "module.notebot.note-map.Bass": "Bass", + "module.notebot.note-map.Flute": "Flute", + "module.notebot.note-map.Bell": "Bell", + "module.notebot.note-map.Guitar": "Guitar", + "module.notebot.note-map.Chime": "Chime", + "module.notebot.note-map.Xylophone": "Xylophone", + "module.notebot.note-map.IronXylophone": "IronXylophone", + "module.notebot.note-map.CowBell": "CowBell", + "module.notebot.note-map.Didgeridoo": "Didgeridoo", + "module.notebot.note-map.Bit": "Bit", + "module.notebot.note-map.Banjo": "Banjo", + "module.notebot.note-map.Pling": "Pling", + + "module.notebot.render.render-text": "Render Text", + "module.notebot.render.render-text.description": "Whether or not to render the text above noteblocks.", + "module.notebot.render.render-boxes": "Render Boxes", + "module.notebot.render.render-boxes.description": "Whether or not to render the outline around the noteblocks.", + "module.notebot.render.shape-mode": "Shape Mode", + "module.notebot.render.shape-mode.description": "How the shapes are rendered.", + "module.notebot.render.untuned-side-color": "Untuned Side Color", + "module.notebot.render.untuned-side-color.description": "The color of the sides of the untuned blocks being rendered.", + "module.notebot.render.untuned-line-color": "Untuned Line Color", + "module.notebot.render.untuned-line-color.description": "The color of the lines of the untuned blocks being rendered.", + "module.notebot.render.tuned-side-color": "Tuned Side Color", + "module.notebot.render.tuned-side-color.description": "The color of the sides of the tuned blocks being rendered.", + "module.notebot.render.tuned-line-color": "Tuned Line Color", + "module.notebot.render.tuned-line-color.description": "The color of the lines of the tuned blocks being rendered.", + "module.notebot.render.hit-side-color": "Hit Side Color", + "module.notebot.render.hit-side-color.description": "The color of the sides being rendered on noteblock tune hit.", + "module.notebot.render.hit-line-color": "Hit Line Color", + "module.notebot.render.hit-line-color.description": "The color of the lines being rendered on noteblock tune hit.", + "module.notebot.render.scanned-noteblock-side-color": "Scanned Noteblock Side Color", + "module.notebot.render.scanned-noteblock-side-color.description": "The color of the sides of the scanned noteblocks being rendered.", + "module.notebot.render.scanned-noteblock-line-color": "Scanned Noteblock Line Color", + "module.notebot.render.scanned-noteblock-line-color.description": "The color of the lines of the scanned noteblocks being rendered.", + "module.notebot.render.note-text-scale": "Note Text Scale", + "module.notebot.render.note-text-scale.description": "The scale.", + "module.notebot.render.show-scanned-noteblocks": "Show Scanned Noteblocks", + "module.notebot.render.show-scanned-noteblocks.description": "Show scanned Noteblocks", + + "module.item-highlight": "Item Highlight", + "module.item-highlight.description": "Highlights selected items when in guis", + "module.item-highlight.general.items": "Items", + "module.item-highlight.general.items.description": "Items to highlight.", + "module.item-highlight.general.color": "Color", + "module.item-highlight.general.color.description": "The color to highlight the items with.", + + "module.auto-mount": "Auto Mount", + "module.auto-mount.description": "Automatically mounts entities.", + "module.auto-mount.general.check-saddle": "Check Saddle", + "module.auto-mount.general.check-saddle.description": "Checks if the entity contains a saddle before mounting.", + "module.auto-mount.general.rotate": "Rotate", + "module.auto-mount.general.rotate.description": "Faces the entity you mount.", + "module.auto-mount.general.entities": "Entities", + "module.auto-mount.general.entities.description": "Rideable entities.", + + "module.zoom": "Zoom", + "module.zoom.description": "Zooms your view.", + "module.zoom.general.zoom": "Zoom", + "module.zoom.general.zoom.description": "How much to zoom.", + "module.zoom.general.scroll-sensitivity": "Scroll Sensitivity", + "module.zoom.general.scroll-sensitivity.description": "Allows you to change zoom value using scroll wheel. 0 to disable.", + "module.zoom.general.smooth": "Smooth", + "module.zoom.general.smooth.description": "Smooth transition.", + "module.zoom.general.cinematic": "Cinematic", + "module.zoom.general.cinematic.description": "Enables cinematic camera.", + "module.zoom.general.hide-HUD": "Hide HUD", + "module.zoom.general.hide-HUD.description": "Whether or not to hide the Minecraft HUD.", + "module.zoom.general.show-hands": "Show Hands", + "module.zoom.general.show-hands.description": "Whether or not to render your hands.", + + "module.bow-spam": "Bow Spam", + "module.bow-spam.description": "Spams bows and crossbows.", + "module.bow-spam.general.charge": "Charge", + "module.bow-spam.general.charge.description": "How long to charge the bow before releasing in ticks.", + "module.bow-spam.general.when-holding-right-click": "When Holding Right Click", + "module.bow-spam.general.when-holding-right-click.description": "Works only when holding right click.", + "module.bow-spam.crossbows.spam-crossbows": "Spam Crossbows", + "module.bow-spam.crossbows.spam-crossbows.description": "Whether to spam loaded crossbows; takes priority over charging bows.", + "module.bow-spam.crossbows.crossbow-delay": "Crossbow Delay", + "module.bow-spam.crossbows.crossbow-delay.description": "Delay between shooting crossbows in ticks.", + "module.bow-spam.crossbows.search-inventory": "Search Inventory", + "module.bow-spam.crossbows.search-inventory.description": "Whether to search your inventory to find loaded crossbows.", + + "module.free-look": "Free Look", + "module.free-look.description": "Allows more rotation options in third person.", + "module.free-look.general.mode": "Mode", + "module.free-look.general.mode.description": "Which entity to rotate.", + "module.free-look.general.toggle-perspective": "Toggle Perspective", + "module.free-look.general.toggle-perspective.description": "Changes your perspective on toggle.", + "module.free-look.general.camera-sensitivity": "Camera Sensitivity", + "module.free-look.general.camera-sensitivity.description": "How fast the camera moves in camera mode.", + "module.free-look.arrows.arrows-control-opposite": "Arrows Control Opposite", + "module.free-look.arrows.arrows-control-opposite.description": "Allows you to control the other entities rotation with the arrow keys.", + "module.free-look.arrows.arrow-speed": "Arrow Speed", + "module.free-look.arrows.arrow-speed.description": "Rotation speed with arrow keys.", + + "module.auto-walk": "Auto Walk", + "module.auto-walk.description": "Automatically walks forward.", + "module.auto-walk.general.mode": "Mode", + "module.auto-walk.general.mode.description": "Walking mode.", + "module.auto-walk.general.simple-direction": "Simple Direction", + "module.auto-walk.general.simple-direction.description": "The direction to walk in simple mode.", + "module.auto-walk.general.disable-on-input": "Disable On Input", + "module.auto-walk.general.disable-on-input.description": "Disable module on manual movement input", + "module.auto-walk.general.disable-on-y-change": "Disable On Y Change", + "module.auto-walk.general.disable-on-y-change.description": "Disable module if player moves vertically", + "module.auto-walk.general.no-unloaded-chunks": "No Unloaded Chunks", + "module.auto-walk.general.no-unloaded-chunks.description": "Do not allow movement into unloaded chunks", + + "module.self-trap": "Self Trap", + "module.self-trap.description": "Places blocks above your head.", + "module.self-trap.general.whitelist": "Whitelist", + "module.self-trap.general.whitelist.description": "Which blocks to use.", + "module.self-trap.general.top-mode": "Top Mode", + "module.self-trap.general.top-mode.description": "Which positions to place on your top half.", + "module.self-trap.general.bottom-mode": "Bottom Mode", + "module.self-trap.general.bottom-mode.description": "Which positions to place on your bottom half.", + "module.self-trap.general.place-delay": "Place Delay", + "module.self-trap.general.place-delay.description": "How many ticks between block placements.", + "module.self-trap.general.center": "Center", + "module.self-trap.general.center.description": "Centers you on the block you are standing on before placing.", + "module.self-trap.general.turn-off": "Turn Off", + "module.self-trap.general.turn-off.description": "Turns off after placing.", + "module.self-trap.general.rotate": "Rotate", + "module.self-trap.general.rotate.description": "Sends rotation packets to the server when placing.", + "module.self-trap.render.render": "Render", + "module.self-trap.render.render.description": "Renders a block overlay where the blocks will be placed.", + "module.self-trap.render.shape-mode": "Shape Mode", + "module.self-trap.render.shape-mode.description": "How the shapes are rendered.", + "module.self-trap.render.side-color": "Side Color", + "module.self-trap.render.side-color.description": "The color of the sides of the blocks being rendered.", + "module.self-trap.render.line-color": "Line Color", + "module.self-trap.render.line-color.description": "The color of the lines of the blocks being rendered.", + + "module.safe-walk": "Safe Walk", + "module.safe-walk.description": "Prevents you from walking off blocks.", + "module.safe-walk.general.minimum-fall-distance": "Minimum Fall Distance", + "module.safe-walk.general.minimum-fall-distance.description": "The minimum number of blocks you are expected to fall before the module activates.", + "module.safe-walk.general.sneak": "Sneak", + "module.safe-walk.general.sneak.description": "Sneak when approaching edge of block.", + "module.safe-walk.general.safe-sneak": "Safe Sneak", + "module.safe-walk.general.safe-sneak.description": "Prevent you from falling if sneak doesn't trigger correctly.", + "module.safe-walk.general.sneak-on-sprint": "Sneak On Sprint", + "module.safe-walk.general.sneak-on-sprint.description": "Sneak even when sprinting at the block edge.", + "module.safe-walk.general.edge-distance": "Edge Distance", + "module.safe-walk.general.edge-distance.description": "Distance offset before reaching an edge.", + "module.safe-walk.render.render": "Render", + "module.safe-walk.render.render.description": "Render edge distance helper.", + "module.safe-walk.render.render-player-box": "Render Player Box", + "module.safe-walk.render.render-player-box.description": "Render player box helper.", + + "module.auto-wasp": "Auto Wasp", + "module.auto-wasp.description": "Wasps for you. Unable to traverse around blocks, assumes a clear straight line to the target.", + "module.auto-wasp.general.horizontal-speed": "Horizontal Speed", + "module.auto-wasp.general.horizontal-speed.description": "Horizontal elytra speed.", + "module.auto-wasp.general.vertical-speed": "Vertical Speed", + "module.auto-wasp.general.vertical-speed.description": "Vertical elytra speed.", + "module.auto-wasp.general.avoid-landing": "Avoid Landing", + "module.auto-wasp.general.avoid-landing.description": "Will try to avoid landing if your target is on the ground.", + "module.auto-wasp.general.predict-movement": "Predict Movement", + "module.auto-wasp.general.predict-movement.description": "Tries to predict the targets position according to their movement.", + "module.auto-wasp.general.only-friends": "Only Friends", + "module.auto-wasp.general.only-friends.description": "Will only follow friends.", + "module.auto-wasp.general.action-on-target-loss": "Action On Target Loss", + "module.auto-wasp.general.action-on-target-loss.description": "What to do if you lose the target.", + "module.auto-wasp.general.offset": "Offset", + "module.auto-wasp.general.offset.description": "How many blocks offset to wasp at from the target.", + + "module.break-delay": "Break Delay", + "module.break-delay.description": "Changes the delay between breaking blocks.", + "module.break-delay.general.cooldown": "Cooldown", + "module.break-delay.general.cooldown.description": "Block break cooldown in ticks.", + "module.break-delay.general.no-insta-break": "No Insta Break", + "module.break-delay.general.no-insta-break.description": "Prevents you from misbreaking blocks if you can instantly break them.", + + "module.auto-armor": "Auto Armor", + "module.auto-armor.description": "Automatically equips armor.", + "module.auto-armor.general.preferred-protection": "Preferred Protection", + "module.auto-armor.general.preferred-protection.description": "Which type of protection to prefer.", + "module.auto-armor.general.swap-delay": "Swap Delay", + "module.auto-armor.general.swap-delay.description": "The delay between equipping armor pieces.", + "module.auto-armor.general.avoided-enchantments": "Avoided Enchantments", + "module.auto-armor.general.avoided-enchantments.description": "Enchantments that should be avoided.", + "module.auto-armor.general.blast-prot-leggings": "Blast Prot Leggings", + "module.auto-armor.general.blast-prot-leggings.description": "Uses blast protection for leggings regardless of preferred protection.", + "module.auto-armor.general.anti-break": "Anti Break", + "module.auto-armor.general.anti-break.description": "Takes off armor if it is about to break.", + "module.auto-armor.general.ignore-elytra": "Ignore Elytra", + "module.auto-armor.general.ignore-elytra.description": "Will not replace your elytra if you have it equipped.", + + "module.pop-chams": "Pop Chams", + "module.pop-chams.description": "Renders a ghost where players pop totem.", + "module.pop-chams.general.only-one": "Only One", + "module.pop-chams.general.only-one.description": "Only allow one ghost per player.", + "module.pop-chams.general.render-time": "Render Time", + "module.pop-chams.general.render-time.description": "How long the ghost is rendered in seconds.", + "module.pop-chams.general.y-modifier": "Y Modifier", + "module.pop-chams.general.y-modifier.description": "How much should the Y position of the ghost change per second.", + "module.pop-chams.general.scale-modifier": "Scale Modifier", + "module.pop-chams.general.scale-modifier.description": "How much should the scale of the ghost change per second.", + "module.pop-chams.general.fade-out": "Fade Out", + "module.pop-chams.general.fade-out.description": "Fades out the color.", + "module.pop-chams.general.shape-mode": "Shape Mode", + "module.pop-chams.general.shape-mode.description": "How the shapes are rendered.", + "module.pop-chams.general.side-color": "Side Color", + "module.pop-chams.general.side-color.description": "The side color.", + "module.pop-chams.general.line-color": "Line Color", + "module.pop-chams.general.line-color.description": "The line color.", + + "module.ghost-hand": "Ghost Hand", + "module.ghost-hand.description": "Opens containers through walls.", + + "module.slippy": "Slippy", + "module.slippy.description": "Changes the base friction level of blocks.", + "module.slippy.general.friction": "Friction", + "module.slippy.general.friction.description": "The base friction level.", + "module.slippy.general.list-mode": "List Mode", + "module.slippy.general.list-mode.description": "The mode to select blocks.", + "module.slippy.general.ignored-blocks": "Ignored Blocks", + "module.slippy.general.ignored-blocks.description": "Decide which blocks not to slip on", + "module.slippy.general.allowed-blocks": "Allowed Blocks", + "module.slippy.general.allowed-blocks.description": "Decide which blocks to slip on", + + "module.auto-tool": "Auto Tool", + "module.auto-tool.description": "Automatically switches to the most effective tool when performing an action.", + "module.auto-tool.general.prefer": "Prefer", + "module.auto-tool.general.prefer.description": "Either to prefer Silk Touch, Fortune, or none.", + "module.auto-tool.general.silk-touch-for-ender-chest": "Silk Touch For Ender Chest", + "module.auto-tool.general.silk-touch-for-ender-chest.description": "Mines Ender Chests only with the Silk Touch enchantment.", + "module.auto-tool.general.fortune-for-ores-and-crops": "Fortune For Ores And Crops", + "module.auto-tool.general.fortune-for-ores-and-crops.description": "Mines Ores and crops only with the Fortune enchantment.", + "module.auto-tool.general.anti-break": "Anti Break", + "module.auto-tool.general.anti-break.description": "Stops you from breaking your tool.", + "module.auto-tool.general.anti-break-percentage": "Anti Break Percentage", + "module.auto-tool.general.anti-break-percentage.description": "The durability percentage to stop using a tool.", + "module.auto-tool.general.switch-back": "Switch Back", + "module.auto-tool.general.switch-back.description": "Switches your hand to whatever was selected when releasing your attack key.", + "module.auto-tool.general.switch-delay": "Switch Delay", + "module.auto-tool.general.switch-delay.description": "Delay in ticks before switching tools.", + "module.auto-tool.whitelist.list-mode": "List Mode", + "module.auto-tool.whitelist.list-mode.description": "Selection mode.", + "module.auto-tool.whitelist.whitelist": "Whitelist", + "module.auto-tool.whitelist.whitelist.description": "The tools you want to use.", + "module.auto-tool.whitelist.blacklist": "Blacklist", + "module.auto-tool.whitelist.blacklist.description": "The tools you don't want to use.", + + "module.anti-hunger": "Anti Hunger", + "module.anti-hunger.description": "Reduces (does NOT remove) hunger consumption.", + "module.anti-hunger.general.sprint": "Sprint", + "module.anti-hunger.general.sprint.description": "Spoofs sprinting packets.", + "module.anti-hunger.general.on-ground": "On Ground", + "module.anti-hunger.general.on-ground.description": "Spoofs the onGround flag.", + + "module.auto-clicker": "Auto Clicker", + "module.auto-clicker.description": "Automatically clicks.", + "module.auto-clicker.general.while-in-screens": "While In Screens", + "module.auto-clicker.general.while-in-screens.description": "Whether to click while a screen is open.", + "module.auto-clicker.general.mode-left": "Mode Left", + "module.auto-clicker.general.mode-left.description": "The method of clicking for left clicks.", + "module.auto-clicker.general.delay-left": "Delay Left", + "module.auto-clicker.general.delay-left.description": "The amount of delay between left clicks in ticks.", + "module.auto-clicker.general.mode-right": "Mode Right", + "module.auto-clicker.general.mode-right.description": "The method of clicking for right clicks.", + "module.auto-clicker.general.delay-right": "Delay Right", + "module.auto-clicker.general.delay-right.description": "The amount of delay between right clicks in ticks.", + + "module.auto-shearer": "Auto Shearer", + "module.auto-shearer.description": "Automatically shears sheep.", + "module.auto-shearer.general.distance": "Distance", + "module.auto-shearer.general.distance.description": "The maximum distance the sheep have to be to be sheared.", + "module.auto-shearer.general.anti-break": "Anti Break", + "module.auto-shearer.general.anti-break.description": "Prevents shears from being broken.", + "module.auto-shearer.general.rotate": "Rotate", + "module.auto-shearer.general.rotate.description": "Automatically faces towards the animal being sheared.", + + "module.boss-stack": "Boss Stack", + "module.boss-stack.description": "Stacks boss bars to make your HUD less cluttered.", + "module.boss-stack.general.stack": "Stack", + "module.boss-stack.general.stack.description": "Stacks boss bars and adds a counter to the text.", + "module.boss-stack.general.hide-name": "Hide Name", + "module.boss-stack.general.hide-name.description": "Hides the names of boss bars.", + "module.boss-stack.general.bar-spacing": "Bar Spacing", + "module.boss-stack.general.bar-spacing.description": "The spacing reduction between each boss bar.", + + "module.camera-tweaks": "Camera Tweaks", + "module.camera-tweaks.description": "Allows modification of the third person camera.", + "module.camera-tweaks.general.clip": "Clip", + "module.camera-tweaks.general.clip.description": "Allows the camera to clip through blocks.", + "module.camera-tweaks.general.camera-distance": "Camera Distance", + "module.camera-tweaks.general.camera-distance.description": "The distance the third person camera is from the player.", + "module.camera-tweaks.scrolling.scrolling": "Scrolling", + "module.camera-tweaks.scrolling.scrolling.description": "Allows you to scroll to change camera distance.", + "module.camera-tweaks.scrolling.bind": "Bind", + "module.camera-tweaks.scrolling.bind.description": "Binds camera distance scrolling to a key.", + "module.camera-tweaks.scrolling.sensitivity": "Sensitivity", + "module.camera-tweaks.scrolling.sensitivity.description": "Sensitivity of the scroll wheel when changing the cameras distance.", + + "module.auto-weapon": "Auto Weapon", + "module.auto-weapon.description": "Finds the best weapon to use in your hotbar.", + "module.auto-weapon.general.weapon": "Weapon", + "module.auto-weapon.general.weapon.description": "What type of weapon to use.", + "module.auto-weapon.general.threshold": "Threshold", + "module.auto-weapon.general.threshold.description": "If the non-preferred weapon produces this much damage this will favor it over your preferred weapon.", + "module.auto-weapon.general.anti-break": "Anti Break", + "module.auto-weapon.general.anti-break.description": "Prevents you from breaking your weapon.", + + "module.better-chat": "Better Chat", + "module.better-chat.description": "Improves your chat experience in various ways.", + "module.better-chat.general.annoy": "Annoy", + "module.better-chat.general.annoy.description": "Makes your messages aNnOyInG.", + "module.better-chat.general.fancy-chat": "Fancy Chat", + "module.better-chat.general.fancy-chat.description": "Makes your messages ғᴀɴᴄʏ!", + "module.better-chat.general.timestamps": "Timestamps", + "module.better-chat.general.timestamps.description": "Adds client-side time stamps to the beginning of chat messages.", + "module.better-chat.general.show-seconds": "Show Seconds", + "module.better-chat.general.show-seconds.description": "Shows seconds in the chat message timestamps", + "module.better-chat.general.player-heads": "Player Heads", + "module.better-chat.general.player-heads.description": "Displays player heads next to their messages.", + "module.better-chat.general.coords-protection": "Coords Protection", + "module.better-chat.general.coords-protection.description": "Prevents you from sending messages in chat that may contain coordinates.", + "module.better-chat.general.keep-history": "Keep History", + "module.better-chat.general.keep-history.description": "Prevents the chat history from being cleared when disconnecting.", + "module.better-chat.filter.anti-spam": "Anti Spam", + "module.better-chat.filter.anti-spam.description": "Blocks duplicate messages from filling your chat.", + "module.better-chat.filter.depth": "Depth", + "module.better-chat.filter.depth.description": "How many messages to filter.", + "module.better-chat.filter.anti-clear": "Anti Clear", + "module.better-chat.filter.anti-clear.description": "Prevents servers from clearing chat.", + "module.better-chat.filter.filter-regex": "Filter Regex", + "module.better-chat.filter.filter-regex.description": "Filter out chat messages that match the regex filter.", + "module.better-chat.filter.regex-filter": "Regex Filter", + "module.better-chat.filter.regex-filter.description": "Regex filter used for filtering chat messages.", + "module.better-chat.longer-chat.infinite-chat-box": "Infinite Chat Box", + "module.better-chat.longer-chat.infinite-chat-box.description": "Lets you type infinitely long messages.", + "module.better-chat.longer-chat.longer-chat-history": "Longer Chat History", + "module.better-chat.longer-chat.longer-chat-history.description": "Extends chat length.", + "module.better-chat.longer-chat.extra-lines": "Extra Lines", + "module.better-chat.longer-chat.extra-lines.description": "The amount of extra chat lines.", + "module.better-chat.prefix.prefix": "Prefix", + "module.better-chat.prefix.prefix.description": "Adds a prefix to your chat messages.", + "module.better-chat.prefix.random": "Random", + "module.better-chat.prefix.random.description": "Uses a random number as your prefix.", + "module.better-chat.prefix.text": "Text", + "module.better-chat.prefix.text.description": "The text to add as your prefix.", + "module.better-chat.prefix.small-caps": "Small Caps", + "module.better-chat.prefix.small-caps.description": "Uses small caps in the prefix.", + "module.better-chat.suffix.suffix": "Suffix", + "module.better-chat.suffix.suffix.description": "Adds a suffix to your chat messages.", + "module.better-chat.suffix.random": "Random", + "module.better-chat.suffix.random.description": "Uses a random number as your suffix.", + "module.better-chat.suffix.text": "Text", + "module.better-chat.suffix.text.description": "The text to add as your suffix.", + "module.better-chat.suffix.small-caps": "Small Caps", + "module.better-chat.suffix.small-caps.description": "Uses small caps in the suffix.", + + "module.offhand-crash": "Offhand Crash", + "module.offhand-crash.description": "An exploit that can crash other players by swapping back and forth between your main hand and offhand.", + "module.offhand-crash.general.do-crash": "Do Crash", + "module.offhand-crash.general.do-crash.description": "Sends X number of offhand swap sound packets to the server per tick.", + "module.offhand-crash.general.speed": "Speed", + "module.offhand-crash.general.speed.description": "The amount of swaps per tick.", + "module.offhand-crash.general.anti-crash": "Anti Crash", + "module.offhand-crash.general.anti-crash.description": "Attempts to prevent you from crashing yourself.", + + "module.auto-breed": "Auto Breed", + "module.auto-breed.description": "Automatically breeds specified animals.", + "module.auto-breed.general.entities": "Entities", + "module.auto-breed.general.entities.description": "Entities to breed.", + "module.auto-breed.general.range": "Range", + "module.auto-breed.general.range.description": "How far away the animals can be to be bred.", + "module.auto-breed.general.hand-for-breeding": "Hand For Breeding", + "module.auto-breed.general.hand-for-breeding.description": "The hand to use for breeding.", + "module.auto-breed.general.mob-age-filter": "Mob Age Filter", + "module.auto-breed.general.mob-age-filter.description": "Determines the age of the mobs to target (baby, adult, or both).", + + "module.spawn-proofer": "Spawn Proofer", + "module.spawn-proofer.description": "Automatically spawnproofs unlit areas.", + "module.spawn-proofer.general.place-delay": "Place Delay", + "module.spawn-proofer.general.place-delay.description": "The tick delay between placing blocks.", + "module.spawn-proofer.general.place-range": "Place Range", + "module.spawn-proofer.general.place-range.description": "How far away from the player you can place a block.", + "module.spawn-proofer.general.walls-range": "Walls Range", + "module.spawn-proofer.general.walls-range.description": "How far away from the player you can place a block behind walls.", + "module.spawn-proofer.general.blocks-per-tick": "Blocks Per Tick", + "module.spawn-proofer.general.blocks-per-tick.description": "How many blocks to place in one tick.", + "module.spawn-proofer.general.light-level": "Light Level", + "module.spawn-proofer.general.light-level.description": "Light levels to spawn proof. Old spawning light: 7.", + "module.spawn-proofer.general.blocks": "Blocks", + "module.spawn-proofer.general.blocks.description": "Block to use for spawn proofing.", + "module.spawn-proofer.general.mode": "Mode", + "module.spawn-proofer.general.mode.description": "Which spawn types should be spawn proofed.", + "module.spawn-proofer.general.rotate": "Rotate", + "module.spawn-proofer.general.rotate.description": "Rotates towards the blocks being placed.", + + "module.step": "Step", + "module.step.description": "Allows you to walk up full blocks instantly.", + "module.step.general.height": "Height", + "module.step.general.height.description": "Step height.", + "module.step.general.active-when": "Active When", + "module.step.general.active-when.description": "Step is active when you meet these requirements.", + "module.step.general.safe-step": "Safe Step", + "module.step.general.safe-step.description": "Doesn't let you step out of a hole if you are low on health or there is a crystal nearby.", + "module.step.general.step-health": "Step Health", + "module.step.general.step-health.description": "The health you stop being able to step at.", + + "module.entity-owner": "Entity Owner", + "module.entity-owner.description": "Displays the name of the player who owns the entity you're looking at.", + "module.entity-owner.general.scale": "Scale", + "module.entity-owner.general.scale.description": "The scale of the text.", + + "module.scaffold": "Scaffold", + "module.scaffold.description": "Automatically places blocks under you.", + "module.scaffold.general.blocks": "Blocks", + "module.scaffold.general.blocks.description": "Selected blocks.", + "module.scaffold.general.blocks-filter": "Blocks Filter", + "module.scaffold.general.blocks-filter.description": "How to use the block list setting", + "module.scaffold.general.fast-tower": "Fast Tower", + "module.scaffold.general.fast-tower.description": "Whether or not to scaffold upwards faster.", + "module.scaffold.general.tower-speed": "Tower Speed", + "module.scaffold.general.tower-speed.description": "The speed at which to tower.", + "module.scaffold.general.while-moving": "While Moving", + "module.scaffold.general.while-moving.description": "Allows you to tower while moving.", + "module.scaffold.general.only-on-click": "Only On Click", + "module.scaffold.general.only-on-click.description": "Only places blocks when holding right click.", + "module.scaffold.general.swing": "Swing", + "module.scaffold.general.swing.description": "Renders your client-side swing.", + "module.scaffold.general.auto-switch": "Auto Switch", + "module.scaffold.general.auto-switch.description": "Automatically swaps to a block before placing.", + "module.scaffold.general.rotate": "Rotate", + "module.scaffold.general.rotate.description": "Rotates towards the blocks being placed.", + "module.scaffold.general.air-place": "Air Place", + "module.scaffold.general.air-place.description": "Allow air place. This also allows you to modify scaffold radius.", + "module.scaffold.general.ahead-distance": "Ahead Distance", + "module.scaffold.general.ahead-distance.description": "How far ahead to place blocks.", + "module.scaffold.general.closest-block-range": "Closest Block Range", + "module.scaffold.general.closest-block-range.description": "How far can scaffold place blocks when you are in air.", + "module.scaffold.general.radius": "Radius", + "module.scaffold.general.radius.description": "Scaffold radius.", + "module.scaffold.general.blocks-per-tick": "Blocks Per Tick", + "module.scaffold.general.blocks-per-tick.description": "How many blocks to place in one tick.", + "module.scaffold.render.render": "Render", + "module.scaffold.render.render.description": "Whether to render blocks that have been placed.", + "module.scaffold.render.shape-mode": "Shape Mode", + "module.scaffold.render.shape-mode.description": "How the shapes are rendered.", + "module.scaffold.render.side-color": "Side Color", + "module.scaffold.render.side-color.description": "The side color of the target block rendering.", + "module.scaffold.render.line-color": "Line Color", + "module.scaffold.render.line-color.description": "The line color of the target block rendering.", + + "module.sneak": "Sneak", + "module.sneak.description": "Sneaks for you", + "module.sneak.general.mode": "Mode", + "module.sneak.general.mode.description": "Which method to sneak.", + + "module.no-slow": "No Slow", + "module.no-slow.description": "Allows you to move normally when using objects that will slow you.", + "module.no-slow.general.items": "Items", + "module.no-slow.general.items.description": "Whether or not using items will slow you.", + "module.no-slow.general.web": "Web", + "module.no-slow.general.web.description": "Whether or not cobwebs will not slow you down.", + "module.no-slow.general.web-timer": "Web Timer", + "module.no-slow.general.web-timer.description": "The timer value for WebMode Timer.", + "module.no-slow.general.honey-block": "Honey Block", + "module.no-slow.general.honey-block.description": "Whether or not honey blocks will not slow you down.", + "module.no-slow.general.soul-sand": "Soul Sand", + "module.no-slow.general.soul-sand.description": "Whether or not soul sand will not slow you down.", + "module.no-slow.general.slime-block": "Slime Block", + "module.no-slow.general.slime-block.description": "Whether or not slime blocks will not slow you down.", + "module.no-slow.general.berry-bush": "Berry Bush", + "module.no-slow.general.berry-bush.description": "Whether or not berry bushes will not slow you down.", + "module.no-slow.general.air-strict": "Air Strict", + "module.no-slow.general.air-strict.description": "Will attempt to bypass anti-cheats like 2b2t's. Only works while in air.", + "module.no-slow.general.fluid-drag": "Fluid Drag", + "module.no-slow.general.fluid-drag.description": "Whether or not fluid drag will not slow you down.", + "module.no-slow.general.sneaking": "Sneaking", + "module.no-slow.general.sneaking.description": "Whether or not sneaking will not slow you down.", + "module.no-slow.general.hunger": "Hunger", + "module.no-slow.general.hunger.description": "Whether or not hunger will not slow you down.", + "module.no-slow.general.slowness": "Slowness", + "module.no-slow.general.slowness.description": "Whether or not slowness will not slow you down.", + + "module.fake-player": "Fake Player", + "module.fake-player.description": "Spawns a client-side fake player for testing usages. No need to be active.", + "module.fake-player.general.name": "Name", + "module.fake-player.general.name.description": "The name of the fake player.", + "module.fake-player.general.copy-inv": "Copy Inv", + "module.fake-player.general.copy-inv.description": "Copies your inventory to the fake player.", + "module.fake-player.general.health": "Health", + "module.fake-player.general.health.description": "The fake player's default health.", + + "module.nametags": "Nametags", + "module.nametags.description": "Displays customizable nametags above players, items and other entities.", + "module.nametags.general.entities": "Entities", + "module.nametags.general.entities.description": "Select entities to draw nametags on.", + "module.nametags.general.scale": "Scale", + "module.nametags.general.scale.description": "The scale of the nametag.", + "module.nametags.general.ignore-self": "Ignore Self", + "module.nametags.general.ignore-self.description": "Ignore yourself when in third person or freecam.", + "module.nametags.general.ignore-friends": "Ignore Friends", + "module.nametags.general.ignore-friends.description": "Ignore rendering nametags for friends.", + "module.nametags.general.ignore-bots": "Ignore Bots", + "module.nametags.general.ignore-bots.description": "Only render non-bot nametags.", + "module.nametags.general.culling": "Culling", + "module.nametags.general.culling.description": "Only render a certain number of nametags at a certain distance.", + "module.nametags.general.culling-range": "Culling Range", + "module.nametags.general.culling-range.description": "Only render nametags within this distance of your player.", + "module.nametags.general.culling-count": "Culling Count", + "module.nametags.general.culling-count.description": "Only render this many nametags.", + "module.nametags.players.health": "Health", + "module.nametags.players.health.description": "Shows the player's health.", + "module.nametags.players.gamemode": "Gamemode", + "module.nametags.players.gamemode.description": "Shows the player's GameMode.", + "module.nametags.players.distance": "Distance", + "module.nametags.players.distance.description": "Shows the distance between you and the player.", + "module.nametags.players.ping": "Ping", + "module.nametags.players.ping.description": "Shows the player's ping.", + "module.nametags.players.items": "Items", + "module.nametags.players.items.description": "Displays armor and hand items above the name tags.", + "module.nametags.players.item-spacing": "Item Spacing", + "module.nametags.players.item-spacing.description": "The spacing between items.", + "module.nametags.players.ignore-empty-slots": "Ignore Empty Slots", + "module.nametags.players.ignore-empty-slots.description": "Doesn't add spacing where an empty item stack would be.", + "module.nametags.players.durability": "Durability", + "module.nametags.players.durability.description": "Displays item durability as either a total, percentage, or neither.", + "module.nametags.players.display-enchants": "Display Enchants", + "module.nametags.players.display-enchants.description": "Displays item enchantments on the items.", + "module.nametags.players.shown-enchantments": "Shown Enchantments", + "module.nametags.players.shown-enchantments.description": "The enchantments that are shown on nametags.", + "module.nametags.players.enchantment-position": "Enchantment Position", + "module.nametags.players.enchantment-position.description": "Where the enchantments are rendered.", + "module.nametags.players.enchant-name-length": "Enchant Name Length", + "module.nametags.players.enchant-name-length.description": "The length enchantment names are trimmed to.", + "module.nametags.players.enchant-text-scale": "Enchant Text Scale", + "module.nametags.players.enchant-text-scale.description": "The scale of the enchantment text.", + "module.nametags.items.show-count": "Show Count", + "module.nametags.items.show-count.description": "Displays the number of items in the stack.", + "module.nametags.render.background-color": "Background Color", + "module.nametags.render.background-color.description": "The color of the nametag background.", + "module.nametags.render.name-color": "Name Color", + "module.nametags.render.name-color.description": "The color of the nametag names.", + "module.nametags.render.ping-color": "Ping Color", + "module.nametags.render.ping-color.description": "The color of the nametag ping.", + "module.nametags.render.gamemode-color": "Gamemode Color", + "module.nametags.render.gamemode-color.description": "The color of the nametag gamemode.", + "module.nametags.render.distance-color-mode": "Distance Color Mode", + "module.nametags.render.distance-color-mode.description": "The mode to color the nametag distance with.", + "module.nametags.render.distance-color": "Distance Color", + "module.nametags.render.distance-color.description": "The color of the nametag distance.", + + "module.esp": "Esp", + "module.esp.description": "Renders entities through walls.", + "module.esp.general.mode": "Mode", + "module.esp.general.mode.description": "Rendering mode.", + "module.esp.general.highlight-target": "Highlight Target", + "module.esp.general.highlight-target.description": "highlights the currently targeted entity differently", + "module.esp.general.target-hitbox": "Target Hitbox", + "module.esp.general.target-hitbox.description": "draw the hitbox of the target entity", + "module.esp.general.outline-width": "Outline Width", + "module.esp.general.outline-width.description": "The width of the shader outline.", + "module.esp.general.glow-multiplier": "Glow Multiplier", + "module.esp.general.glow-multiplier.description": "Multiplier for glow effect", + "module.esp.general.ignore-self": "Ignore Self", + "module.esp.general.ignore-self.description": "Ignores yourself drawing the shader.", + "module.esp.general.shape-mode": "Shape Mode", + "module.esp.general.shape-mode.description": "How the shapes are rendered.", + "module.esp.general.fill-opacity": "Fill Opacity", + "module.esp.general.fill-opacity.description": "The opacity of the shape fill.", + "module.esp.general.fade-distance": "Fade Distance", + "module.esp.general.fade-distance.description": "The distance from an entity where the color begins to fade.", + "module.esp.general.entities": "Entities", + "module.esp.general.entities.description": "Select specific entities.", + "module.esp.colors.distance-colors": "Distance Colors", + "module.esp.colors.distance-colors.description": "Changes the color of tracers depending on distance.", + "module.esp.colors.show-friend-colors": "Show Friend Colors", + "module.esp.colors.show-friend-colors.description": "Whether or not to override the distance color of friends with the friend color.", + "module.esp.colors.players-color": "Players Color", + "module.esp.colors.players-color.description": "The other player's color.", + "module.esp.colors.animals-color": "Animals Color", + "module.esp.colors.animals-color.description": "The animal's color.", + "module.esp.colors.water-animals-color": "Water Animals Color", + "module.esp.colors.water-animals-color.description": "The water animal's color.", + "module.esp.colors.monsters-color": "Monsters Color", + "module.esp.colors.monsters-color.description": "The monster's color.", + "module.esp.colors.ambient-color": "Ambient Color", + "module.esp.colors.ambient-color.description": "The ambient's color.", + "module.esp.colors.misc-color": "Misc Color", + "module.esp.colors.misc-color.description": "The misc color.", + "module.esp.colors.target-color": "Target Color", + "module.esp.colors.target-color.description": "The target color.", + "module.esp.colors.target-hitbox-color": "Target Hitbox Color", + "module.esp.colors.target-hitbox-color.description": "The target hitbox color.", + + "module.rotation": "Rotation", + "module.rotation.description": "Changes/locks your yaw and pitch.", + "module.rotation.yaw.yaw-lock-mode": "Yaw Lock Mode", + "module.rotation.yaw.yaw-lock-mode.description": "The way in which your yaw is locked.", + "module.rotation.yaw.yaw-angle": "Yaw Angle", + "module.rotation.yaw.yaw-angle.description": "Yaw angle in degrees.", + "module.rotation.pitch.pitch-lock-mode": "Pitch Lock Mode", + "module.rotation.pitch.pitch-lock-mode.description": "The way in which your pitch is locked.", + "module.rotation.pitch.pitch-angle": "Pitch Angle", + "module.rotation.pitch.pitch-angle.description": "Pitch angle in degrees.", + + "module.elytra-fly": "Elytra Fly", + "module.elytra-fly.description": "Gives you more control over your elytra.", + "module.elytra-fly.general.mode": "Mode", + "module.elytra-fly.general.mode.description": "The mode of flying.", + "module.elytra-fly.general.auto-take-off": "Auto Take Off", + "module.elytra-fly.general.auto-take-off.description": "Automatically takes off when you hold jump without needing to double jump.", + "module.elytra-fly.general.fall-multiplier": "Fall Multiplier", + "module.elytra-fly.general.fall-multiplier.description": "Controls how fast will you go down naturally.", + "module.elytra-fly.general.horizontal-speed": "Horizontal Speed", + "module.elytra-fly.general.horizontal-speed.description": "How fast you go forward and backward.", + "module.elytra-fly.general.vertical-speed": "Vertical Speed", + "module.elytra-fly.general.vertical-speed.description": "How fast you go up and down.", + "module.elytra-fly.general.acceleration": "Acceleration", + + "module.elytra-fly.general.acceleration-step": "Acceleration Step", + + "module.elytra-fly.general.acceleration-start": "Acceleration Start", + + "module.elytra-fly.general.stop-in-water": "Stop In Water", + "module.elytra-fly.general.stop-in-water.description": "Stops flying in water.", + "module.elytra-fly.general.no-unloaded-chunks": "No Unloaded Chunks", + "module.elytra-fly.general.no-unloaded-chunks.description": "Stops you from going into unloaded chunks.", + "module.elytra-fly.general.auto-hover": "Auto Hover", + "module.elytra-fly.general.auto-hover.description": "Automatically hover .3 blocks off ground when holding shift.", + "module.elytra-fly.general.no-crash": "No Crash", + "module.elytra-fly.general.no-crash.description": "Stops you from going into walls.", + "module.elytra-fly.general.crash-look-ahead": "Crash Look Ahead", + "module.elytra-fly.general.crash-look-ahead.description": "Distance to look ahead when flying.", + "module.elytra-fly.general.insta-drop": "Insta Drop", + "module.elytra-fly.general.insta-drop.description": "Makes you drop out of flight instantly.", + "module.elytra-fly.general.pitch40-lower-bounds": "Pitch40 Lower Bounds", + "module.elytra-fly.general.pitch40-lower-bounds.description": "The bottom height boundary for pitch40. You must be at least 40 blocks above this boundary when starting the module.\nAfter descending below this boundary you will start pitching upwards.", + "module.elytra-fly.general.pitch40-upper-bounds": "Pitch40 Upper Bounds", + "module.elytra-fly.general.pitch40-upper-bounds.description": "The upper height boundary for pitch40. You must be above this boundary when starting the module.\nWhen ascending above this boundary, if you are not already, you will start pitching downwards.", + "module.elytra-fly.general.pitch40-rotate-speed-up": "Pitch40 Rotate Speed Up", + "module.elytra-fly.general.pitch40-rotate-speed-up.description": "The speed for pitch rotation upwards (degrees per tick).", + "module.elytra-fly.general.pitch40-rotate-speed-down": "Pitch40 Rotate Speed Down", + "module.elytra-fly.general.pitch40-rotate-speed-down.description": "The speed for pitch rotation downwards (degrees per tick).", + "module.elytra-fly.general.auto-jump": "Auto Jump", + "module.elytra-fly.general.auto-jump.description": "Automatically jumps for you.", + "module.elytra-fly.general.yaw-lock": "Yaw Lock", + "module.elytra-fly.general.yaw-lock.description": "Whether to enable yaw lock or not", + "module.elytra-fly.general.yaw": "Yaw", + "module.elytra-fly.general.yaw.description": "The yaw angle to look at when using simple rotation lock in bounce mode.", + "module.elytra-fly.general.pitch-lock": "Pitch Lock", + "module.elytra-fly.general.pitch-lock.description": "Whether to lock your pitch angle.", + "module.elytra-fly.general.pitch": "Pitch", + "module.elytra-fly.general.pitch.description": "The pitch angle to look at when using the bounce mode.", + "module.elytra-fly.general.restart": "Restart", + "module.elytra-fly.general.restart.description": "Restarts flying with the elytra when rubberbanding.", + "module.elytra-fly.general.restart-delay": "Restart Delay", + "module.elytra-fly.general.restart-delay.description": "How many ticks to wait before restarting the elytra again after rubberbanding.", + "module.elytra-fly.general.sprint-constantly": "Sprint Constantly", + "module.elytra-fly.general.sprint-constantly.description": "Sprints all the time. If turned off, it will only sprint when the player is touching the ground.", + "module.elytra-fly.general.manual-takeoff": "Manual Takeoff", + "module.elytra-fly.general.manual-takeoff.description": "Does not automatically take off.", + "module.elytra-fly.inventory.elytra-replace": "Elytra Replace", + "module.elytra-fly.inventory.elytra-replace.description": "Replaces broken elytra with a new elytra.", + "module.elytra-fly.inventory.replace-durability": "Replace Durability", + "module.elytra-fly.inventory.replace-durability.description": "The durability threshold your elytra will be replaced at.", + "module.elytra-fly.inventory.chest-swap": "Chest Swap", + "module.elytra-fly.inventory.chest-swap.description": "Enables ChestSwap when toggling this module.", + "module.elytra-fly.inventory.replenish-fireworks": "Replenish Fireworks", + "module.elytra-fly.inventory.replenish-fireworks.description": "Moves fireworks into a selected hotbar slot.", + "module.elytra-fly.inventory.replenish-slot": "Replenish Slot", + "module.elytra-fly.inventory.replenish-slot.description": "The slot auto move moves fireworks to.", + "module.elytra-fly.autopilot.auto-pilot": "Auto Pilot", + "module.elytra-fly.autopilot.auto-pilot.description": "Moves forward while elytra flying.", + "module.elytra-fly.autopilot.use-fireworks": "Use Fireworks", + "module.elytra-fly.autopilot.use-fireworks.description": "Uses firework rockets every second of your choice.", + "module.elytra-fly.autopilot.firework-delay": "Firework Delay", + "module.elytra-fly.autopilot.firework-delay.description": "The delay in seconds in between using fireworks if \"Use Fireworks\" is enabled.", + "module.elytra-fly.autopilot.minimum-height": "Minimum Height", + "module.elytra-fly.autopilot.minimum-height.description": "The minimum height for autopilot.", + + "module.auto-respawn": "Auto Respawn", + "module.auto-respawn.description": "Automatically respawns after death.", + + "module.entity-control": "Entity Control", + "module.entity-control.description": "Lets you control rideable entities without a saddle.", + "module.entity-control.control.entities": "Entities", + "module.entity-control.control.entities.description": "Target entities.", + "module.entity-control.control.spoof-saddle*": "Spoof Saddle*", + "module.entity-control.control.spoof-saddle*.description": "Lets you control rideable entities without them being saddled. Only works on older server versions.", + "module.entity-control.control.max-jump": "Max Jump", + "module.entity-control.control.max-jump.description": "Sets jump power to maximum.", + "module.entity-control.control.lock-yaw": "Lock Yaw", + "module.entity-control.control.lock-yaw.description": "Locks the Entity's yaw.", + "module.entity-control.control.cancel-server-packets": "Cancel Server Packets", + "module.entity-control.control.cancel-server-packets.description": "Cancels incoming vehicle move packets. WILL desync you from the server if you make an invalid movement.", + "module.entity-control.speed.speed": "Speed", + "module.entity-control.speed.speed.description": "Makes you go faster horizontally when riding entities.", + "module.entity-control.speed.horizontal-speed": "Horizontal Speed", + "module.entity-control.speed.horizontal-speed.description": "Horizontal speed in blocks per second.", + "module.entity-control.speed.only-on-ground": "Only On Ground", + "module.entity-control.speed.only-on-ground.description": "Use speed only when standing on a block.", + "module.entity-control.speed.in-water": "In Water", + "module.entity-control.speed.in-water.description": "Use speed when in water.", + "module.entity-control.flight.fly": "Fly", + "module.entity-control.flight.fly.description": "Allows you to fly with entities.", + "module.entity-control.flight.vertical-speed": "Vertical Speed", + "module.entity-control.flight.vertical-speed.description": "Vertical speed in blocks per second.", + "module.entity-control.flight.fall-speed": "Fall Speed", + "module.entity-control.flight.fall-speed.description": "How fast you will fall in blocks per second. Set to a small value to prevent fly kicks.", + "module.entity-control.flight.anti-fly-kick": "Anti Fly Kick", + "module.entity-control.flight.anti-fly-kick.description": "Whether to prevent the server from kicking you for flying.", + "module.entity-control.flight.delay": "Delay", + "module.entity-control.flight.delay.description": "The amount of delay, in ticks, between flying down a bit and return to original position", + + "module.stash-finder": "Stash Finder", + "module.stash-finder.description": "Searches loaded chunks for storage blocks. Saves to /meteor-client", + "module.stash-finder.general.storage-blocks": "Storage Blocks", + "module.stash-finder.general.storage-blocks.description": "Select the storage blocks to search for.", + "module.stash-finder.general.minimum-storage-count": "Minimum Storage Count", + "module.stash-finder.general.minimum-storage-count.description": "The minimum amount of storage blocks in a chunk to record the chunk.", + "module.stash-finder.general.blacklisted-support-blocks": "Blacklisted Support Blocks", + "module.stash-finder.general.blacklisted-support-blocks.description": "Blocks that prevent counting a storage block entity when it sits on them.", + "module.stash-finder.general.minimum-distance": "Minimum Distance", + "module.stash-finder.general.minimum-distance.description": "The minimum distance you must be from spawn to record a certain chunk.", + "module.stash-finder.general.notifications": "Notifications", + "module.stash-finder.general.notifications.description": "Sends Minecraft notifications when new stashes are found.", + "module.stash-finder.general.notification-mode": "Notification Mode", + "module.stash-finder.general.notification-mode.description": "The mode to use for notifications.", + "module.stash-finder.render.render-tracer": "Render Tracer", + "module.stash-finder.render.render-tracer.description": "Renders a tracer to the last found stash.", + "module.stash-finder.render.tracer-color": "Tracer Color", + "module.stash-finder.render.tracer-color.description": "Color of the stash tracer.", + "module.stash-finder.render.tracer-hide-at-distance": "Tracer Hide At Distance", + "module.stash-finder.render.tracer-hide-at-distance.description": "Hide the trace when you are this close to the stash.", + "module.stash-finder.render.tracer-max-distance": "Tracer Max Distance", + "module.stash-finder.render.tracer-max-distance.description": "Hide the trace when you are farther than this distance from the stash.", + "module.stash-finder.render.render-chunk-column": "Render Chunk Column", + "module.stash-finder.render.render-chunk-column.description": "Renders a vertical column at the center of traced chunks.", + "module.stash-finder.render.chunk-column-color": "Chunk Column Color", + "module.stash-finder.render.chunk-column-color.description": "Color of the stash tracer column.", + "module.stash-finder.render.clear-traces-bind": "Clear Traces Bind", + "module.stash-finder.render.clear-traces-bind.description": "Keybind to clear all stash traces.", + + "module.better-beacons": "Better Beacons", + "module.better-beacons.description": "Select effects unaffected by beacon level.", + + "module.auto-nametag": "Auto Nametag", + "module.auto-nametag.description": "Automatically uses nametags on entities without a nametag. WILL nametag ALL entities in the specified distance.", + "module.auto-nametag.general.entities": "Entities", + "module.auto-nametag.general.entities.description": "Which entities to nametag.", + "module.auto-nametag.general.range": "Range", + "module.auto-nametag.general.range.description": "The maximum range an entity can be to be nametagged.", + "module.auto-nametag.general.priority": "Priority", + "module.auto-nametag.general.priority.description": "Priority sort", + "module.auto-nametag.general.renametag": "Renametag", + "module.auto-nametag.general.renametag.description": "Allows already nametagged entities to be renamed.", + "module.auto-nametag.general.rotate": "Rotate", + "module.auto-nametag.general.rotate.description": "Automatically faces towards the mob being nametagged.", + + "module.elytra-boost": "Elytra Boost", + "module.elytra-boost.description": "Boosts your elytra as if you used a firework.", + "module.elytra-boost.general.anti-consume": "Anti Consume", + "module.elytra-boost.general.anti-consume.description": "Prevents fireworks from being consumed when using Elytra Boost.", + "module.elytra-boost.general.firework-duration": "Firework Duration", + "module.elytra-boost.general.firework-duration.description": "The duration of the firework.", + "module.elytra-boost.general.play-sound": "Play Sound", + "module.elytra-boost.general.play-sound.description": "Plays the firework sound when a boost is triggered.", + "module.elytra-boost.general.keybind": "Keybind", + "module.elytra-boost.general.keybind.description": "The keybind to boost.", + + "module.blink": "Blink", + "module.blink.description": "Allows you to essentially teleport while suspending motion updates.", + "module.blink.general.render-original": "Render Original", + "module.blink.general.render-original.description": "Renders your player model at the original position.", + "module.blink.general.pulse-delay": "Pulse Delay", + "module.blink.general.pulse-delay.description": "After the duration in ticks has elapsed, send all packets and start blinking again. 0 to disable.", + "module.blink.general.cancel-blink": "Cancel Blink", + "module.blink.general.cancel-blink.description": "Cancels sending packets and sends you back to your original position.", + + "module.block-selection": "Block Selection", + "module.block-selection.description": "Modifies how your block selection is rendered.", + "module.block-selection.general.advanced": "Advanced", + "module.block-selection.general.advanced.description": "Shows a more advanced outline on different types of shape blocks.", + "module.block-selection.general.single-side": "Single Side", + "module.block-selection.general.single-side.description": "Only renders the side you are looking at.", + "module.block-selection.general.shape-mode": "Shape Mode", + "module.block-selection.general.shape-mode.description": "How the shapes are rendered.", + "module.block-selection.general.side-color": "Side Color", + "module.block-selection.general.side-color.description": "The side color.", + "module.block-selection.general.line-color": "Line Color", + "module.block-selection.general.line-color.description": "The line color.", + "module.block-selection.general.hide-when-inside-block": "Hide When Inside Block", + "module.block-selection.general.hide-when-inside-block.description": "Hide selection when inside target block.", + + "module.auto-city": "Auto City", + "module.auto-city.description": "Automatically mine blocks next to someone's feet.", + "module.auto-city.general.target-range": "Target Range", + "module.auto-city.general.target-range.description": "The radius in which players get targeted.", + "module.auto-city.general.break-range": "Break Range", + "module.auto-city.general.break-range.description": "How close a block must be to you to be considered.", + "module.auto-city.general.switch-mode": "Switch Mode", + "module.auto-city.general.switch-mode.description": "How to switch to a pickaxe.", + "module.auto-city.general.support": "Support", + "module.auto-city.general.support.description": "If there is no block below a city block it will place one before mining.", + "module.auto-city.general.place-range": "Place Range", + "module.auto-city.general.place-range.description": "How far away to try and place a block.", + "module.auto-city.general.rotate": "Rotate", + "module.auto-city.general.rotate.description": "Automatically rotates you towards the city block.", + "module.auto-city.general.chat-info": "Chat Info", + "module.auto-city.general.chat-info.description": "Whether the module should send messages in chat.", + "module.auto-city.render.swing-hand": "Swing Hand", + "module.auto-city.render.swing-hand.description": "Whether to render your hand swinging.", + "module.auto-city.render.render-block": "Render Block", + "module.auto-city.render.render-block.description": "Whether to render the block being broken.", + "module.auto-city.render.shape-mode": "Shape Mode", + "module.auto-city.render.shape-mode.description": "How the shapes are rendered.", + "module.auto-city.render.side-color": "Side Color", + "module.auto-city.render.side-color.description": "The side color of the rendering.", + "module.auto-city.render.line-color": "Line Color", + "module.auto-city.render.line-color.description": "The line color of the rendering.", + + "module.waypoints": "Waypoints", + "module.waypoints.description": "Allows you to create waypoints.", + "module.waypoints.general.text-render-distance": "Text Render Distance", + "module.waypoints.general.text-render-distance.description": "Maximum distance from the center of the screen at which text will be rendered.", + "module.waypoints.general.waypoint-fade-distance": "Waypoint Fade Distance", + "module.waypoints.general.waypoint-fade-distance.description": "The distance to a waypoint at which it begins to start fading.", + "module.waypoints.death-position.max-death-positions": "Max Death Positions", + "module.waypoints.death-position.max-death-positions.description": "The amount of death positions to save, 0 to disable", + "module.waypoints.death-position.chat": "Chat", + "module.waypoints.death-position.chat.description": "Send a chat message with your position once you die", + + "module.auto-web": "Auto Web", + "module.auto-web.description": "Automatically places webs on other players.", + "module.auto-web.general.place-range": "Place Range", + "module.auto-web.general.place-range.description": "The range at which webs can be placed.", + "module.auto-web.general.walls-range": "Walls Range", + "module.auto-web.general.walls-range.description": "Range in which to place webs when behind blocks.", + "module.auto-web.general.target-priority": "Target Priority", + "module.auto-web.general.target-priority.description": "How to filter targets within range.", + "module.auto-web.general.target-range": "Target Range", + "module.auto-web.general.target-range.description": "The maximum distance to target players.", + "module.auto-web.general.predict-movement": "Predict Movement", + "module.auto-web.general.predict-movement.description": "Predict target movement to account for ping.", + "module.auto-web.general.ticks-to-predict": "Ticks To Predict", + "module.auto-web.general.ticks-to-predict.description": "How many ticks ahead we should predict for.", + "module.auto-web.general.doubles": "Doubles", + "module.auto-web.general.doubles.description": "Places webs in the target's upper hitbox as well as the lower hitbox.", + "module.auto-web.general.rotate": "Rotate", + "module.auto-web.general.rotate.description": "Rotates towards the webs when placing.", + "module.auto-web.render.render": "Render", + "module.auto-web.render.render.description": "Renders an overlay where webs are placed.", + "module.auto-web.render.shape-mode": "Shape Mode", + "module.auto-web.render.shape-mode.description": "How the shapes are rendered.", + "module.auto-web.render.side-color": "Side Color", + "module.auto-web.render.side-color.description": "The side color of the placed web rendering.", + "module.auto-web.render.line-color": "Line Color", + "module.auto-web.render.line-color.description": "The line color of the placed web rendering.", + + "module.auto-eat": "Auto Eat", + "module.auto-eat.description": "Automatically eats food.", + "module.auto-eat.general.blacklist": "Blacklist", + "module.auto-eat.general.blacklist.description": "Which items to not eat.", + "module.auto-eat.general.pause-auras": "Pause Auras", + "module.auto-eat.general.pause-auras.description": "Pauses all auras when eating.", + "module.auto-eat.general.pause-baritone": "Pause Baritone", + "module.auto-eat.general.pause-baritone.description": "Pause baritone when eating.", + "module.auto-eat.threshold.threshold-mode": "Threshold Mode", + "module.auto-eat.threshold.threshold-mode.description": "The threshold mode to trigger auto eat.", + "module.auto-eat.threshold.health-threshold": "Health Threshold", + "module.auto-eat.threshold.health-threshold.description": "The level of health you eat at.", + "module.auto-eat.threshold.hunger-threshold": "Hunger Threshold", + "module.auto-eat.threshold.hunger-threshold.description": "The level of hunger you eat at.", + + "module.hitboxes": "Hitboxes", + "module.hitboxes.description": "Expands an entity's hitboxes.", + "module.hitboxes.general.entities": "Entities", + "module.hitboxes.general.entities.description": "Which entities to target.", + "module.hitboxes.general.expand": "Expand", + "module.hitboxes.general.expand.description": "How much to expand the hitbox of the entity.", + "module.hitboxes.general.ignore-friends": "Ignore Friends", + "module.hitboxes.general.ignore-friends.description": "Doesn't expand the hitboxes of friends.", + "module.hitboxes.weapon-options.only-on-weapon": "Only On Weapon", + "module.hitboxes.weapon-options.only-on-weapon.description": "Only modifies hitbox when holding a weapon in hand.", + "module.hitboxes.weapon-options.sword": "Sword", + "module.hitboxes.weapon-options.sword.description": "Enable when holding a sword.", + "module.hitboxes.weapon-options.axe": "Axe", + "module.hitboxes.weapon-options.axe.description": "Enable when holding an axe.", + "module.hitboxes.weapon-options.pickaxe": "Pickaxe", + "module.hitboxes.weapon-options.pickaxe.description": "Enable when holding a pickaxe.", + "module.hitboxes.weapon-options.shovel": "Shovel", + "module.hitboxes.weapon-options.shovel.description": "Enable when holding a shovel.", + "module.hitboxes.weapon-options.hoe": "Hoe", + "module.hitboxes.weapon-options.hoe.description": "Enable when holding a hoe.", + "module.hitboxes.weapon-options.mace": "Mace", + "module.hitboxes.weapon-options.mace.description": "Enable when holding a mace.", + "module.hitboxes.weapon-options.spear": "Spear", + "module.hitboxes.weapon-options.spear.description": "Enable when holding a spear.", + "module.hitboxes.weapon-options.trident": "Trident", + "module.hitboxes.weapon-options.trident.description": "Enable when holding a trident.", + + "module.trail": "Trail", + "module.trail.description": "Renders a customizable trail behind your player.", + "module.trail.general.particles": "Particles", + "module.trail.general.particles.description": "Particles to draw.", + "module.trail.general.pause-when-stationary": "Pause When Stationary", + "module.trail.general.pause-when-stationary.description": "Whether or not to add particles when you are not moving.", + + "module.self-web": "Self Web", + "module.self-web.description": "Automatically places webs on you.", + "module.self-web.general.mode": "Mode", + "module.self-web.general.mode.description": "The mode to use for selfweb.", + "module.self-web.general.range": "Range", + "module.self-web.general.range.description": "How far away the player has to be from you to place webs. Requires Mode to Smart.", + "module.self-web.general.double-place": "Double Place", + "module.self-web.general.double-place.description": "Places webs in your upper hitbox as well.", + "module.self-web.general.auto-toggle": "Auto Toggle", + "module.self-web.general.auto-toggle.description": "Toggles off after placing the webs.", + "module.self-web.general.rotate": "Rotate", + "module.self-web.general.rotate.description": "Forces you to rotate downwards when placing webs.", + + "module.flight": "Flight", + "module.flight.description": "FLYYYY! No Fall is recommended with this module.", + "module.flight.general.mode": "Mode", + "module.flight.general.mode.description": "The mode for Flight.", + "module.flight.general.speed": "Speed", + "module.flight.general.speed.description": "Your speed when flying.", + "module.flight.general.vertical-speed-match": "Vertical Speed Match", + "module.flight.general.vertical-speed-match.description": "Matches your vertical speed to your horizontal speed, otherwise uses vanilla ratio.", + "module.flight.general.no-sneak": "No Sneak", + "module.flight.general.no-sneak.description": "Prevents you from sneaking while flying.", + "module.flight.anti-kick.mode": "Mode", + "module.flight.anti-kick.mode.description": "The mode for anti kick.", + "module.flight.anti-kick.delay": "Delay", + "module.flight.anti-kick.delay.description": "The amount of delay, in ticks, between flying down a bit and return to original position", + "module.flight.anti-kick.off-time": "Off Time", + "module.flight.anti-kick.off-time.description": "The amount of delay, in ticks, to fly down a bit to reset floating ticks.", + + "module.reverse-step": "Reverse Step", + "module.reverse-step.description": "Allows you to fall down blocks at a greater speed.", + "module.reverse-step.general.fall-speed": "Fall Speed", + "module.reverse-step.general.fall-speed.description": "How fast to fall in blocks per second.", + "module.reverse-step.general.fall-distance": "Fall Distance", + "module.reverse-step.general.fall-distance.description": "The maximum fall distance this setting will activate at.", + "module.reverse-step.general.vehicles": "Vehicles", + "module.reverse-step.general.vehicles.description": "Whether or not reverse step should affect vehicles.", + + "module.blur": "Blur", + "module.blur.description": "Blurs background when in GUI screens.", + "module.blur.general.strength": "Strength", + "module.blur.general.strength.description": "How strong the blur should be.", + "module.blur.general.fade-time": "Fade Time", + "module.blur.general.fade-time.description": "How long the fade will last in milliseconds.", + "module.blur.screens.meteor": "Meteor", + "module.blur.screens.meteor.description": "Applies blur to Meteor screens.", + "module.blur.screens.inventories": "Inventories", + "module.blur.screens.inventories.description": "Applies blur to inventory screens.", + "module.blur.screens.chat": "Chat", + "module.blur.screens.chat.description": "Applies blur when in chat.", + "module.blur.screens.other": "Other", + "module.blur.screens.other.description": "Applies blur to all other screen types.", + + "module.discord-presence": "Discord Presence", + "module.discord-presence.description": "Displays Meteor as your presence on Discord.", + "module.discord-presence.line-1.line-1-messages": "Line 1 Messages", + "module.discord-presence.line-1.line-1-messages.description": "Messages used for the first line.", + "module.discord-presence.line-1.line-1-update-delay": "Line 1 Update Delay", + "module.discord-presence.line-1.line-1-update-delay.description": "How fast to update the first line in ticks.", + "module.discord-presence.line-1.line-1-select-mode": "Line 1 Select Mode", + "module.discord-presence.line-1.line-1-select-mode.description": "How to select messages for the first line.", + "module.discord-presence.line-2.line-2-messages": "Line 2 Messages", + "module.discord-presence.line-2.line-2-messages.description": "Messages used for the second line.", + "module.discord-presence.line-2.line-2-update-delay": "Line 2 Update Delay", + "module.discord-presence.line-2.line-2-update-delay.description": "How fast to update the second line in ticks.", + "module.discord-presence.line-2.line-2-select-mode": "Line 2 Select Mode", + "module.discord-presence.line-2.line-2-select-mode.description": "How to select messages for the second line.", + + "module.void-esp": "Void Esp", + "module.void-esp.description": "Renders holes in bedrock layers that lead to the void.", + "module.void-esp.general.air-only": "Air Only", + "module.void-esp.general.air-only.description": "Checks bedrock only for air blocks.", + "module.void-esp.general.horizontal-radius": "Horizontal Radius", + "module.void-esp.general.horizontal-radius.description": "Horizontal radius in which to search for holes.", + "module.void-esp.general.hole-height": "Hole Height", + "module.void-esp.general.hole-height.description": "The minimum hole height to be rendered.", + "module.void-esp.general.nether-roof": "Nether Roof", + "module.void-esp.general.nether-roof.description": "Check for holes in nether roof.", + "module.void-esp.render.shape-mode": "Shape Mode", + "module.void-esp.render.shape-mode.description": "How the shapes are rendered.", + "module.void-esp.render.fill-color": "Fill Color", + "module.void-esp.render.fill-color.description": "The color that fills holes in the void.", + "module.void-esp.render.line-color": "Line Color", + "module.void-esp.render.line-color.description": "The color to draw lines of holes to the void.", + + "module.reach": "Reach", + "module.reach.description": "Gives you super long arms.", + "module.reach.general.extra-block-reach": "Extra Block Reach", + "module.reach.general.extra-block-reach.description": "The distance to add to your block reach.", + "module.reach.general.extra-entity-reach": "Extra Entity Reach", + "module.reach.general.extra-entity-reach.description": "The distance to add to your entity reach.", + + "module.speed-mine": "Speed Mine", + "module.speed-mine.description": "Allows you to quickly mine blocks.", + "module.speed-mine.general.mode": "Mode", + + "module.speed-mine.general.blocks": "Blocks", + "module.speed-mine.general.blocks.description": "Selected blocks.", + "module.speed-mine.general.blocks-filter": "Blocks Filter", + "module.speed-mine.general.blocks-filter.description": "How to use the blocks setting.", + "module.speed-mine.general.modifier": "Modifier", + "module.speed-mine.general.modifier.description": "Mining speed modifier. An additional value of 0.2 is equivalent to one haste level (1.2 = haste 1).", + "module.speed-mine.general.haste-amplifier": "Haste Amplifier", + "module.speed-mine.general.haste-amplifier.description": "What value of haste to give you. Above 2 not recommended.", + "module.speed-mine.general.instamine": "Instamine", + "module.speed-mine.general.instamine.description": "Whether or not to instantly mine blocks under certain conditions.", + "module.speed-mine.general.grim-bypass": "Grim Bypass", + "module.speed-mine.general.grim-bypass.description": "Bypasses Grim's fastbreak check, working as of 2.3.58", + + "module.inventory-tweaks": "Inventory Tweaks", + "module.inventory-tweaks.description": "Various inventory related utilities.", + "module.inventory-tweaks.general.mouse-drag-item-move": "Mouse Drag Item Move", + "module.inventory-tweaks.general.mouse-drag-item-move.description": "Moving mouse over items while holding shift will transfer it to the other container.", + "module.inventory-tweaks.general.xcarry": "Xcarry", + "module.inventory-tweaks.general.xcarry.description": "Allows you to store four extra item stacks in your crafting grid.", + "module.inventory-tweaks.general.uncap-bundle-scrolling": "Uncap Bundle Scrolling", + "module.inventory-tweaks.general.uncap-bundle-scrolling.description": "Whether to uncap the bundle scrolling feature to let you select any item.", + "module.inventory-tweaks.sorting.sorting-enabled": "Sorting Enabled", + "module.inventory-tweaks.sorting.sorting-enabled.description": "Automatically sorts stacks in inventory.", + "module.inventory-tweaks.sorting.sorting-key": "Sorting Key", + "module.inventory-tweaks.sorting.sorting-key.description": "Key to trigger the sort.", + "module.inventory-tweaks.sorting.sorting-delay": "Sorting Delay", + "module.inventory-tweaks.sorting.sorting-delay.description": "Delay in ticks between moving items when sorting.", + "module.inventory-tweaks.sorting.disable-in-creative": "Disable In Creative", + "module.inventory-tweaks.sorting.disable-in-creative.description": "Disables the inventory sorter when in creative mode.", + "module.inventory-tweaks.anti-drop.anti-drop-items": "Anti Drop Items", + "module.inventory-tweaks.anti-drop.anti-drop-items.description": "Items to prevent dropping. Doesn't work in creative inventory screen.", + "module.inventory-tweaks.anti-drop.item-frames": "Item Frames", + "module.inventory-tweaks.anti-drop.item-frames.description": "Prevent anti-drop items from being placed in item frames or pots", + "module.inventory-tweaks.anti-drop.override-bind": "Override Bind", + "module.inventory-tweaks.anti-drop.override-bind.description": "Hold this bind to temporarily bypass anti-drop", + "module.inventory-tweaks.auto-drop.auto-drop-items": "Auto Drop Items", + "module.inventory-tweaks.auto-drop.auto-drop-items.description": "Items to drop.", + "module.inventory-tweaks.auto-drop.exclude-equipped": "Exclude Equipped", + "module.inventory-tweaks.auto-drop.exclude-equipped.description": "Whether or not to drop items equipped in armor slots.", + "module.inventory-tweaks.auto-drop.exclude-hotbar": "Exclude Hotbar", + "module.inventory-tweaks.auto-drop.exclude-hotbar.description": "Whether or not to drop items from your hotbar.", + "module.inventory-tweaks.auto-drop.only-full-stacks": "Only Full Stacks", + "module.inventory-tweaks.auto-drop.only-full-stacks.description": "Only drops the items if the stack is full.", + "module.inventory-tweaks.steal-and-dump.steal-screens": "Steal Screens", + "module.inventory-tweaks.steal-and-dump.steal-screens.description": "Select the screens to display buttons and auto steal.", + "module.inventory-tweaks.steal-and-dump.inventory-buttons": "Inventory Buttons", + "module.inventory-tweaks.steal-and-dump.inventory-buttons.description": "Shows steal and dump buttons in container guis.", + "module.inventory-tweaks.steal-and-dump.steal-drop": "Steal Drop", + "module.inventory-tweaks.steal-and-dump.steal-drop.description": "Drop items to the ground instead of stealing them.", + "module.inventory-tweaks.steal-and-dump.drop-backwards": "Drop Backwards", + "module.inventory-tweaks.steal-and-dump.drop-backwards.description": "Drop items behind you.", + "module.inventory-tweaks.steal-and-dump.dump-filter": "Dump Filter", + "module.inventory-tweaks.steal-and-dump.dump-filter.description": "Dump mode.", + "module.inventory-tweaks.steal-and-dump.dump-items": "Dump Items", + "module.inventory-tweaks.steal-and-dump.dump-items.description": "Items to dump.", + "module.inventory-tweaks.steal-and-dump.steal-filter": "Steal Filter", + "module.inventory-tweaks.steal-and-dump.steal-filter.description": "Steal mode.", + "module.inventory-tweaks.steal-and-dump.steal-items": "Steal Items", + "module.inventory-tweaks.steal-and-dump.steal-items.description": "Items to steal.", + "module.inventory-tweaks.auto-steal.auto-steal": "Auto Steal", + "module.inventory-tweaks.auto-steal.auto-steal.description": "Automatically removes all possible items when you open a container.", + "module.inventory-tweaks.auto-steal.auto-dump": "Auto Dump", + "module.inventory-tweaks.auto-steal.auto-dump.description": "Automatically dumps all possible items when you open a container.", + "module.inventory-tweaks.auto-steal.delay": "Delay", + "module.inventory-tweaks.auto-steal.delay.description": "The minimum delay between stealing the next stack in milliseconds.", + "module.inventory-tweaks.auto-steal.initial-delay": "Initial Delay", + "module.inventory-tweaks.auto-steal.initial-delay.description": "The initial delay before stealing in milliseconds. 0 to use normal delay instead.", + "module.inventory-tweaks.auto-steal.random": "Random", + "module.inventory-tweaks.auto-steal.random.description": "Randomly adds a delay of up to the specified time in milliseconds.", + + "module.no-fall": "No Fall", + "module.no-fall.description": "Attempts to prevent you from taking fall damage.", + "module.no-fall.general.mode": "Mode", + "module.no-fall.general.mode.description": "The way you are saved from fall damage.", + "module.no-fall.general.placed-item": "Placed Item", + "module.no-fall.general.placed-item.description": "Which block to place.", + "module.no-fall.general.air-place-mode": "Air Place Mode", + "module.no-fall.general.air-place-mode.description": "Whether place mode places before you die or before you take damage.", + "module.no-fall.general.anchor": "Anchor", + "module.no-fall.general.anchor.description": "Centers the player and reduces movement when using bucket or air place mode.", + "module.no-fall.general.anti-bounce": "Anti Bounce", + "module.no-fall.general.anti-bounce.description": "Disables bouncing on slime-block and bed upon landing.", + "module.no-fall.general.pause-on-mace": "Pause On Mace", + "module.no-fall.general.pause-on-mace.description": "Pauses NoFall when using a mace.", + + "module.no-interact": "No Interact", + "module.no-interact.description": "Blocks interactions with certain types of inputs.", + "module.no-interact.blocks.block-mine": "Block Mine", + "module.no-interact.blocks.block-mine.description": "Cancels block mining.", + "module.no-interact.blocks.block-mine-mode": "Block Mine Mode", + "module.no-interact.blocks.block-mine-mode.description": "List mode to use for block mine.", + "module.no-interact.blocks.block-interact": "Block Interact", + "module.no-interact.blocks.block-interact.description": "Cancels block interaction.", + "module.no-interact.blocks.block-interact-mode": "Block Interact Mode", + "module.no-interact.blocks.block-interact-mode.description": "List mode to use for block interact.", + "module.no-interact.blocks.block-interact-hand": "Block Interact Hand", + "module.no-interact.blocks.block-interact-hand.description": "Cancels block interaction if performed by this hand.", + "module.no-interact.entities.entity-hit": "Entity Hit", + "module.no-interact.entities.entity-hit.description": "Cancel entity hitting.", + "module.no-interact.entities.entity-hit-mode": "Entity Hit Mode", + "module.no-interact.entities.entity-hit-mode.description": "List mode to use for entity hit.", + "module.no-interact.entities.entity-interact": "Entity Interact", + "module.no-interact.entities.entity-interact.description": "Cancel entity interaction.", + "module.no-interact.entities.entity-interact-mode": "Entity Interact Mode", + "module.no-interact.entities.entity-interact-mode.description": "List mode to use for entity interact.", + "module.no-interact.entities.entity-interact-hand": "Entity Interact Hand", + "module.no-interact.entities.entity-interact-hand.description": "Cancels entity interaction if performed by this hand.", + "module.no-interact.entities.friends": "Friends", + "module.no-interact.entities.friends.description": "Friends cancel mode.", + "module.no-interact.entities.babies": "Babies", + "module.no-interact.entities.babies.description": "Baby entity cancel mode.", + "module.no-interact.entities.nametagged": "Nametagged", + "module.no-interact.entities.nametagged.description": "Nametagged entity cancel mode.", + + "module.portals": "Portals", + "module.portals.description": "Allows you to use GUIs normally while in a Nether Portal.", + + "module.marker": "Marker", + "module.marker.description": "Renders shapes. Useful for large scale projects", + + "module.criticals": "Criticals", + "module.criticals.description": "Performs critical attacks when you hit your target.", + "module.criticals.general.mode": "Mode", + "module.criticals.general.mode.description": "The mode on how Criticals will function.", + "module.criticals.general.only-killaura": "Only Killaura", + "module.criticals.general.only-killaura.description": "Only performs crits when using killaura.", + "module.criticals.mace.smash-attack": "Smash Attack", + "module.criticals.mace.smash-attack.description": "Will always perform smash attacks when using a mace.", + "module.criticals.mace.additional-height": "Additional Height", + "module.criticals.mace.additional-height.description": "The amount of additional height to spoof. More height means more damage.", + + "module.tunnel-esp": "Tunnel Esp", + "module.tunnel-esp.description": "Highlights tunnels.", + "module.tunnel-esp.general.height": "Height", + "module.tunnel-esp.general.height.description": "Height of the rendered box.", + "module.tunnel-esp.general.connected": "Connected", + "module.tunnel-esp.general.connected.description": "If neighbouring holes should be connected.", + "module.tunnel-esp.general.shape-mode": "Shape Mode", + "module.tunnel-esp.general.shape-mode.description": "How the shapes are rendered.", + "module.tunnel-esp.general.side-color": "Side Color", + "module.tunnel-esp.general.side-color.description": "The side color.", + "module.tunnel-esp.general.line-color": "Line Color", + "module.tunnel-esp.general.line-color.description": "The line color.", + + "module.auto-smelter": "Auto Smelter", + "module.auto-smelter.description": "Automatically smelts items from your inventory", + "module.auto-smelter.general.fuel-items": "Fuel Items", + "module.auto-smelter.general.fuel-items.description": "Items to use as fuel", + "module.auto-smelter.general.smeltable-items": "Smeltable Items", + "module.auto-smelter.general.smeltable-items.description": "Items to smelt", + "module.auto-smelter.general.disable-when-out-of-items": "Disable When Out Of Items", + "module.auto-smelter.general.disable-when-out-of-items.description": "Disable the module when you run out of items", + + "module.anchor-aura": "Anchor Aura", + "module.anchor-aura.description": "Automatically places and breaks Respawn Anchors to harm entities.", + "module.anchor-aura.general.target-range": "Target Range", + "module.anchor-aura.general.target-range.description": "Range in which to target players.", + "module.anchor-aura.general.target-priority": "Target Priority", + "module.anchor-aura.general.target-priority.description": "How to select the player to target.", + "module.anchor-aura.general.min-damage": "Min Damage", + "module.anchor-aura.general.min-damage.description": "The minimum damage to inflict on your target.", + "module.anchor-aura.general.max-self-damage": "Max Self Damage", + "module.anchor-aura.general.max-self-damage.description": "The maximum damage to inflict on yourself.", + "module.anchor-aura.general.anti-suicide": "Anti Suicide", + "module.anchor-aura.general.anti-suicide.description": "Will not place and break anchors if they will kill you.", + "module.anchor-aura.general.swap-back": "Swap Back", + "module.anchor-aura.general.swap-back.description": "Switches to your previous slot after using anchors.", + "module.anchor-aura.general.rotate": "Rotate", + "module.anchor-aura.general.rotate.description": "Rotates server-side towards the anchors being placed/broken.", + "module.anchor-aura.place.place": "Place", + "module.anchor-aura.place.place.description": "Allows Anchor Aura to place anchors.", + "module.anchor-aura.place.place-delay": "Place Delay", + "module.anchor-aura.place.place-delay.description": "The tick delay between placing anchors.", + "module.anchor-aura.place.place-range": "Place Range", + "module.anchor-aura.place.place-range.description": "The range at which anchors can be placed.", + "module.anchor-aura.place.walls-range": "Walls Range", + "module.anchor-aura.place.walls-range.description": "Range in which to place anchors when behind blocks.", + "module.anchor-aura.place.air-place": "Air Place", + "module.anchor-aura.place.air-place.description": "Allows Anchor Aura to place anchors in the air.", + "module.anchor-aura.break.charge-delay": "Charge Delay", + "module.anchor-aura.break.charge-delay.description": "The tick delay it takes to charge anchors.", + "module.anchor-aura.break.break-delay": "Break Delay", + "module.anchor-aura.break.break-delay.description": "The tick delay it takes to break anchors.", + "module.anchor-aura.break.break-range": "Break Range", + "module.anchor-aura.break.break-range.description": "Range in which to break anchors.", + "module.anchor-aura.break.walls-range": "Walls Range", + "module.anchor-aura.break.walls-range.description": "Range in which to break anchors when behind blocks.", + "module.anchor-aura.pause.pause-on-use": "Pause On Use", + "module.anchor-aura.pause.pause-on-use.description": "Pauses while using an item.", + "module.anchor-aura.pause.pause-on-mine": "Pause On Mine", + "module.anchor-aura.pause.pause-on-mine.description": "Pauses while mining blocks.", + "module.anchor-aura.pause.pause-on-CA": "Pause On CA", + "module.anchor-aura.pause.pause-on-CA.description": "Pauses while Crystal Aura is placing.", + "module.anchor-aura.render.swing": "Swing", + "module.anchor-aura.render.swing.description": "Whether to swing your hand client-side.", + "module.anchor-aura.render.render": "Render", + "module.anchor-aura.render.render.description": "Renders the block where it is placing an anchor.", + "module.anchor-aura.render.shape-mode": "Shape Mode", + "module.anchor-aura.render.shape-mode.description": "How the shapes are rendered.", + "module.anchor-aura.render.side-color": "Side Color", + "module.anchor-aura.render.side-color.description": "The side color for positions to be placed.", + "module.anchor-aura.render.line-color": "Line Color", + "module.anchor-aura.render.line-color.description": "The line color for positions to be placed.", + + "module.anti-void": "Anti Void", + "module.anti-void.description": "Attempts to prevent you from falling into the void.", + "module.anti-void.general.mode": "Mode", + "module.anti-void.general.mode.description": "The method to prevent you from falling into the void.", + + "module.kill-aura": "Kill Aura", + "module.kill-aura.description": "Attacks specified entities around you.", + "module.kill-aura.general.attack-when-holding": "Attack When Holding", + "module.kill-aura.general.attack-when-holding.description": "Only attacks an entity when a specified item is in your hand.", + "module.kill-aura.general.selected-weapon-types": "Selected Weapon Types", + "module.kill-aura.general.selected-weapon-types.description": "Which types of weapons to attack with (if you select the diamond sword, any type of sword may be used to attack).", + "module.kill-aura.general.rotate": "Rotate", + "module.kill-aura.general.rotate.description": "Determines when you should rotate towards the target.", + "module.kill-aura.general.auto-switch": "Auto Switch", + "module.kill-aura.general.auto-switch.description": "Switches to an acceptable weapon when attacking the target.", + "module.kill-aura.general.swap-back": "Swap Back", + "module.kill-aura.general.swap-back.description": "Switches to your previous slot when done attacking the target.", + "module.kill-aura.general.shield-mode": "Shield Mode", + "module.kill-aura.general.shield-mode.description": "Will try and use an axe to break target shields.", + "module.kill-aura.general.only-on-click": "Only On Click", + "module.kill-aura.general.only-on-click.description": "Only attacks when holding left click.", + "module.kill-aura.general.only-on-look": "Only On Look", + "module.kill-aura.general.only-on-look.description": "Only attacks when looking at an entity.", + "module.kill-aura.general.pause-baritone": "Pause Baritone", + "module.kill-aura.general.pause-baritone.description": "Freezes Baritone temporarily until you are finished attacking the entity.", + "module.kill-aura.targeting.entities": "Entities", + "module.kill-aura.targeting.entities.description": "Entities to attack.", + "module.kill-aura.targeting.priority": "Priority", + "module.kill-aura.targeting.priority.description": "How to filter targets within range.", + "module.kill-aura.targeting.max-targets": "Max Targets", + "module.kill-aura.targeting.max-targets.description": "How many entities to target at once.", + "module.kill-aura.targeting.range": "Range", + "module.kill-aura.targeting.range.description": "The maximum range the entity can be to attack it.", + "module.kill-aura.targeting.walls-range": "Walls Range", + "module.kill-aura.targeting.walls-range.description": "The maximum range the entity can be attacked through walls.", + "module.kill-aura.targeting.mob-age-filter": "Mob Age Filter", + "module.kill-aura.targeting.mob-age-filter.description": "Determines the age of the mobs to target (baby, adult, or both).", + "module.kill-aura.targeting.ignore-named": "Ignore Named", + "module.kill-aura.targeting.ignore-named.description": "Whether or not to attack mobs with a name.", + "module.kill-aura.targeting.ignore-passive": "Ignore Passive", + "module.kill-aura.targeting.ignore-passive.description": "Will only attack sometimes passive mobs if they are targeting you.", + "module.kill-aura.targeting.ignore-tamed": "Ignore Tamed", + "module.kill-aura.targeting.ignore-tamed.description": "Will avoid attacking mobs you tamed.", + "module.kill-aura.timing.pause-on-lag": "Pause On Lag", + "module.kill-aura.timing.pause-on-lag.description": "Pauses if the server is lagging.", + "module.kill-aura.timing.pause-on-use": "Pause On Use", + "module.kill-aura.timing.pause-on-use.description": "Does not attack while using an item.", + "module.kill-aura.timing.pause-on-CA": "Pause On CA", + "module.kill-aura.timing.pause-on-CA.description": "Does not attack while CA is placing.", + "module.kill-aura.timing.TPS-sync": "TPS Sync", + "module.kill-aura.timing.TPS-sync.description": "Tries to sync attack delay with the server's TPS.", + "module.kill-aura.timing.custom-delay": "Custom Delay", + "module.kill-aura.timing.custom-delay.description": "Use a custom delay instead of the vanilla cooldown.", + "module.kill-aura.timing.hit-delay": "Hit Delay", + "module.kill-aura.timing.hit-delay.description": "How fast you hit the entity in ticks.", + "module.kill-aura.timing.switch-delay": "Switch Delay", + "module.kill-aura.timing.switch-delay.description": "How many ticks to wait before hitting an entity after switching hotbar slots.", + + "module.parkour": "Parkour", + "module.parkour.description": "Automatically jumps at the edges of blocks.", + "module.parkour.general.edge-distance": "Edge Distance", + "module.parkour.general.edge-distance.description": "How far from the edge should you jump.", + + "module.spam": "Spam", + "module.spam.description": "Spams specified messages in chat.", + "module.spam.general.messages": "Messages", + "module.spam.general.messages.description": "Messages to use for spam.", + "module.spam.general.delay": "Delay", + "module.spam.general.delay.description": "The delay between specified messages in ticks.", + "module.spam.general.disable-on-leave": "Disable On Leave", + "module.spam.general.disable-on-leave.description": "Disables spam when you leave a server.", + "module.spam.general.disable-on-disconnect": "Disable On Disconnect", + "module.spam.general.disable-on-disconnect.description": "Disables spam when you are disconnected from a server.", + "module.spam.general.randomise": "Randomise", + "module.spam.general.randomise.description": "Selects a random message from your spam message list.", + "module.spam.general.auto-split-messages": "Auto Split Messages", + "module.spam.general.auto-split-messages.description": "Automatically split up large messages after a certain length", + "module.spam.general.split-length": "Split Length", + "module.spam.general.split-length.description": "The length after which to split messages in chat", + "module.spam.general.split-delay": "Split Delay", + "module.spam.general.split-delay.description": "The delay between split messages in ticks.", + "module.spam.general.bypass": "Bypass", + "module.spam.general.bypass.description": "Add random text at the end of the message to try to bypass anti spams.", + "module.spam.general.include-uppercase-characters": "Include Uppercase Characters", + "module.spam.general.include-uppercase-characters.description": "Whether the bypass text should include uppercase characters.", + "module.spam.general.length": "Length", + "module.spam.general.length.description": "Number of characters used to bypass anti spam.", + + "module.collisions": "Collisions", + "module.collisions.description": "Adds collision boxes to certain blocks/areas.", + "module.collisions.general.blocks": "Blocks", + "module.collisions.general.blocks.description": "What blocks should be added collision box.", + "module.collisions.general.magma": "Magma", + "module.collisions.general.magma.description": "Prevents you from walking over magma blocks.", + "module.collisions.general.unloaded-chunks": "Unloaded Chunks", + "module.collisions.general.unloaded-chunks.description": "Stops you from going into unloaded chunks.", + "module.collisions.general.ignore-border": "Ignore Border", + "module.collisions.general.ignore-border.description": "Removes world border collision.", + + "module.click-tp": "Click Tp", + "module.click-tp.description": "Teleports you to the block you click on.", + + "module.packet-canceller": "Packet Canceller", + "module.packet-canceller.description": "Allows you to cancel certain packets.", + "module.packet-canceller.general.S2C-packets": "S2C Packets", + "module.packet-canceller.general.S2C-packets.description": "Server-to-client packets to cancel.", + "module.packet-canceller.general.C2S-packets": "C2S Packets", + "module.packet-canceller.general.C2S-packets.description": "Client-to-server packets to cancel.", + + "module.tracers": "Tracers", + "module.tracers.description": "Displays tracer lines to specified entities.", + "module.tracers.general.entities": "Entities", + "module.tracers.general.entities.description": "Select specific entities.", + "module.tracers.general.ignore-self": "Ignore Self", + "module.tracers.general.ignore-self.description": "Doesn't draw tracers to yourself when in third person or freecam.", + "module.tracers.general.ignore-friends": "Ignore Friends", + "module.tracers.general.ignore-friends.description": "Doesn't draw tracers to friends.", + "module.tracers.general.show-invisible": "Show Invisible", + "module.tracers.general.show-invisible.description": "Shows invisible entities.", + "module.tracers.appearance.style": "Style", + "module.tracers.appearance.style.description": "What display mode should be used", + "module.tracers.appearance.target": "Target", + "module.tracers.appearance.target.description": "What part of the entity to target.", + "module.tracers.appearance.stem": "Stem", + "module.tracers.appearance.stem.description": "Draw a line through the center of the tracer target.", + "module.tracers.appearance.max-distance": "Max Distance", + "module.tracers.appearance.max-distance.description": "Maximum distance for tracers to show.", + "module.tracers.appearance.distance-offscreen": "Distance Offscreen", + "module.tracers.appearance.distance-offscreen.description": "Offscreen's distance from center.", + "module.tracers.appearance.size-offscreen": "Size Offscreen", + "module.tracers.appearance.size-offscreen.description": "Offscreen's size.", + "module.tracers.appearance.blink-offscreen": "Blink Offscreen", + "module.tracers.appearance.blink-offscreen.description": "Make offscreen Blink.", + "module.tracers.appearance.blink-offscreen-speed": "Blink Offscreen Speed", + "module.tracers.appearance.blink-offscreen-speed.description": "Offscreen's blink speed.", + "module.tracers.colors.distance-colors": "Distance Colors", + "module.tracers.colors.distance-colors.description": "Changes the color of tracers depending on distance.", + "module.tracers.colors.show-friend-colors": "Show Friend Colors", + "module.tracers.colors.show-friend-colors.description": "Whether or not to override the distance color of friends with the friend color.", + "module.tracers.colors.players-colors": "Players Colors", + "module.tracers.colors.players-colors.description": "The player's color.", + "module.tracers.colors.animals-color": "Animals Color", + "module.tracers.colors.animals-color.description": "The animal's color.", + "module.tracers.colors.water-animals-color": "Water Animals Color", + "module.tracers.colors.water-animals-color.description": "The water animal's color.", + "module.tracers.colors.monsters-color": "Monsters Color", + "module.tracers.colors.monsters-color.description": "The monster's color.", + "module.tracers.colors.ambient-color": "Ambient Color", + "module.tracers.colors.ambient-color.description": "The ambient color.", + "module.tracers.colors.misc-color": "Misc Color", + "module.tracers.colors.misc-color.description": "The misc color.", + + "module.auto-exp": "Auto Exp", + "module.auto-exp.description": "Automatically repairs your armor and tools in pvp.", + "module.auto-exp.general.mode": "Mode", + "module.auto-exp.general.mode.description": "Which items to repair.", + "module.auto-exp.general.replenish": "Replenish", + "module.auto-exp.general.replenish.description": "Automatically replenishes exp into a selected hotbar slot.", + "module.auto-exp.general.only-on-ground": "Only On Ground", + "module.auto-exp.general.only-on-ground.description": "Only throw when the player is on the ground.", + "module.auto-exp.general.exp-slot": "Exp Slot", + "module.auto-exp.general.exp-slot.description": "The slot to replenish exp into.", + "module.auto-exp.general.min-threshold": "Min Threshold", + "module.auto-exp.general.min-threshold.description": "The minimum durability percentage that an item needs to fall to, to be repaired.", + "module.auto-exp.general.max-threshold": "Max Threshold", + "module.auto-exp.general.max-threshold.description": "The maximum durability percentage to repair items to.", + + "module.jesus": "Jesus", + "module.jesus.description": "Walk on liquids and powder snow like Jesus.", + "module.jesus.general.powder-snow": "Powder Snow", + "module.jesus.general.powder-snow.description": "Walk on powder snow.", + "module.jesus.water.mode": "Mode", + "module.jesus.water.mode.description": "How to treat the water.", + "module.jesus.water.dip-if-burning": "Dip If Burning", + "module.jesus.water.dip-if-burning.description": "Lets you go into the water when you are burning.", + "module.jesus.water.dip-on-sneak": "Dip On Sneak", + "module.jesus.water.dip-on-sneak.description": "Lets you go into the water when your sneak key is held.", + "module.jesus.water.dip-on-fall": "Dip On Fall", + "module.jesus.water.dip-on-fall.description": "Lets you go into the water when you fall over a certain height.", + "module.jesus.water.dip-fall-height": "Dip Fall Height", + "module.jesus.water.dip-fall-height.description": "The fall height at which you will go into the water.", + "module.jesus.lava.mode": "Mode", + "module.jesus.lava.mode.description": "How to treat the lava.", + "module.jesus.lava.dip-if-resistant": "Dip If Resistant", + "module.jesus.lava.dip-if-resistant.description": "Lets you go into the lava if you have Fire Resistance effect.", + "module.jesus.lava.dip-on-sneak": "Dip On Sneak", + "module.jesus.lava.dip-on-sneak.description": "Lets you go into the lava when your sneak key is held.", + "module.jesus.lava.dip-on-fall": "Dip On Fall", + "module.jesus.lava.dip-on-fall.description": "Lets you go into the lava when you fall over a certain height.", + "module.jesus.lava.dip-fall-height": "Dip Fall Height", + "module.jesus.lava.dip-fall-height.description": "The fall height at which you will go into the lava.", + + "module.no-mining-trace": "No Mining Trace", + "module.no-mining-trace.description": "Allows you to mine blocks through entities.", + "module.no-mining-trace.general.blacklisted-entities": "Blacklisted Entities", + "module.no-mining-trace.general.blacklisted-entities.description": "Entities you will interact with as normal.", + "module.no-mining-trace.general.only-when-holding-a-pickaxe": "Only When Holding A Pickaxe", + "module.no-mining-trace.general.only-when-holding-a-pickaxe.description": "Whether or not to work only when holding a pickaxe.", + + "module.bow-aimbot": "Bow Aimbot", + "module.bow-aimbot.description": "Automatically aims your bow for you.", + "module.bow-aimbot.general.range": "Range", + "module.bow-aimbot.general.range.description": "The maximum range the entity can be to aim at it.", + "module.bow-aimbot.general.entities": "Entities", + "module.bow-aimbot.general.entities.description": "Entities to attack.", + "module.bow-aimbot.general.priority": "Priority", + "module.bow-aimbot.general.priority.description": "What type of entities to target.", + "module.bow-aimbot.general.babies": "Babies", + "module.bow-aimbot.general.babies.description": "Whether or not to attack baby variants of the entity.", + "module.bow-aimbot.general.nametagged": "Nametagged", + "module.bow-aimbot.general.nametagged.description": "Whether or not to attack mobs with a name tag.", + "module.bow-aimbot.general.pause-on-combat": "Pause On Combat", + "module.bow-aimbot.general.pause-on-combat.description": "Freezes Baritone temporarily until you released the bow." } diff --git a/src/main/resources/assets/meteor-client/language/en_us.json b/src/main/resources/assets/meteor-client/language/en_us.json index 3119a16048..718c010de5 100644 --- a/src/main/resources/assets/meteor-client/language/en_us.json +++ b/src/main/resources/assets/meteor-client/language/en_us.json @@ -1,4 +1,6 @@ { + "meteor.lang.translators" : "MeteorDevelopment", + "meteor.key.category": "Meteor Client", "meteor.key.open-commands": "Open Commands", "meteor.key.open-gui": "Open GUI", From e028a5b7708168839319f6bafcb547ebf816a20e Mon Sep 17 00:00:00 2001 From: Wide_Cat Date: Wed, 7 Jan 2026 23:56:59 +0000 Subject: [PATCH 46/52] add the remaining missing strings to the language file TODO BaritoneSettings --- .../meteorclient/gui/GuiTheme.java | 3 +- .../gui/themes/meteor/MeteorGuiTheme.java | 87 ++- .../pathing/BaritoneSettings.java | 21 +- .../meteorclient/systems/config/Config.java | 25 +- .../meteorclient/systems/hud/Hud.java | 10 +- .../hud/elements/ActiveModulesHud.java | 23 +- .../systems/hud/elements/ArmorHud.java | 16 +- .../systems/hud/elements/CombatHud.java | 30 +- .../systems/hud/elements/CompassHud.java | 15 +- .../systems/hud/elements/HoleHud.java | 9 +- .../systems/hud/elements/InventoryHud.java | 9 +- .../systems/hud/elements/ItemHud.java | 10 +- .../systems/hud/elements/LagNotifierHud.java | 13 +- .../systems/hud/elements/MapHud.java | 8 +- .../systems/hud/elements/ModuleInfosHud.java | 7 - .../systems/hud/elements/PlayerModelHud.java | 13 +- .../systems/hud/elements/PlayerRadarHud.java | 16 +- .../systems/hud/elements/PotionTimersHud.java | 19 +- .../systems/hud/elements/TextHud.java | 16 +- .../systems/hud/screens/HudElementScreen.java | 5 +- .../meteorclient/systems/macros/Macro.java | 3 - .../render/blockesp/ESPBlockDataScreen.java | 7 +- .../modules/render/marker/BaseMarker.java | 10 +- .../modules/render/marker/CuboidMarker.java | 8 +- .../systems/modules/render/marker/Marker.java | 2 +- .../modules/render/marker/Sphere2dMarker.java | 18 +- .../systems/profiles/Profile.java | 8 +- .../meteorclient/systems/proxies/Proxies.java | 11 +- .../meteorclient/systems/proxies/Proxy.java | 9 +- .../systems/waypoints/Waypoint.java | 15 +- .../assets/meteor-client/language/en_gb.json | 584 ++++++++++++++++- .../assets/meteor-client/language/en_us.json | 590 +++++++++++++++++- 32 files changed, 1284 insertions(+), 336 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/gui/GuiTheme.java b/src/main/java/meteordevelopment/meteorclient/gui/GuiTheme.java index 2fa795c3c6..6481d0e6ee 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/GuiTheme.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/GuiTheme.java @@ -34,6 +34,7 @@ import net.minecraft.util.math.BlockPos; import java.util.HashMap; +import java.util.Locale; import java.util.Map; public abstract class GuiTheme implements ISerializable { @@ -50,7 +51,7 @@ public abstract class GuiTheme implements ISerializable { public GuiTheme(String name) { this.name = name; - this.settings = new Settings("theme." + name); + this.settings = new Settings("theme." + name.toLowerCase(Locale.ROOT)); } public void beforeRender() { diff --git a/src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/MeteorGuiTheme.java b/src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/MeteorGuiTheme.java index a2b5ffe06b..86b1819ed9 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/MeteorGuiTheme.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/MeteorGuiTheme.java @@ -36,20 +36,19 @@ public class MeteorGuiTheme extends GuiTheme { private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgColors = settings.createGroup("Colors"); - private final SettingGroup sgTextColors = settings.createGroup("Text"); - private final SettingGroup sgBackgroundColors = settings.createGroup("Background"); - private final SettingGroup sgOutline = settings.createGroup("Outline"); - private final SettingGroup sgSeparator = settings.createGroup("Separator"); - private final SettingGroup sgScrollbar = settings.createGroup("Scrollbar"); - private final SettingGroup sgSlider = settings.createGroup("Slider"); - private final SettingGroup sgStarscript = settings.createGroup("Starscript"); + private final SettingGroup sgColors = settings.createGroup("colors"); + private final SettingGroup sgTextColors = settings.createGroup("text"); + private final SettingGroup sgBackgroundColors = settings.createGroup("background"); + private final SettingGroup sgOutline = settings.createGroup("outline"); + private final SettingGroup sgSeparator = settings.createGroup("separator"); + private final SettingGroup sgScrollbar = settings.createGroup("scrollbar"); + private final SettingGroup sgSlider = settings.createGroup("slider"); + private final SettingGroup sgStarscript = settings.createGroup("starscript"); // General public final Setting scale = sgGeneral.add(new DoubleSetting.Builder() .name("scale") - .description("Scale of the GUI.") .defaultValue(1) .min(0.75) .sliderRange(0.75, 4) @@ -62,21 +61,18 @@ public class MeteorGuiTheme extends GuiTheme { public final Setting moduleAlignment = sgGeneral.add(new EnumSetting.Builder() .name("module-alignment") - .description("How module titles are aligned.") .defaultValue(AlignmentX.Center) .build() ); public final Setting categoryIcons = sgGeneral.add(new BoolSetting.Builder() .name("category-icons") - .description("Adds item icons to module categories.") .defaultValue(false) .build() ); public final Setting hideHUD = sgGeneral.add(new BoolSetting.Builder() .name("hide-HUD") - .description("Hide HUD when in GUI.") .defaultValue(false) .onChanged(v -> { if (mc.currentScreen instanceof WidgetScreen) mc.options.hudHidden = v; @@ -86,20 +82,20 @@ public class MeteorGuiTheme extends GuiTheme { // Colors - public final Setting accentColor = color("accent", "Main color of the GUI.", new SettingColor(145, 61, 226)); - public final Setting checkboxColor = color("checkbox", "Color of checkbox.", new SettingColor(145, 61, 226)); - public final Setting plusColor = color("plus", "Color of plus button.", new SettingColor(50, 255, 50)); - public final Setting minusColor = color("minus", "Color of minus button.", new SettingColor(255, 50, 50)); - public final Setting favoriteColor = color("favorite", "Color of checked favorite button.", new SettingColor(250, 215, 0)); + public final Setting accentColor = color("accent", new SettingColor(145, 61, 226)); + public final Setting checkboxColor = color("checkbox", new SettingColor(145, 61, 226)); + public final Setting plusColor = color("plus", new SettingColor(50, 255, 50)); + public final Setting minusColor = color("minus", new SettingColor(255, 50, 50)); + public final Setting favoriteColor = color("favorite", new SettingColor(250, 215, 0)); // Text - public final Setting textColor = color(sgTextColors, "text", "Color of text.", new SettingColor(255, 255, 255)); - public final Setting textSecondaryColor = color(sgTextColors, "text-secondary-text", "Color of secondary text.", new SettingColor(150, 150, 150)); - public final Setting textHighlightColor = color(sgTextColors, "text-highlight", "Color of text highlighting.", new SettingColor(45, 125, 245, 100)); - public final Setting titleTextColor = color(sgTextColors, "title-text", "Color of title text.", new SettingColor(255, 255, 255)); - public final Setting loggedInColor = color(sgTextColors, "logged-in-text", "Color of logged in account name.", new SettingColor(45, 225, 45)); - public final Setting placeholderColor = color(sgTextColors, "placeholder", "Color of placeholder text.", new SettingColor(255, 255, 255, 20)); + public final Setting textColor = color(sgTextColors, "text", new SettingColor(255, 255, 255)); + public final Setting textSecondaryColor = color(sgTextColors, "text-secondary-text", new SettingColor(150, 150, 150)); + public final Setting textHighlightColor = color(sgTextColors, "text-highlight", new SettingColor(45, 125, 245, 100)); + public final Setting titleTextColor = color(sgTextColors, "title-text", new SettingColor(255, 255, 255)); + public final Setting loggedInColor = color(sgTextColors, "logged-in-text", new SettingColor(45, 225, 45)); + public final Setting placeholderColor = color(sgTextColors, "placeholder", new SettingColor(255, 255, 255, 20)); // Background @@ -111,7 +107,7 @@ public class MeteorGuiTheme extends GuiTheme { new SettingColor(40, 40, 40, 200) ); - public final Setting moduleBackground = color(sgBackgroundColors, "module-background", "Color of module background when active.", new SettingColor(50, 50, 50)); + public final Setting moduleBackground = color(sgBackgroundColors, "module-background", new SettingColor(50, 50, 50)); // Outline @@ -125,9 +121,9 @@ public class MeteorGuiTheme extends GuiTheme { // Separator - public final Setting separatorText = color(sgSeparator, "separator-text", "Color of separator text", new SettingColor(255, 255, 255)); - public final Setting separatorCenter = color(sgSeparator, "separator-center", "Center color of separators.", new SettingColor(255, 255, 255)); - public final Setting separatorEdges = color(sgSeparator, "separator-edges", "Color of separator edges.", new SettingColor(225, 225, 225, 150)); + public final Setting separatorText = color(sgSeparator, "separator-text", new SettingColor(255, 255, 255)); + public final Setting separatorCenter = color(sgSeparator, "separator-center", new SettingColor(255, 255, 255)); + public final Setting separatorEdges = color(sgSeparator, "separator-edges", new SettingColor(225, 225, 225, 150)); // Scrollbar @@ -149,21 +145,21 @@ public class MeteorGuiTheme extends GuiTheme { new SettingColor(150, 60, 255) ); - public final Setting sliderLeft = color(sgSlider, "slider-left", "Color of slider left part.", new SettingColor(100,35,170)); - public final Setting sliderRight = color(sgSlider, "slider-right", "Color of slider right part.", new SettingColor(50, 50, 50)); + public final Setting sliderLeft = color(sgSlider, "slider-left", new SettingColor(100,35,170)); + public final Setting sliderRight = color(sgSlider, "slider-right", new SettingColor(50, 50, 50)); // Starscript - private final Setting starscriptText = color(sgStarscript, "starscript-text", "Color of text in Starscript code.", new SettingColor(169, 183, 198)); - private final Setting starscriptBraces = color(sgStarscript, "starscript-braces", "Color of braces in Starscript code.", new SettingColor(150, 150, 150)); - private final Setting starscriptParenthesis = color(sgStarscript, "starscript-parenthesis", "Color of parenthesis in Starscript code.", new SettingColor(169, 183, 198)); - private final Setting starscriptDots = color(sgStarscript, "starscript-dots", "Color of dots in starscript code.", new SettingColor(169, 183, 198)); - private final Setting starscriptCommas = color(sgStarscript, "starscript-commas", "Color of commas in starscript code.", new SettingColor(169, 183, 198)); - private final Setting starscriptOperators = color(sgStarscript, "starscript-operators", "Color of operators in Starscript code.", new SettingColor(169, 183, 198)); - private final Setting starscriptStrings = color(sgStarscript, "starscript-strings", "Color of strings in Starscript code.", new SettingColor(106, 135, 89)); - private final Setting starscriptNumbers = color(sgStarscript, "starscript-numbers", "Color of numbers in Starscript code.", new SettingColor(104, 141, 187)); - private final Setting starscriptKeywords = color(sgStarscript, "starscript-keywords", "Color of keywords in Starscript code.", new SettingColor(204, 120, 50)); - private final Setting starscriptAccessedObjects = color(sgStarscript, "starscript-accessed-objects", "Color of accessed objects (before a dot) in Starscript code.", new SettingColor(152, 118, 170)); + private final Setting starscriptText = color(sgStarscript, "starscript-text", new SettingColor(169, 183, 198)); + private final Setting starscriptBraces = color(sgStarscript, "starscript-braces", new SettingColor(150, 150, 150)); + private final Setting starscriptParenthesis = color(sgStarscript, "starscript-parenthesis", new SettingColor(169, 183, 198)); + private final Setting starscriptDots = color(sgStarscript, "starscript-dots", new SettingColor(169, 183, 198)); + private final Setting starscriptCommas = color(sgStarscript, "starscript-commas", new SettingColor(169, 183, 198)); + private final Setting starscriptOperators = color(sgStarscript, "starscript-operators", new SettingColor(169, 183, 198)); + private final Setting starscriptStrings = color(sgStarscript, "starscript-strings", new SettingColor(106, 135, 89)); + private final Setting starscriptNumbers = color(sgStarscript, "starscript-numbers", new SettingColor(104, 141, 187)); + private final Setting starscriptKeywords = color(sgStarscript, "starscript-keywords", new SettingColor(204, 120, 50)); + private final Setting starscriptAccessedObjects = color(sgStarscript, "starscript-accessed-objects", new SettingColor(152, 118, 170)); public MeteorGuiTheme() { super("Meteor"); @@ -171,15 +167,14 @@ public MeteorGuiTheme() { settingsFactory = new DefaultSettingsWidgetFactory(this); } - private Setting color(SettingGroup group, String name, String description, SettingColor color) { + private Setting color(SettingGroup group, String name, SettingColor color) { return group.add(new ColorSetting.Builder() .name(name + "-color") - .description(description) .defaultValue(color) .build()); } - private Setting color(String name, String description, SettingColor color) { - return color(sgColors, name, description, color); + private Setting color(String name, SettingColor color) { + return color(sgColors, name, color); } // Widgets @@ -391,9 +386,9 @@ public class ThreeStateColorSetting { private final Setting normal, hovered, pressed; public ThreeStateColorSetting(SettingGroup group, String name, SettingColor c1, SettingColor c2, SettingColor c3) { - normal = color(group, name, "Color of " + name + ".", c1); - hovered = color(group, "hovered-" + name, "Color of " + name + " when hovered.", c2); - pressed = color(group, "pressed-" + name, "Color of " + name + " when pressed.", c3); + normal = color(group, name, c1); + hovered = color(group, "hovered-" + name, c2); + pressed = color(group, "pressed-" + name, c3); } public SettingColor get() { diff --git a/src/main/java/meteordevelopment/meteorclient/pathing/BaritoneSettings.java b/src/main/java/meteordevelopment/meteorclient/pathing/BaritoneSettings.java index 72b44d9f0a..32a74a7dbb 100644 --- a/src/main/java/meteordevelopment/meteorclient/pathing/BaritoneSettings.java +++ b/src/main/java/meteordevelopment/meteorclient/pathing/BaritoneSettings.java @@ -13,7 +13,10 @@ import net.minecraft.item.Item; import java.awt.*; -import java.lang.reflect.*; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -68,14 +71,14 @@ public void save() { @SuppressWarnings({"rawtypes", "unchecked"}) private void createWrappers() { - SettingGroup sgBool = settings.createGroup("Checkboxes"); - SettingGroup sgDouble = settings.createGroup("Numbers"); - SettingGroup sgInt = settings.createGroup("Whole Numbers"); - SettingGroup sgString = settings.createGroup("Strings"); - SettingGroup sgColor = settings.createGroup("Colors"); - - SettingGroup sgBlockLists = settings.createGroup("Block Lists"); - SettingGroup sgItemLists = settings.createGroup("Item Lists"); + SettingGroup sgBool = settings.createGroup("checkboxes"); + SettingGroup sgDouble = settings.createGroup("numbers"); + SettingGroup sgInt = settings.createGroup("whole-numbers"); + SettingGroup sgString = settings.createGroup("strings"); + SettingGroup sgColor = settings.createGroup("colors"); + + SettingGroup sgBlockLists = settings.createGroup("block-lists"); + SettingGroup sgItemLists = settings.createGroup("item-lists"); try { Class klass = BaritoneAPI.getSettings().getClass(); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/config/Config.java b/src/main/java/meteordevelopment/meteorclient/systems/config/Config.java index 863a7f12f9..d010d5507b 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/config/Config.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/config/Config.java @@ -26,23 +26,21 @@ public class Config extends System { public final Settings settings = new Settings("config"); - private final SettingGroup sgVisual = settings.createGroup("Visual"); - private final SettingGroup sgModules = settings.createGroup("Modules"); - private final SettingGroup sgChat = settings.createGroup("Chat"); - private final SettingGroup sgMisc = settings.createGroup("Misc"); + private final SettingGroup sgVisual = settings.createGroup("visual"); + private final SettingGroup sgModules = settings.createGroup("modules"); + private final SettingGroup sgChat = settings.createGroup("chat"); + private final SettingGroup sgMisc = settings.createGroup("misc"); // Visual public final Setting customFont = sgVisual.add(new BoolSetting.Builder() .name("custom-font") - .description("Use a custom font.") .defaultValue(true) .build() ); public final Setting font = sgVisual.add(new FontFaceSetting.Builder() .name("font") - .description("Custom font to use.") .visible(customFont::get) .onChanged(Fonts::load) .build() @@ -50,7 +48,6 @@ public class Config extends System { public final Setting rainbowSpeed = sgVisual.add(new DoubleSetting.Builder() .name("rainbow-speed") - .description("The global rainbow speed.") .defaultValue(0.5) .range(0, 10) .sliderMax(5) @@ -59,21 +56,18 @@ public class Config extends System { public final Setting titleScreenCredits = sgVisual.add(new BoolSetting.Builder() .name("title-screen-credits") - .description("Show Meteor credits on title screen") .defaultValue(true) .build() ); public final Setting titleScreenSplashes = sgVisual.add(new BoolSetting.Builder() .name("title-screen-splashes") - .description("Show Meteor splash texts on title screen") .defaultValue(true) .build() ); public final Setting customWindowTitle = sgVisual.add(new BoolSetting.Builder() .name("custom-window-title") - .description("Show custom text in the window title.") .defaultValue(false) .onModuleActivated(setting -> mc.updateWindowTitle()) .onChanged(value -> mc.updateWindowTitle()) @@ -82,7 +76,6 @@ public class Config extends System { public final Setting customWindowTitleText = sgVisual.add(new StringSetting.Builder() .name("window-title-text") - .description("The text it displays in the window title.") .visible(customWindowTitle::get) .defaultValue("Minecraft {mc_version} - {meteor.name} {meteor.version}") .onChanged(value -> mc.updateWindowTitle()) @@ -91,14 +84,12 @@ public class Config extends System { public final Setting friendColor = sgVisual.add(new ColorSetting.Builder() .name("friend-color") - .description("The color used to show friends.") .defaultValue(new SettingColor(0, 255, 180)) .build() ); public final Setting syncListSettingWidths = sgVisual.add(new BoolSetting.Builder() .name("sync-list-setting-widths") - .description("Prevents the list setting screens from moving around as you add & remove elements.") .defaultValue(false) .build() ); @@ -107,13 +98,11 @@ public class Config extends System { public final Setting> hiddenModules = sgModules.add(new ModuleListSetting.Builder() .name("hidden-modules") - .description("Prevent these modules from being rendered as options in the clickgui.") .build() ); public final Setting moduleSearchCount = sgModules.add(new IntSetting.Builder() .name("module-search-count") - .description("Amount of modules and settings to be shown in the module search bar.") .defaultValue(8) .min(1).sliderMax(12) .build() @@ -121,7 +110,6 @@ public class Config extends System { public final Setting moduleAliases = sgModules.add(new BoolSetting.Builder() .name("search-module-aliases") - .description("Whether or not module aliases will be used in the module search bar.") .defaultValue(true) .build() ); @@ -130,21 +118,18 @@ public class Config extends System { public final Setting prefix = sgChat.add(new StringSetting.Builder() .name("prefix") - .description("Prefix.") .defaultValue(".") .build() ); public final Setting chatFeedback = sgChat.add(new BoolSetting.Builder() .name("chat-feedback") - .description("Sends chat feedback when meteor performs certain actions.") .defaultValue(true) .build() ); public final Setting deleteChatFeedback = sgChat.add(new BoolSetting.Builder() .name("delete-chat-feedback") - .description("Delete previous matching chat feedback to keep chat clear.") .visible(chatFeedback::get) .defaultValue(true) .build() @@ -154,14 +139,12 @@ public class Config extends System { public final Setting rotationHoldTicks = sgMisc.add(new IntSetting.Builder() .name("rotation-hold") - .description("Hold long to hold server side rotation when not sending any packets.") .defaultValue(4) .build() ); public final Setting useTeamColor = sgMisc.add(new BoolSetting.Builder() .name("use-team-color") - .description("Uses player's team color for rendering things like esp and tracers.") .defaultValue(true) .build() ); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/Hud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/Hud.java index 23f488126a..4bd31ddce9 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/Hud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/Hud.java @@ -37,14 +37,13 @@ public class Hud extends System implements Iterable { private final List elements = new ArrayList<>(); private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgEditor = settings.createGroup("Editor"); - private final SettingGroup sgKeybind = settings.createGroup("Bind"); + private final SettingGroup sgEditor = settings.createGroup("editor"); + private final SettingGroup sgKeybind = settings.createGroup("bind"); // General private final Setting customFont = sgGeneral.add(new BoolSetting.Builder() .name("custom-font") - .description("Text will use custom font.") .defaultValue(true) .onChanged(aBoolean -> { for (HudElement element : elements) element.onFontChanged(); @@ -54,14 +53,12 @@ public class Hud extends System implements Iterable { private final Setting hideInMenus = sgGeneral.add(new BoolSetting.Builder() .name("hide-in-menus") - .description("Hides the meteor hud when in inventory screens or game menus.") .defaultValue(false) .build() ); private final Setting textScale = sgGeneral.add(new DoubleSetting.Builder() .name("text-scale") - .description("Scale of text if not overridden by the element.") .defaultValue(1) .min(0.5) .sliderRange(0.5, 3) @@ -70,7 +67,6 @@ public class Hud extends System implements Iterable { public final Setting> textColors = sgGeneral.add(new ColorListSetting.Builder() .name("text-colors") - .description("Colors used for the Text element.") .defaultValue(List.of(new SettingColor(), new SettingColor(175, 175, 175), new SettingColor(25, 225, 25), new SettingColor(225, 25, 25))) .build() ); @@ -79,7 +75,6 @@ public class Hud extends System implements Iterable { public final Setting border = sgEditor.add(new IntSetting.Builder() .name("border") - .description("Space around the edges of the screen.") .defaultValue(4) .sliderMax(20) .build() @@ -87,7 +82,6 @@ public class Hud extends System implements Iterable { public final Setting snappingRange = sgEditor.add(new IntSetting.Builder() .name("snapping-range") - .description("Snapping range in editor.") .defaultValue(10) .sliderMax(20) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ActiveModulesHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ActiveModulesHud.java index 317267364f..51966605bc 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ActiveModulesHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ActiveModulesHud.java @@ -21,54 +21,47 @@ public class ActiveModulesHud extends HudElement { private static final Color WHITE = new Color(); private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgColor = settings.createGroup("Color"); - private final SettingGroup sgScale = settings.createGroup("Scale"); - private final SettingGroup sgBackground = settings.createGroup("Background"); + private final SettingGroup sgColor = settings.createGroup("colors"); + private final SettingGroup sgScale = settings.createGroup("scale"); + private final SettingGroup sgBackground = settings.createGroup("background"); private final Setting sort = sgGeneral.add(new EnumSetting.Builder() .name("sort") - .description("How to sort active modules.") .defaultValue(Sort.Biggest) .build() ); private final Setting> hiddenModules = sgGeneral.add(new ModuleListSetting.Builder() .name("hidden-modules") - .description("Which modules not to show in the list.") .build() ); private final Setting activeInfo = sgGeneral.add(new BoolSetting.Builder() .name("module-info") - .description("Shows info from the module next to the name in the active modules list.") .defaultValue(true) .build() ); private final Setting showKeybind = sgGeneral.add(new BoolSetting.Builder() .name("show-keybind") - .description("Shows the module's keybind next to its name.") .defaultValue(false) .build() ); private final Setting shadow = sgGeneral.add(new BoolSetting.Builder() .name("shadow") - .description("Renders shadow behind text.") .defaultValue(true) .build() ); private final Setting outlines = sgGeneral.add(new BoolSetting.Builder() .name("outlines") - .description("Whether or not to render outlines") .defaultValue(false) .build() ); private final Setting outlineWidth = sgGeneral.add(new IntSetting.Builder() .name("outline-width") - .description("Outline width") .defaultValue(2) .min(1) .sliderMin(1) @@ -78,7 +71,6 @@ public class ActiveModulesHud extends HudElement { private final Setting alignment = sgGeneral.add(new EnumSetting.Builder() .name("alignment") - .description("Horizontal alignment.") .defaultValue(Alignment.Auto) .build() ); @@ -87,14 +79,12 @@ public class ActiveModulesHud extends HudElement { private final Setting colorMode = sgColor.add(new EnumSetting.Builder() .name("color-mode") - .description("What color to use for active modules.") .defaultValue(ColorMode.Rainbow) .build() ); private final Setting flatColor = sgColor.add(new ColorSetting.Builder() .name("flat-color") - .description("Color for flat color mode.") .defaultValue(new SettingColor(225, 25, 25)) .visible(() -> colorMode.get() == ColorMode.Flat) .build() @@ -102,7 +92,6 @@ public class ActiveModulesHud extends HudElement { private final Setting rainbowSpeed = sgColor.add(new DoubleSetting.Builder() .name("rainbow-speed") - .description("Rainbow speed of rainbow color mode.") .defaultValue(0.05) .sliderMin(0.01) .sliderMax(0.2) @@ -113,7 +102,6 @@ public class ActiveModulesHud extends HudElement { private final Setting rainbowSpread = sgColor.add(new DoubleSetting.Builder() .name("rainbow-spread") - .description("Rainbow spread of rainbow color mode.") .defaultValue(0.01) .sliderMin(0.001) .sliderMax(0.05) @@ -140,7 +128,6 @@ public class ActiveModulesHud extends HudElement { private final Setting moduleInfoColor = sgColor.add(new ColorSetting.Builder() .name("module-info-color") - .description("Color of module info text.") .defaultValue(new SettingColor(175, 175, 175)) .visible(activeInfo::get) .build() @@ -150,14 +137,12 @@ public class ActiveModulesHud extends HudElement { private final Setting customScale = sgScale.add(new BoolSetting.Builder() .name("custom-scale") - .description("Applies a custom scale to this hud element.") .defaultValue(false) .build() ); private final Setting scale = sgScale.add(new DoubleSetting.Builder() .name("scale") - .description("Custom scale.") .visible(customScale::get) .defaultValue(1) .min(0.5) @@ -169,14 +154,12 @@ public class ActiveModulesHud extends HudElement { private final Setting background = sgBackground.add(new BoolSetting.Builder() .name("background") - .description("Displays background.") .defaultValue(false) .build() ); private final Setting backgroundColor = sgBackground.add(new ColorSetting.Builder() .name("background-color") - .description("Color used for the background.") .visible(background::get) .defaultValue(new SettingColor(25, 25, 25, 50)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ArmorHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ArmorHud.java index a3bd7f6f01..9af850cb75 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ArmorHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ArmorHud.java @@ -22,15 +22,14 @@ public class ArmorHud extends HudElement { public static final HudElementInfo INFO = new HudElementInfo<>(Hud.GROUP, "armor", "Displays your armor.", ArmorHud::new); private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgDurability = settings.createGroup("Durability"); - private final SettingGroup sgScale = settings.createGroup("Scale"); - private final SettingGroup sgBackground = settings.createGroup("Background"); + private final SettingGroup sgDurability = settings.createGroup("durability"); + private final SettingGroup sgScale = settings.createGroup("scale"); + private final SettingGroup sgBackground = settings.createGroup("background"); // General private final Setting orientation = sgGeneral.add(new EnumSetting.Builder() .name("orientation") - .description("How to display armor.") .defaultValue(Orientation.Horizontal) .onChanged(val -> calculateSize()) .build() @@ -38,14 +37,12 @@ public class ArmorHud extends HudElement { private final Setting flipOrder = sgGeneral.add(new BoolSetting.Builder() .name("flip-order") - .description("Flips the order of armor items.") .defaultValue(true) .build() ); private final Setting showEmpty = sgGeneral.add(new BoolSetting.Builder() .name("show-empty") - .description("Renders barrier icons for empty slots.") .defaultValue(false) .build() ); @@ -54,7 +51,6 @@ public class ArmorHud extends HudElement { private final Setting durability = sgDurability.add(new EnumSetting.Builder() .name("durability") - .description("How to display armor durability.") .defaultValue(Durability.Bar) .onChanged(durability1 -> calculateSize()) .build() @@ -62,7 +58,6 @@ public class ArmorHud extends HudElement { private final Setting durabilityColor = sgDurability.add(new ColorSetting.Builder() .name("durability-color") - .description("Color of the text.") .visible(() -> durability.get() == Durability.Total || durability.get() == Durability.Percentage) .defaultValue(new SettingColor()) .build() @@ -70,7 +65,6 @@ public class ArmorHud extends HudElement { private final Setting durabilityShadow = sgDurability.add(new BoolSetting.Builder() .name("durability-shadow") - .description("Text shadow.") .visible(() -> durability.get() == Durability.Total || durability.get() == Durability.Percentage) .defaultValue(true) .build() @@ -80,7 +74,6 @@ public class ArmorHud extends HudElement { private final Setting customScale = sgScale.add(new BoolSetting.Builder() .name("custom-scale") - .description("Applies a custom scale to this hud element.") .defaultValue(false) .onChanged(aBoolean -> calculateSize()) .build() @@ -88,7 +81,6 @@ public class ArmorHud extends HudElement { private final Setting scale = sgScale.add(new DoubleSetting.Builder() .name("scale") - .description("Custom scale.") .visible(customScale::get) .defaultValue(2) .onChanged(aDouble -> calculateSize()) @@ -101,14 +93,12 @@ public class ArmorHud extends HudElement { private final Setting background = sgBackground.add(new BoolSetting.Builder() .name("background") - .description("Displays background.") .defaultValue(false) .build() ); private final Setting backgroundColor = sgBackground.add(new ColorSetting.Builder() .name("background-color") - .description("Color used for the background.") .visible(background::get) .defaultValue(new SettingColor(25, 25, 25, 50)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/CombatHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/CombatHud.java index 2e2ffd1a42..a6be7adb89 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/CombatHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/CombatHud.java @@ -55,16 +55,15 @@ public class CombatHud extends HudElement { public static final HudElementInfo INFO = new HudElementInfo<>(Hud.GROUP, "combat", "Displays information about your combat target.", CombatHud::new); private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgEnchantments = settings.createGroup("Enchantments"); - private final SettingGroup sgHealth = settings.createGroup("Health"); - private final SettingGroup sgDistance = settings.createGroup("Distance"); - private final SettingGroup sgPing = settings.createGroup("Ping"); - private final SettingGroup sgScale = settings.createGroup("Scale"); - private final SettingGroup sgBackground = settings.createGroup("Background"); + private final SettingGroup sgEnchantments = settings.createGroup("enchantments"); + private final SettingGroup sgHealth = settings.createGroup("health"); + private final SettingGroup sgDistance = settings.createGroup("distance"); + private final SettingGroup sgPing = settings.createGroup("ping"); + private final SettingGroup sgScale = settings.createGroup("scale"); + private final SettingGroup sgBackground = settings.createGroup("background"); private final Setting range = sgGeneral.add(new DoubleSetting.Builder() .name("range") - .description("The range to target players.") .defaultValue(100) .min(1) .sliderMax(200) @@ -75,21 +74,18 @@ public class CombatHud extends HudElement { private final Setting healthColor1 = sgHealth.add(new ColorSetting.Builder() .name("health-stage-1") - .description("The color on the left of the health gradient.") .defaultValue(new SettingColor(255, 15, 15)) .build() ); private final Setting healthColor2 = sgHealth.add(new ColorSetting.Builder() .name("health-stage-2") - .description("The color in the middle of the health gradient.") .defaultValue(new SettingColor(255, 150, 15)) .build() ); private final Setting healthColor3 = sgHealth.add(new ColorSetting.Builder() .name("health-stage-3") - .description("The color on the right of the health gradient.") .defaultValue(new SettingColor(15, 255, 15)) .build() ); @@ -98,14 +94,12 @@ public class CombatHud extends HudElement { private final Setting>> displayedEnchantments = sgEnchantments.add(new EnchantmentListSetting.Builder() .name("displayed-enchantments") - .description("The enchantments that are shown on nametags.") .vanillaDefaults() .build() ); private final Setting enchantmentTextColor = sgEnchantments.add(new ColorSetting.Builder() .name("enchantment-color") - .description("Color of enchantment text.") .defaultValue(new SettingColor(255, 255, 255)) .build() ); @@ -114,14 +108,12 @@ public class CombatHud extends HudElement { private final Setting displayPing = sgPing.add(new BoolSetting.Builder() .name("ping") - .description("Shows the player's ping.") .defaultValue(true) .build() ); private final Setting pingColor1 = sgPing.add(new ColorSetting.Builder() .name("ping-stage-1") - .description("Color of ping text when under 75.") .defaultValue(new SettingColor(15, 255, 15)) .visible(displayPing::get) .build() @@ -129,7 +121,6 @@ public class CombatHud extends HudElement { private final Setting pingColor2 = sgPing.add(new ColorSetting.Builder() .name("ping-stage-2") - .description("Color of ping text when between 75 and 200.") .defaultValue(new SettingColor(255, 150, 15)) .visible(displayPing::get) .build() @@ -137,7 +128,6 @@ public class CombatHud extends HudElement { private final Setting pingColor3 = sgPing.add(new ColorSetting.Builder() .name("ping-stage-3") - .description("Color of ping text when over 200.") .defaultValue(new SettingColor(255, 15, 15)) .visible(displayPing::get) .build() @@ -147,14 +137,12 @@ public class CombatHud extends HudElement { private final Setting displayDistance = sgDistance.add(new BoolSetting.Builder() .name("distance") - .description("Shows the distance between you and the player.") .defaultValue(true) .build() ); private final Setting distColor1 = sgDistance.add(new ColorSetting.Builder() .name("distance-stage-1") - .description("The color when a player is within 10 blocks of you.") .defaultValue(new SettingColor(255, 15, 15)) .visible(displayDistance::get) .build() @@ -162,7 +150,6 @@ public class CombatHud extends HudElement { private final Setting distColor2 = sgDistance.add(new ColorSetting.Builder() .name("distance-stage-2") - .description("The color when a player is within 50 blocks of you.") .defaultValue(new SettingColor(255, 150, 15)) .visible(displayDistance::get) .build() @@ -170,7 +157,6 @@ public class CombatHud extends HudElement { private final Setting distColor3 = sgDistance.add(new ColorSetting.Builder() .name("distance-stage-3") - .description("The color when a player is greater then 50 blocks away from you.") .defaultValue(new SettingColor(15, 255, 15)) .visible(displayDistance::get) .build() @@ -180,7 +166,6 @@ public class CombatHud extends HudElement { public final Setting customScale = sgScale.add(new BoolSetting.Builder() .name("custom-scale") - .description("Applies a custom scale to this hud element.") .defaultValue(false) .onChanged(aBoolean -> calculateSize()) .build() @@ -188,7 +173,6 @@ public class CombatHud extends HudElement { public final Setting scale = sgScale.add(new DoubleSetting.Builder() .name("scale") - .description("Custom scale.") .visible(customScale::get) .defaultValue(2) .onChanged(aDouble -> calculateSize()) @@ -201,14 +185,12 @@ public class CombatHud extends HudElement { public final Setting background = sgBackground.add(new BoolSetting.Builder() .name("background") - .description("Displays background.") .defaultValue(false) .build() ); public final Setting backgroundColor = sgBackground.add(new ColorSetting.Builder() .name("background-color") - .description("Color used for the background.") .visible(background::get) .defaultValue(new SettingColor(25, 25, 25, 50)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/CompassHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/CompassHud.java index fcd83dbdea..aa8f4c4552 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/CompassHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/CompassHud.java @@ -19,35 +19,31 @@ public class CompassHud extends HudElement { public static final HudElementInfo INFO = new HudElementInfo<>(Hud.GROUP, "compass", "Displays a compass.", CompassHud::new); private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgScale = settings.createGroup("Scale"); - private final SettingGroup sgBackground = settings.createGroup("Background"); + private final SettingGroup sgScale = settings.createGroup("scale"); + private final SettingGroup sgBackground = settings.createGroup("background"); // General private final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("type") - .description("Which type of direction information to show.") .defaultValue(Mode.Axis) .build() ); private final Setting colorNorth = sgGeneral.add(new ColorSetting.Builder() .name("color-north") - .description("Color of north.") .defaultValue(new SettingColor(225, 45, 45)) .build() ); private final Setting colorOther = sgGeneral.add(new ColorSetting.Builder() - .name("color-north") - .description("Color of other directions.") + .name("color-other") .defaultValue(new SettingColor()) .build() ); private final Setting shadow = sgGeneral.add(new BoolSetting.Builder() .name("shadow") - .description("Text shadow.") .defaultValue(false) .build() ); @@ -56,7 +52,6 @@ public class CompassHud extends HudElement { private final Setting customScale = sgScale.add(new BoolSetting.Builder() .name("custom-scale") - .description("Apply custom scales to this hud element.") .defaultValue(false) .onChanged(aBoolean -> calculateSize()) .build() @@ -64,7 +59,6 @@ public class CompassHud extends HudElement { private final Setting textScale = sgScale.add(new DoubleSetting.Builder() .name("text-scale") - .description("Scale to use for the letters.") .visible(customScale::get) .defaultValue(1) .min(0.5) @@ -74,7 +68,6 @@ public class CompassHud extends HudElement { private final Setting compassScale = sgScale.add(new DoubleSetting.Builder() .name("compass-scale") - .description("Scale of the whole HUD element.") .visible(customScale::get) .defaultValue(1) .min(0.5) @@ -87,14 +80,12 @@ public class CompassHud extends HudElement { private final Setting background = sgBackground.add(new BoolSetting.Builder() .name("background") - .description("Displays background.") .defaultValue(false) .build() ); private final Setting backgroundColor = sgBackground.add(new ColorSetting.Builder() .name("background-color") - .description("Color used for the background.") .visible(background::get) .defaultValue(new SettingColor(25, 25, 25, 50)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/HoleHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/HoleHud.java index da963f4230..feb87fa74f 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/HoleHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/HoleHud.java @@ -26,14 +26,13 @@ public class HoleHud extends HudElement { public static final HudElementInfo INFO = new HudElementInfo<>(Hud.GROUP, "hole", "Displays information about the hole you are standing in.", HoleHud::new); private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgScale = settings.createGroup("Scale"); - private final SettingGroup sgBackground = settings.createGroup("Background"); + private final SettingGroup sgScale = settings.createGroup("scale"); + private final SettingGroup sgBackground = settings.createGroup("background"); // General public final Setting> safe = sgGeneral.add(new BlockListSetting.Builder() .name("safe-blocks") - .description("Which blocks to consider safe.") .defaultValue(Blocks.OBSIDIAN, Blocks.BEDROCK, Blocks.CRYING_OBSIDIAN, Blocks.NETHERITE_BLOCK) .build() ); @@ -42,7 +41,6 @@ public class HoleHud extends HudElement { public final Setting customScale = sgScale.add(new BoolSetting.Builder() .name("custom-scale") - .description("Applies a custom scale to this hud element.") .defaultValue(false) .onChanged(aBoolean -> calculateSize()) .build() @@ -50,7 +48,6 @@ public class HoleHud extends HudElement { public final Setting scale = sgScale.add(new DoubleSetting.Builder() .name("scale") - .description("Custom scale.") .visible(customScale::get) .defaultValue(2) .onChanged(aDouble -> calculateSize()) @@ -63,14 +60,12 @@ public class HoleHud extends HudElement { public final Setting background = sgBackground.add(new BoolSetting.Builder() .name("background") - .description("Displays background.") .defaultValue(false) .build() ); public final Setting backgroundColor = sgBackground.add(new ColorSetting.Builder() .name("background-color") - .description("Color used for the background.") .visible(background::get) .defaultValue(new SettingColor(25, 25, 25, 50)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/InventoryHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/InventoryHud.java index 8b30db3f8e..e58aa9ea4b 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/InventoryHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/InventoryHud.java @@ -27,12 +27,11 @@ public class InventoryHud extends HudElement { private static final Identifier TEXTURE_TRANSPARENT = MeteorClient.identifier("textures/container-transparent.png"); private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgScale = settings.createGroup("Scale"); - private final SettingGroup sgBackground = settings.createGroup("Background"); + private final SettingGroup sgScale = settings.createGroup("scale"); + private final SettingGroup sgBackground = settings.createGroup("background"); private final Setting containers = sgGeneral.add(new BoolSetting.Builder() .name("containers") - .description("Shows the contents of a container when holding them.") .defaultValue(false) .build() ); @@ -41,7 +40,6 @@ public class InventoryHud extends HudElement { public final Setting customScale = sgScale.add(new BoolSetting.Builder() .name("custom-scale") - .description("Applies a custom scale to this hud element.") .defaultValue(false) .onChanged(aBoolean -> calculateSize()) .build() @@ -49,7 +47,6 @@ public class InventoryHud extends HudElement { public final Setting scale = sgScale.add(new DoubleSetting.Builder() .name("scale") - .description("Custom scale.") .visible(customScale::get) .defaultValue(2) .onChanged(aDouble -> calculateSize()) @@ -62,7 +59,6 @@ public class InventoryHud extends HudElement { private final Setting background = sgBackground.add(new EnumSetting.Builder() .name("background") - .description("Background of inventory viewer.") .defaultValue(Background.Texture) .onChanged(bg -> calculateSize()) .build() @@ -70,7 +66,6 @@ public class InventoryHud extends HudElement { public final Setting backgroundColor = sgBackground.add(new ColorSetting.Builder() .name("background-color") - .description("Color used for the background.") .visible(() -> background.get() == Background.Flat) .defaultValue(new SettingColor(25, 25, 25, 50)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ItemHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ItemHud.java index 975d8da941..efac788ce8 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ItemHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ItemHud.java @@ -21,21 +21,19 @@ public class ItemHud extends HudElement { public static final HudElementInfo INFO = new HudElementInfo<>(Hud.GROUP, "item", "Displays the item count.", ItemHud::new); private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgScale = settings.createGroup("Scale"); - private final SettingGroup sgBackground = settings.createGroup("Background"); + private final SettingGroup sgScale = settings.createGroup("scale"); + private final SettingGroup sgBackground = settings.createGroup("background"); // General private final Setting item = sgGeneral.add(new ItemSetting.Builder() .name("item") - .description("Item to display") .defaultValue(Items.TOTEM_OF_UNDYING) .build() ); private final Setting noneMode = sgGeneral.add(new EnumSetting.Builder() .name("none-mode") - .description("How to render the item when you don't have the specified item in your inventory.") .defaultValue(NoneMode.HideCount) .build() ); @@ -44,7 +42,6 @@ public class ItemHud extends HudElement { public final Setting customScale = sgScale.add(new BoolSetting.Builder() .name("custom-scale") - .description("Applies a custom scale to this hud element.") .defaultValue(false) .onChanged(aBoolean -> calculateSize()) .build() @@ -52,7 +49,6 @@ public class ItemHud extends HudElement { public final Setting scale = sgScale.add(new DoubleSetting.Builder() .name("scale") - .description("Custom scale.") .visible(customScale::get) .defaultValue(2) .onChanged(aDouble -> calculateSize()) @@ -65,14 +61,12 @@ public class ItemHud extends HudElement { public final Setting background = sgBackground.add(new BoolSetting.Builder() .name("background") - .description("Displays background.") .defaultValue(false) .build() ); public final Setting backgroundColor = sgBackground.add(new ColorSetting.Builder() .name("background-color") - .description("Color used for the background.") .visible(background::get) .defaultValue(new SettingColor(25, 25, 25, 50)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/LagNotifierHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/LagNotifierHud.java index 6154e8f8d4..24731d10be 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/LagNotifierHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/LagNotifierHud.java @@ -18,42 +18,37 @@ public class LagNotifierHud extends HudElement { public static final HudElementInfo INFO = new HudElementInfo<>(Hud.GROUP, "lag-notifier", "Displays if the server is lagging in ticks.", LagNotifierHud::new); private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgScale = settings.createGroup("Scale"); - private final SettingGroup sgBackground = settings.createGroup("Background"); + private final SettingGroup sgScale = settings.createGroup("scale"); + private final SettingGroup sgBackground = settings.createGroup("background"); // General private final Setting shadow = sgGeneral.add(new BoolSetting.Builder() .name("shadow") - .description("Text shadow.") .defaultValue(true) .build() ); private final Setting textColor = sgGeneral.add(new ColorSetting.Builder() .name("text-color") - .description("A.") .defaultValue(new SettingColor()) .build() ); private final Setting color1 = sgGeneral.add(new ColorSetting.Builder() .name("color-1") - .description("First color.") .defaultValue(new SettingColor(255, 255, 5)) .build() ); private final Setting color2 = sgGeneral.add(new ColorSetting.Builder() .name("color-2") - .description("Second color.") .defaultValue(new SettingColor(235, 158, 52)) .build() ); private final Setting color3 = sgGeneral.add(new ColorSetting.Builder() .name("color-3") - .description("Third color.") .defaultValue(new SettingColor(225, 45, 45)) .build() ); @@ -62,14 +57,12 @@ public class LagNotifierHud extends HudElement { private final Setting customScale = sgScale.add(new BoolSetting.Builder() .name("custom-scale") - .description("Applies a custom scale to this hud element.") .defaultValue(false) .build() ); private final Setting scale = sgScale.add(new DoubleSetting.Builder() .name("scale") - .description("Custom scale.") .visible(customScale::get) .defaultValue(1) .min(0.5) @@ -81,14 +74,12 @@ public class LagNotifierHud extends HudElement { private final Setting background = sgBackground.add(new BoolSetting.Builder() .name("background") - .description("Displays background.") .defaultValue(false) .build() ); private final Setting backgroundColor = sgBackground.add(new ColorSetting.Builder() .name("background-color") - .description("Color used for the background.") .visible(background::get) .defaultValue(new SettingColor(25, 25, 25, 50)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/MapHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/MapHud.java index 8c997a2f6c..26bd7a5313 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/MapHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/MapHud.java @@ -30,20 +30,18 @@ public class MapHud extends HudElement { public static final HudElementInfo INFO = new HudElementInfo<>(Hud.GROUP, "map", "Displays the contents of a map on your Hud.", MapHud::new); private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgVisual = settings.createGroup("Visual"); + private final SettingGroup sgVisual = settings.createGroup("visual"); // General private final Setting mode = sgGeneral.add(new EnumSetting.Builder() .name("mode") - .description("How to determine which map to render.") .defaultValue(Mode.Simple) .build() ); private final Setting slotIndex = sgGeneral.add(new IntSetting.Builder() .name("slot-index") - .description("Which slot to grab the map from.") .visible(() -> mode.get() == Mode.SlotIndex) .defaultValue(0) .sliderRange(0, 40) @@ -52,7 +50,6 @@ public class MapHud extends HudElement { private final Setting mapId = sgGeneral.add(new IntSetting.Builder() .name("map-id") - .description("Which map id to render from. Must be in your inventory!") .visible(() -> mode.get() == Mode.MapId) .defaultValue(0) .noSlider() @@ -63,7 +60,6 @@ public class MapHud extends HudElement { private final Setting scale = sgVisual.add(new DoubleSetting.Builder() .name("scale") - .description("How big to render the map.") .defaultValue(1) .min(0.5) .sliderRange(0.5, 3) @@ -72,14 +68,12 @@ public class MapHud extends HudElement { private final Setting background = sgVisual.add(new BoolSetting.Builder() .name("background") - .description("Displays background.") .defaultValue(false) .build() ); private final Setting backgroundColor = sgVisual.add(new ColorSetting.Builder() .name("background-color") - .description("Color used for the background.") .visible(background::get) .defaultValue(new SettingColor(25, 25, 25, 50)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ModuleInfosHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ModuleInfosHud.java index e85e7b6304..09f4233fba 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ModuleInfosHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ModuleInfosHud.java @@ -21,49 +21,42 @@ public class ModuleInfosHud extends HudElement { private final Setting> modules = sgGeneral.add(new ModuleListSetting.Builder() .name("modules") - .description("Which modules to display") .defaultValue(KillAura.class, CrystalAura.class, AnchorAura.class, BedAura.class, Surround.class) .build() ); private final Setting additionalInfo = sgGeneral.add(new BoolSetting.Builder() .name("additional-info") - .description("Shows additional info from the module next to the name in the module info list.") .defaultValue(true) .build() ); private final Setting textShadow = sgGeneral.add(new BoolSetting.Builder() .name("text-shadow") - .description("Renders shadow behind text.") .defaultValue(true) .build() ); private final Setting moduleColor = sgGeneral.add(new ColorSetting.Builder() .name("module-color") - .description("Module color.") .defaultValue(new SettingColor()) .build() ); private final Setting onColor = sgGeneral.add(new ColorSetting.Builder() .name("on-color") - .description("Color when module is on.") .defaultValue(new SettingColor(25, 225, 25)) .build() ); private final Setting offColor = sgGeneral.add(new ColorSetting.Builder() .name("off-color") - .description("Color when module is off.") .defaultValue(new SettingColor(225, 25, 25)) .build() ); private final Setting alignment = sgGeneral.add(new EnumSetting.Builder() .name("alignment") - .description("Horizontal alignment.") .defaultValue(Alignment.Auto) .build() ); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/PlayerModelHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/PlayerModelHud.java index 73814d21d9..6fe8a855fd 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/PlayerModelHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/PlayerModelHud.java @@ -20,21 +20,19 @@ public class PlayerModelHud extends HudElement { public static final HudElementInfo INFO = new HudElementInfo<>(Hud.GROUP, "player-model", "Displays a model of your player.", PlayerModelHud::new); private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgScale = settings.createGroup("Scale"); - private final SettingGroup sgBackground = settings.createGroup("Background"); + private final SettingGroup sgScale = settings.createGroup("scale"); + private final SettingGroup sgBackground = settings.createGroup("background"); // General private final Setting copyYaw = sgGeneral.add(new BoolSetting.Builder() .name("copy-yaw") - .description("Makes the player model's yaw equal to yours.") .defaultValue(true) .build() ); private final Setting customYaw = sgGeneral.add(new IntSetting.Builder() .name("custom-yaw") - .description("Custom yaw for when copy yaw is off.") .defaultValue(0) .range(-180, 180) .sliderRange(-180, 180) @@ -44,14 +42,12 @@ public class PlayerModelHud extends HudElement { private final Setting copyPitch = sgGeneral.add(new BoolSetting.Builder() .name("copy-pitch") - .description("Makes the player model's pitch equal to yours.") .defaultValue(true) .build() ); private final Setting customPitch = sgGeneral.add(new IntSetting.Builder() .name("custom-pitch") - .description("Custom pitch for when copy pitch is off.") .defaultValue(0) .range(-90, 90) .sliderRange(-90, 90) @@ -61,7 +57,6 @@ public class PlayerModelHud extends HudElement { private final Setting centerOrientation = sgGeneral.add(new EnumSetting.Builder() .name("center-orientation") - .description("Which direction the player faces when the HUD model faces directly forward.") .defaultValue(CenterOrientation.South) .build() ); @@ -70,7 +65,6 @@ public class PlayerModelHud extends HudElement { public final Setting customScale = sgScale.add(new BoolSetting.Builder() .name("custom-scale") - .description("Applies a custom scale to this hud element.") .defaultValue(false) .onChanged(aBoolean -> calculateSize()) .build() @@ -78,7 +72,6 @@ public class PlayerModelHud extends HudElement { public final Setting scale = sgScale.add(new DoubleSetting.Builder() .name("scale") - .description("Custom scale.") .visible(customScale::get) .defaultValue(2) .onChanged(aDouble -> calculateSize()) @@ -91,14 +84,12 @@ public class PlayerModelHud extends HudElement { private final Setting background = sgBackground.add(new BoolSetting.Builder() .name("background") - .description("Displays background.") .defaultValue(false) .build() ); private final Setting backgroundColor = sgBackground.add(new ColorSetting.Builder() .name("background-color") - .description("Color used for the background.") .visible(background::get) .defaultValue(new SettingColor(25, 25, 25, 50)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/PlayerRadarHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/PlayerRadarHud.java index c2908620f3..b19bcdf37c 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/PlayerRadarHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/PlayerRadarHud.java @@ -24,14 +24,13 @@ public class PlayerRadarHud extends HudElement { public static final HudElementInfo INFO = new HudElementInfo<>(Hud.GROUP, "player-radar", "Displays players in your visual range.", PlayerRadarHud::new); private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgScale = settings.createGroup("Scale"); - private final SettingGroup sgBackground = settings.createGroup("Background"); + private final SettingGroup sgScale = settings.createGroup("scale"); + private final SettingGroup sgBackground = settings.createGroup("background"); // General private final Setting limit = sgGeneral.add(new IntSetting.Builder() .name("limit") - .description("The max number of players to show.") .defaultValue(10) .min(1) .sliderRange(1, 20) @@ -40,49 +39,42 @@ public class PlayerRadarHud extends HudElement { private final Setting distance = sgGeneral.add(new BoolSetting.Builder() .name("distance") - .description("Shows the distance to the player next to their name.") .defaultValue(false) .build() ); private final Setting friends = sgGeneral.add(new BoolSetting.Builder() .name("display-friends") - .description("Whether to show friends or not.") .defaultValue(true) .build() ); private final Setting shadow = sgGeneral.add(new BoolSetting.Builder() .name("shadow") - .description("Renders shadow behind text.") .defaultValue(true) .build() ); private final Setting primaryColor = sgGeneral.add(new ColorSetting.Builder() .name("primary-color") - .description("Primary color.") .defaultValue(new SettingColor()) .build() ); private final Setting secondaryColor = sgGeneral.add(new ColorSetting.Builder() .name("secondary-color") - .description("Secondary color.") .defaultValue(new SettingColor(175, 175, 175)) .build() ); private final Setting alignment = sgGeneral.add(new EnumSetting.Builder() .name("alignment") - .description("Horizontal alignment.") .defaultValue(Alignment.Auto) .build() ); private final Setting border = sgGeneral.add(new IntSetting.Builder() .name("border") - .description("How much space to add around the element.") .defaultValue(0) .build() ); @@ -91,14 +83,12 @@ public class PlayerRadarHud extends HudElement { private final Setting customScale = sgScale.add(new BoolSetting.Builder() .name("custom-scale") - .description("Applies a custom scale to this hud element.") .defaultValue(false) .build() ); private final Setting scale = sgScale.add(new DoubleSetting.Builder() .name("scale") - .description("Custom scale.") .visible(customScale::get) .defaultValue(1) .min(0.5) @@ -110,14 +100,12 @@ public class PlayerRadarHud extends HudElement { private final Setting background = sgBackground.add(new BoolSetting.Builder() .name("background") - .description("Displays background.") .defaultValue(false) .build() ); private final Setting backgroundColor = sgBackground.add(new ColorSetting.Builder() .name("background-color") - .description("Color used for the background.") .visible(background::get) .defaultValue(new SettingColor(25, 25, 25, 50)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/PotionTimersHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/PotionTimersHud.java index 33101ee694..94016aaf07 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/PotionTimersHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/PotionTimersHud.java @@ -25,34 +25,30 @@ public class PotionTimersHud extends HudElement { public static final HudElementInfo INFO = new HudElementInfo<>(Hud.GROUP, "potion-timers", "Displays active potion effects with timers.", PotionTimersHud::new); private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgScale = settings.createGroup("Scale"); - private final SettingGroup sgBackground = settings.createGroup("Background"); + private final SettingGroup sgScale = settings.createGroup("scale"); + private final SettingGroup sgBackground = settings.createGroup("background"); // General private final Setting> hiddenEffects = sgGeneral.add(new StatusEffectListSetting.Builder() .name("hidden-effects") - .description("Which effects not to show in the list.") .build() ); private final Setting showAmbient = sgGeneral.add(new BoolSetting.Builder() .name("show-ambient") - .description("Whether to show ambient effects like from beacons and conduits.") .defaultValue(true) .build() ); private final Setting colorMode = sgGeneral.add(new EnumSetting.Builder() .name("color-mode") - .description("What color to use for effects.") .defaultValue(ColorMode.Effect) .build() ); private final Setting flatColor = sgGeneral.add(new ColorSetting.Builder() .name("flat-color") - .description("Color for flat color mode.") .defaultValue(new SettingColor(225, 25, 25)) .visible(() -> colorMode.get() == ColorMode.Flat) .build() @@ -60,7 +56,6 @@ public class PotionTimersHud extends HudElement { private final Setting rainbowSpeed = sgGeneral.add(new DoubleSetting.Builder() .name("rainbow-speed") - .description("Rainbow speed of rainbow color mode.") .defaultValue(0.05) .sliderMin(0.01) .sliderMax(0.2) @@ -71,7 +66,6 @@ public class PotionTimersHud extends HudElement { private final Setting rainbowSpread = sgGeneral.add(new DoubleSetting.Builder() .name("rainbow-spread") - .description("Rainbow spread of rainbow color mode.") .defaultValue(0.01) .sliderMin(0.001) .sliderMax(0.05) @@ -82,7 +76,6 @@ public class PotionTimersHud extends HudElement { private final Setting rainbowSaturation = sgGeneral.add(new DoubleSetting.Builder() .name("rainbow-saturation") - .description("Saturation of rainbow color mode.") .defaultValue(1.0d) .sliderRange(0.0d, 1.0d) .visible(() -> colorMode.get() == ColorMode.Rainbow) @@ -91,7 +84,6 @@ public class PotionTimersHud extends HudElement { private final Setting rainbowBrightness = sgGeneral.add(new DoubleSetting.Builder() .name("rainbow-brightness") - .description("Brightness of rainbow color mode.") .defaultValue(1.0d) .sliderRange(0.0d, 1.0d) .visible(() -> colorMode.get() == ColorMode.Rainbow) @@ -100,21 +92,18 @@ public class PotionTimersHud extends HudElement { private final Setting shadow = sgGeneral.add(new BoolSetting.Builder() .name("shadow") - .description("Renders shadow behind text.") .defaultValue(true) .build() ); private final Setting alignment = sgGeneral.add(new EnumSetting.Builder() .name("alignment") - .description("Horizontal alignment.") .defaultValue(Alignment.Auto) .build() ); private final Setting border = sgGeneral.add(new IntSetting.Builder() .name("border") - .description("How much space to add around the element.") .defaultValue(0) .build() ); @@ -123,14 +112,12 @@ public class PotionTimersHud extends HudElement { private final Setting customScale = sgScale.add(new BoolSetting.Builder() .name("custom-scale") - .description("Applies a custom scale to this hud element.") .defaultValue(false) .build() ); private final Setting scale = sgScale.add(new DoubleSetting.Builder() .name("scale") - .description("Custom scale.") .visible(customScale::get) .defaultValue(1) .min(0.5) @@ -142,14 +129,12 @@ public class PotionTimersHud extends HudElement { private final Setting background = sgBackground.add(new BoolSetting.Builder() .name("background") - .description("Displays background.") .defaultValue(false) .build() ); private final Setting backgroundColor = sgBackground.add(new ColorSetting.Builder() .name("background-color") - .description("Color used for the background.") .visible(background::get) .defaultValue(new SettingColor(25, 25, 25, 50)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/TextHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/TextHud.java index 659b38742f..97d81b9f98 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/TextHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/TextHud.java @@ -27,9 +27,9 @@ public class TextHud extends HudElement { private static final Color WHITE = new Color(); private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgShown = settings.createGroup("Shown"); - private final SettingGroup sgScale = settings.createGroup("Scale"); - private final SettingGroup sgBackground = settings.createGroup("Background"); + private final SettingGroup sgShown = settings.createGroup("shown"); + private final SettingGroup sgScale = settings.createGroup("scale"); + private final SettingGroup sgBackground = settings.createGroup("background"); private double originalWidth, originalHeight; private boolean needsCompile, recalculateSize; @@ -40,7 +40,6 @@ public class TextHud extends HudElement { public final Setting text = sgGeneral.add(new StringSetting.Builder() .name("text") - .description("Text to display with Starscript.") .defaultValue(MeteorClient.NAME) .onChanged(s -> recompile()) .wide() @@ -50,7 +49,6 @@ public class TextHud extends HudElement { public final Setting updateDelay = sgGeneral.add(new IntSetting.Builder() .name("update-delay") - .description("Update delay in ticks") .defaultValue(4) .onChanged(integer -> { if (timer > integer) timer = integer; @@ -61,7 +59,6 @@ public class TextHud extends HudElement { public final Setting shadow = sgGeneral.add(new BoolSetting.Builder() .name("shadow") - .description("Renders shadow behind text.") .defaultValue(true) .onChanged(aBoolean -> recalculateSize = true) .build() @@ -69,7 +66,6 @@ public class TextHud extends HudElement { public final Setting border = sgGeneral.add(new IntSetting.Builder() .name("border") - .description("How much space to add around the text.") .defaultValue(0) .onChanged(integer -> super.setSize(originalWidth + integer * 2, originalHeight + integer * 2)) .build() @@ -79,7 +75,6 @@ public class TextHud extends HudElement { public final Setting shown = sgShown.add(new EnumSetting.Builder() .name("shown") - .description("When this text element is shown.") .defaultValue(Shown.Always) .onChanged(s -> recompile()) .build() @@ -87,7 +82,6 @@ public class TextHud extends HudElement { public final Setting condition = sgShown.add(new StringSetting.Builder() .name("condition") - .description("Condition to check when shown is not Always.") .visible(() -> shown.get() != Shown.Always) .onChanged(s -> recompile()) .renderer(StarscriptTextBoxRenderer.class) @@ -98,7 +92,6 @@ public class TextHud extends HudElement { public final Setting customScale = sgScale.add(new BoolSetting.Builder() .name("custom-scale") - .description("Applies a custom scale to this hud element.") .defaultValue(false) .onChanged(aBoolean -> recalculateSize = true) .build() @@ -106,7 +99,6 @@ public class TextHud extends HudElement { public final Setting scale = sgScale.add(new DoubleSetting.Builder() .name("scale") - .description("Custom scale.") .visible(customScale::get) .defaultValue(1) .onChanged(aDouble -> recalculateSize = true) @@ -119,14 +111,12 @@ public class TextHud extends HudElement { public final Setting background = sgBackground.add(new BoolSetting.Builder() .name("background") - .description("Displays background.") .defaultValue(false) .build() ); public final Setting backgroundColor = sgBackground.add(new ColorSetting.Builder() .name("background-color") - .description("Color used for the background.") .visible(background::get) .defaultValue(new SettingColor(25, 25, 25, 50)) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/screens/HudElementScreen.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/screens/HudElementScreen.java index 3b8c03b450..709e4b70cd 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/screens/HudElementScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/screens/HudElementScreen.java @@ -37,10 +37,9 @@ public HudElementScreen(GuiTheme theme, HudElement element) { this.element = element; settings = new Settings("hud.base"); - SettingGroup sg = settings.createGroup("Anchors"); + SettingGroup sg = settings.createGroup("anchors"); sg.add(new BoolSetting.Builder() .name("auto-anchors") - .description("Automatically assigns anchors based on the position.") .defaultValue(true) .onModuleActivated(booleanSetting -> booleanSetting.set(element.autoAnchors)) .onChanged(aBoolean -> { @@ -51,7 +50,6 @@ public HudElementScreen(GuiTheme theme, HudElement element) { ); sg.add(new EnumSetting.Builder() .name("x-anchor") - .description("Horizontal anchor.") .defaultValue(XAnchor.Left) .visible(() -> !element.autoAnchors) .onModuleActivated(xAnchorSetting -> xAnchorSetting.set(element.box.xAnchor)) @@ -60,7 +58,6 @@ public HudElementScreen(GuiTheme theme, HudElement element) { ); sg.add(new EnumSetting.Builder() .name("y-anchor") - .description("Vertical anchor.") .defaultValue(YAnchor.Top) .visible(() -> !element.autoAnchors) .onModuleActivated(yAnchorSetting -> yAnchorSetting.set(element.box.yAnchor)) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/macros/Macro.java b/src/main/java/meteordevelopment/meteorclient/systems/macros/Macro.java index c7249a8a5f..29fc08d3a9 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/macros/Macro.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/macros/Macro.java @@ -28,13 +28,11 @@ public class Macro implements ISerializable { public Setting name = sgGeneral.add(new StringSetting.Builder() .name("name") - .description("The name of the macro.") .build() ); public Setting> messages = sgGeneral.add(new StringListSetting.Builder() .name("messages") - .description("The messages for the macro to send.") .onChanged(v -> dirty = true) .renderer(StarscriptTextBoxRenderer.class) .build() @@ -42,7 +40,6 @@ public class Macro implements ISerializable { public Setting keybind = sgGeneral.add(new KeybindSetting.Builder() .name("keybind") - .description("The bind to run the macro.") .build() ); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/blockesp/ESPBlockDataScreen.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/blockesp/ESPBlockDataScreen.java index 631a052bbc..8f1bc3df4d 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/blockesp/ESPBlockDataScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/blockesp/ESPBlockDataScreen.java @@ -38,11 +38,10 @@ private ESPBlockDataScreen(GuiTheme theme, ESPBlockData blockData, Setting se public void initWidgets() { Settings settings = new Settings("module.block-esp.data"); SettingGroup sgGeneral = settings.getDefaultGroup(); - SettingGroup sgTracer = settings.createGroup("Tracer"); + SettingGroup sgTracer = settings.createGroup("tracer"); sgGeneral.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shape is rendered.") .defaultValue(ShapeMode.Lines) .onModuleActivated(shapeModeSetting -> shapeModeSetting.set(blockData.shapeMode)) .onChanged(shapeMode -> { @@ -56,7 +55,6 @@ public void initWidgets() { sgGeneral.add(new ColorSetting.Builder() .name("line-color") - .description("Color of lines.") .defaultValue(new SettingColor(0, 255, 200)) .onModuleActivated(settingColorSetting -> settingColorSetting.get().set(blockData.lineColor)) .onChanged(settingColor -> { @@ -70,7 +68,6 @@ public void initWidgets() { sgGeneral.add(new ColorSetting.Builder() .name("side-color") - .description("Color of sides.") .defaultValue(new SettingColor(0, 255, 200, 25)) .onModuleActivated(settingColorSetting -> settingColorSetting.get().set(blockData.sideColor)) .onChanged(settingColor -> { @@ -84,7 +81,6 @@ public void initWidgets() { sgTracer.add(new BoolSetting.Builder() .name("tracer") - .description("If tracer line is allowed to this block.") .defaultValue(true) .onModuleActivated(booleanSetting -> booleanSetting.set(blockData.tracer)) .onChanged(aBoolean -> { @@ -98,7 +94,6 @@ public void initWidgets() { sgTracer.add(new ColorSetting.Builder() .name("tracer-color") - .description("Color of tracer line.") .defaultValue(new SettingColor(0, 255, 200, 125)) .onModuleActivated(settingColorSetting -> settingColorSetting.get().set(blockData.tracerColor)) .onChanged(settingColor -> { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/BaseMarker.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/BaseMarker.java index b4db8dad09..15787c67f0 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/BaseMarker.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/BaseMarker.java @@ -16,6 +16,8 @@ import net.minecraft.client.gui.screen.Screen; import net.minecraft.nbt.NbtCompound; +import java.util.Locale; + public abstract class BaseMarker implements ISerializable { public final Settings settings; @@ -27,26 +29,23 @@ public abstract class BaseMarker implements ISerializable { private final Setting active; public BaseMarker(String type) { - this.settings = new Settings(type); + this.settings = new Settings("marker." + type.toLowerCase(Locale.ROOT)); - this.sgBase = settings.createGroup("Base"); + this.sgBase = settings.createGroup("base"); this.name = sgBase.add(new StringSetting.Builder() .name("name") - .description("Custom name for this marker.") .build() ); this.name.set(type); this.description = sgBase.add(new StringSetting.Builder() .name("description") - .description("Custom description for this marker.") .build() ); this.dimension = sgBase.add(new EnumSetting.Builder() .name("dimension") - .description("In which dimension this marker should be visible.") .defaultValue(Dimension.Overworld) .build() ); @@ -54,7 +53,6 @@ public BaseMarker(String type) { this.active = sgBase.add(new BoolSetting.Builder() .name("active") - .description("Is this marker visible.") .defaultValue(false) .build() ); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/CuboidMarker.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/CuboidMarker.java index e869df4538..641700160f 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/CuboidMarker.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/CuboidMarker.java @@ -20,19 +20,17 @@ public enum Mode { } private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("Render"); + private final SettingGroup sgRender = settings.createGroup("render"); // General private final Setting pos1 = sgGeneral.add(new BlockPosSetting.Builder() .name("pos-1") - .description("1st corner of the cuboid") .build() ); private final Setting pos2 = sgGeneral.add(new BlockPosSetting.Builder() .name("pos-2") - .description("2nd corner of the cuboid") .build() ); @@ -40,28 +38,24 @@ public enum Mode { private final Setting mode = sgRender.add(new EnumSetting.Builder() .name("mode") - .description("What mode to use for this marker.") .defaultValue(Mode.Full) .build() ); private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") - .description("The color of the sides of the blocks being rendered.") .defaultValue(new SettingColor(0, 100, 255, 50)) .build() ); private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") - .description("The color of the lines of the blocks being rendered.") .defaultValue(new SettingColor(0, 100, 255, 255)) .build() ); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/Marker.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/Marker.java index 8c7a8a42bf..2da228c5a4 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/Marker.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/Marker.java @@ -27,7 +27,7 @@ import java.util.ArrayList; public class Marker extends Module { - private final MarkerFactory factory = new MarkerFactory(); + public final MarkerFactory factory = new MarkerFactory(); private final ArrayList markers = new ArrayList<>(); public Marker() { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/Sphere2dMarker.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/Sphere2dMarker.java index 53b57e9a48..ca7faee222 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/Sphere2dMarker.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/marker/Sphere2dMarker.java @@ -33,19 +33,17 @@ public Block(int x, int y, int z) { public static final String type = "Sphere-2D"; private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgRender = settings.createGroup("Render"); - private final SettingGroup sgKeybinding = settings.createGroup("Keybinding"); + private final SettingGroup sgRender = settings.createGroup("render"); + private final SettingGroup sgBind = settings.createGroup("bind"); private final Setting center = sgGeneral.add(new BlockPosSetting.Builder() .name("center") - .description("Center of the sphere") .onChanged(bp -> dirty = true) .build() ); private final Setting radius = sgGeneral.add(new IntSetting.Builder() .name("radius") - .description("Radius of the sphere") .defaultValue(20) .min(1) .noSlider() @@ -55,7 +53,6 @@ public Block(int x, int y, int z) { private final Setting layer = sgGeneral.add(new IntSetting.Builder() .name("layer") - .description("Which layer to render") .defaultValue(0) .min(0) .noSlider() @@ -67,14 +64,12 @@ public Block(int x, int y, int z) { private final Setting limitRenderRange = sgRender.add(new BoolSetting.Builder() .name("limit-render-range") - .description("Whether to limit rendering range (useful in very large circles)") .defaultValue(false) .build() ); private final Setting renderRange = sgRender.add(new IntSetting.Builder() .name("render-range") - .description("Rendering range") .defaultValue(10) .min(1) .sliderRange(1, 20) @@ -84,21 +79,18 @@ public Block(int x, int y, int z) { private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() .name("shape-mode") - .description("How the shapes are rendered.") .defaultValue(ShapeMode.Both) .build() ); private final Setting sideColor = sgRender.add(new ColorSetting.Builder() .name("side-color") - .description("The color of the sides of the blocks being rendered.") .defaultValue(new SettingColor(0, 100, 255, 50)) .build() ); private final Setting lineColor = sgRender.add(new ColorSetting.Builder() .name("line-color") - .description("The color of the lines of the blocks being rendered.") .defaultValue(new SettingColor(0, 100, 255, 255)) .build() ); @@ -106,9 +98,8 @@ public Block(int x, int y, int z) { // Keybinding @SuppressWarnings("unused") - private final Setting nextLayerKey = sgKeybinding.add(new KeybindSetting.Builder() + private final Setting nextLayerKey = sgBind.add(new KeybindSetting.Builder() .name("next-layer-keybind") - .description("Keybind to increment layer") .action(() -> { if (isVisible() && layer.get() < radius.get() * 2) layer.set(layer.get() + 1); }) @@ -116,9 +107,8 @@ public Block(int x, int y, int z) { ); @SuppressWarnings("unused") - private final Setting prevLayerKey = sgKeybinding.add(new KeybindSetting.Builder() + private final Setting prevLayerKey = sgBind.add(new KeybindSetting.Builder() .name("prev-layer-keybind") - .description("Keybind to increment layer") .action(() -> { if (isVisible()) layer.set(layer.get() - 1); }) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/profiles/Profile.java b/src/main/java/meteordevelopment/meteorclient/systems/profiles/Profile.java index 3956307408..8c180ef6de 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/profiles/Profile.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/profiles/Profile.java @@ -26,46 +26,40 @@ public class Profile implements ISerializable { public final Settings settings = new Settings("profile"); private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgSave = settings.createGroup("Save"); + private final SettingGroup sgSave = settings.createGroup("save"); public Setting name = sgGeneral.add(new StringSetting.Builder() .name("name") - .description("The name of the profile.") .filter(Utils::nameFilter) .build() ); public Setting> loadOnJoin = sgGeneral.add(new StringListSetting.Builder() .name("load-on-join") - .description("Which servers to set this profile as active when joining.") .filter(Utils::ipFilter) .build() ); public Setting hud = sgSave.add(new BoolSetting.Builder() .name("hud") - .description("Whether the profile should save hud.") .defaultValue(false) .build() ); public Setting macros = sgSave.add(new BoolSetting.Builder() .name("macros") - .description("Whether the profile should save macros.") .defaultValue(false) .build() ); public Setting modules = sgSave.add(new BoolSetting.Builder() .name("modules") - .description("Whether the profile should save modules.") .defaultValue(false) .build() ); public Setting waypoints = sgSave.add(new BoolSetting.Builder() .name("waypoints") - .description("Whether the profile should save waypoints.") .defaultValue(false) .build() ); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/proxies/Proxies.java b/src/main/java/meteordevelopment/meteorclient/systems/proxies/Proxies.java index 5d1abd3918..fdc19abd75 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/proxies/Proxies.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/proxies/Proxies.java @@ -19,12 +19,11 @@ public class Proxies extends System implements Iterable { public final Settings settings = new Settings("proxies"); - private final SettingGroup sgRefreshing = settings.createGroup("Refreshing"); - private final SettingGroup sgCleanup = settings.createGroup("Cleanup"); + private final SettingGroup sgRefreshing = settings.createGroup("refreshing"); + private final SettingGroup sgCleanup = settings.createGroup("cleanup"); private final Setting threads = sgRefreshing.add(new IntSetting.Builder() .name("threads") - .description("The number of concurrent threads to check proxies with.") .defaultValue(8) .min(0) .sliderRange(0, 32) @@ -33,7 +32,6 @@ public class Proxies extends System implements Iterable { public final Setting timeout = sgRefreshing.add(new IntSetting.Builder() .name("timeout") - .description("The timeout in milliseconds for checking proxies.") .defaultValue(5000) .min(0) .sliderRange(0, 15000) @@ -42,7 +40,6 @@ public class Proxies extends System implements Iterable { private final Setting tries = sgRefreshing.add(new IntSetting.Builder() .name("retries-on-timeout") - .description("How many additional times to check a proxy if the check times out.") .defaultValue(1) .min(0) .sliderRange(0, 5) @@ -51,21 +48,18 @@ public class Proxies extends System implements Iterable { private final Setting sort = sgCleanup.add(new BoolSetting.Builder() .name("sort-by-latency") - .description("Whether to sort the proxy list by latency.") .defaultValue(true) .build() ); private final Setting pruneDead = sgCleanup.add(new BoolSetting.Builder() .name("prune-dead") - .description("Whether to prune dead proxies.") .defaultValue(true) .build() ); private final Setting pruneLatency = sgCleanup.add(new IntSetting.Builder() .name("prune-by-latency") - .description("Prune proxies at or above this latency in ms. 0 to disable.") .defaultValue(2000) .min(0) .sliderRange(0, 10000) @@ -74,7 +68,6 @@ public class Proxies extends System implements Iterable { private final Setting pruneExcess = sgCleanup.add(new IntSetting.Builder() .name("prune-to-count") - .description("If in excess, prune the number of proxies to this count. 0 to disable. Prioritises by latency.") .defaultValue(0) .sliderRange(0, 25) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/systems/proxies/Proxy.java b/src/main/java/meteordevelopment/meteorclient/systems/proxies/Proxy.java index 92d246f21e..54b15ec81b 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/proxies/Proxy.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/proxies/Proxy.java @@ -28,31 +28,27 @@ public class Proxy implements ISerializable { public final Settings settings = new Settings("proxy"); private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final SettingGroup sgOptional = settings.createGroup("Optional"); + private final SettingGroup sgOptional = settings.createGroup("optional"); public Setting name = sgGeneral.add(new StringSetting.Builder() .name("name") - .description("The name of the proxy.") .build() ); public Setting type = sgGeneral.add(new EnumSetting.Builder() .name("type") - .description("The type of proxy.") .defaultValue(ProxyType.Socks5) .build() ); public Setting address = sgGeneral.add(new StringSetting.Builder() .name("address") - .description("The ip address of the proxy.") .filter(Utils::ipFilter) .build() ); public Setting port = sgGeneral.add(new IntSetting.Builder() .name("port") - .description("The port of the proxy.") .defaultValue(0) .range(0, 65535) .sliderMax(65535) @@ -62,7 +58,6 @@ public class Proxy implements ISerializable { public Setting enabled = sgGeneral.add(new BoolSetting.Builder() .name("enabled") - .description("Whether the proxy is enabled.") .defaultValue(true) .build() ); @@ -71,13 +66,11 @@ public class Proxy implements ISerializable { public Setting username = sgOptional.add(new StringSetting.Builder() .name("username") - .description("The username of the proxy.") .build() ); public Setting password = sgOptional.add(new StringSetting.Builder() .name("password") - .description("The password of the proxy.") .visible(() -> type.get().equals(ProxyType.Socks5)) .build() ); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/waypoints/Waypoint.java b/src/main/java/meteordevelopment/meteorclient/systems/waypoints/Waypoint.java index ee862a39a3..b13212b4bf 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/waypoints/Waypoint.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/waypoints/Waypoint.java @@ -25,8 +25,8 @@ public class Waypoint implements ISerializable { public final Settings settings = new Settings("waypoint"); - private final SettingGroup sgVisual = settings.createGroup("Visual"); - private final SettingGroup sgPosition = settings.createGroup("Position"); + private final SettingGroup sgVisual = settings.createGroup("visual"); + private final SettingGroup sgPosition = settings.createGroup("position"); public enum NearAction { Disabled, Hide, Delete @@ -34,14 +34,12 @@ public enum NearAction { public Setting name = sgVisual.add(new StringSetting.Builder() .name("name") - .description("The name of the waypoint.") .defaultValue("Home") .build() ); public Setting icon = sgVisual.add(new ProvidedStringSetting.Builder() .name("icon") - .description("The icon of the waypoint.") .defaultValue("Square") .supplier(() -> Waypoints.BUILTIN_ICONS) .onChanged(v -> validateIcon()) @@ -50,49 +48,42 @@ public enum NearAction { public Setting color = sgVisual.add(new ColorSetting.Builder() .name("color") - .description("The color of the waypoint.") .defaultValue(MeteorClient.ADDON.color.toSetting()) .build() ); public Setting visible = sgVisual.add(new BoolSetting.Builder() .name("visible") - .description("Whether to show the waypoint.") .defaultValue(true) .build() ); public Setting maxVisible = sgVisual.add(new IntSetting.Builder() .name("max-visible-distance") - .description("How far away to render the waypoint.") .defaultValue(5000) .build() ); public Setting scale = sgVisual.add(new DoubleSetting.Builder() .name("scale") - .description("The scale of the waypoint.") .defaultValue(1.5) .build() ); public Setting pos = sgPosition.add(new BlockPosSetting.Builder() .name("location") - .description("The location of the waypoint.") .defaultValue(BlockPos.ORIGIN) .build() ); public Setting dimension = sgPosition.add(new EnumSetting.Builder() .name("dimension") - .description("Which dimension the waypoint is in.") .defaultValue(Dimension.Overworld) .build() ); public Setting opposite = sgPosition.add(new BoolSetting.Builder() .name("opposite-dimension") - .description("Whether to show the waypoint in the opposite dimension.") .defaultValue(true) .visible(() -> dimension.get() != Dimension.End) .build() @@ -100,14 +91,12 @@ public enum NearAction { public Setting actionWhenNear = sgPosition.add(new EnumSetting.Builder() .name("action-when-near") - .description("Action to be performed when the player is near.") .defaultValue(NearAction.Disabled) .build() ); public Setting actionWhenNearDistance = sgPosition.add(new IntSetting.Builder() .name("action-when-near-distance") - .description("How close (in blocks) the player has to be for the near action to be performed.") .defaultValue(8) .sliderRange(0, 32) .visible(() -> actionWhenNear.get() != NearAction.Disabled) diff --git a/src/main/resources/assets/meteor-client/language/en_gb.json b/src/main/resources/assets/meteor-client/language/en_gb.json index 718c010de5..7e700764dc 100644 --- a/src/main/resources/assets/meteor-client/language/en_gb.json +++ b/src/main/resources/assets/meteor-client/language/en_gb.json @@ -1,5 +1,5 @@ { - "meteor.lang.translators" : "MeteorDevelopment", + "meteor.lang.translators": "MeteorDevelopment", "meteor.key.category": "Meteor Client", "meteor.key.open-commands": "Open Commands", @@ -74,6 +74,501 @@ "command.wasp.info.target": "%s set as target.", "command.waypoint.description": "Manages waypoints.", + "config.visual.custom-font": "Custom Font", + "config.visual.custom-font.description": "Use a custom font.", + "config.visual.font": "Font", + "config.visual.font.description": "Custom font to use.", + "config.visual.rainbow-speed": "Rainbow Speed", + "config.visual.rainbow-speed.description": "The global rainbow speed.", + "config.visual.title-screen-credits": "Title Screen Credits", + "config.visual.title-screen-credits.description": "Show Meteor credits on title screen", + "config.visual.title-screen-splashes": "Title Screen Splashes", + "config.visual.title-screen-splashes.description": "Show Meteor splash texts on title screen", + "config.visual.custom-window-title": "Custom Window Title", + "config.visual.custom-window-title.description": "Show custom text in the window title.", + "config.visual.window-title-text": "Window Title Text", + "config.visual.window-title-text.description": "The text it displays in the window title.", + "config.visual.friend-color": "Friend Color", + "config.visual.friend-color.description": "The color used to show friends.", + "config.visual.sync-list-setting-widths": "Sync List Setting Widths", + "config.visual.sync-list-setting-widths.description": "Prevents the list setting screens from moving around as you add & remove elements.", + "config.modules.hidden-modules": "Hidden Modules", + "config.modules.hidden-modules.description": "Prevent these modules from being rendered as options in the clickgui.", + "config.modules.module-search-count": "Module Search Count", + "config.modules.module-search-count.description": "Amount of modules and settings to be shown in the module search bar.", + "config.modules.search-module-aliases": "Search Module Aliases", + "config.modules.search-module-aliases.description": "Whether or not module aliases will be used in the module search bar.", + "config.chat.prefix": "Prefix", + "config.chat.prefix.description": "Prefix.", + "config.chat.chat-feedback": "Chat Feedback", + "config.chat.chat-feedback.description": "Sends chat feedback when meteor performs certain actions.", + "config.chat.delete-chat-feedback": "Delete Chat Feedback", + "config.chat.delete-chat-feedback.description": "Delete previous matching chat feedback to keep chat clear.", + "config.misc.rotation-hold": "Rotation Hold", + "config.misc.rotation-hold.description": "Hold long to hold server side rotation when not sending any packets.", + "config.misc.use-team-color": "Use Team Color", + "config.misc.use-team-color.description": "Uses player's team color for rendering things like esp and tracers.", + + "hud.general.custom-font": "Custom Font", + "hud.general.custom-font.description": "Text will use custom font.", + "hud.general.hide-in-menus": "Hide In Menus", + "hud.general.hide-in-menus.description": "Hides the meteor hud when in inventory screens or game menus.", + "hud.general.text-scale": "Text Scale", + "hud.general.text-scale.description": "Scale of text if not overridden by the element.", + "hud.general.text-colors": "Text Colors", + "hud.general.text-colors.description": "Colors used for the Text element.", + "hud.editor.border": "Border", + "hud.editor.border.description": "Space around the edges of the screen.", + "hud.editor.snapping-range": "Snapping Range", + "hud.editor.snapping-range.description": "Snapping range in editor.", + "hud.bind.bind": "Bind", + "hud.bind.bind.description": "Keybind for toggling the hud", + + "hud.base.anchors.auto-anchors": "Automatically assigns anchors based on the position.", + "hud.base.anchors.x-anchor": "Horizontal anchor.", + "hud.base.anchors.y-anchor": "Vertical anchor.", + + "hud.active-modules.general.sort": "Sort", + "hud.active-modules.general.sort.description": "How to sort active modules.", + "hud.active-modules.general.hidden-modules": "Hidden Modules", + "hud.active-modules.general.hidden-modules.description": "Which modules not to show in the list.", + "hud.active-modules.general.module-info": "Module Info", + "hud.active-modules.general.module-info.description": "Shows info from the module next to the name in the active modules list.", + "hud.active-modules.general.show-keybind": "Show Keybind", + "hud.active-modules.general.show-keybind.description": "Shows the module's keybind next to its name.", + "hud.active-modules.general.shadow": "Shadow", + "hud.active-modules.general.shadow.description": "Renders shadow behind text.", + "hud.active-modules.general.outlines": "Outlines", + "hud.active-modules.general.outlines.description": "Whether or not to render outlines", + "hud.active-modules.general.outline-width": "Outline Width", + "hud.active-modules.general.outline-width.description": "Outline width", + "hud.active-modules.general.alignment": "Alignment", + "hud.active-modules.general.alignment.description": "Horizontal alignment.", + "hud.active-modules.color.color-mode": "Color Mode", + "hud.active-modules.color.color-mode.description": "What color to use for active modules.", + "hud.active-modules.color.flat-color": "Flat Color", + "hud.active-modules.color.flat-color.description": "Color for flat color mode.", + "hud.active-modules.color.rainbow-speed": "Rainbow Speed", + "hud.active-modules.color.rainbow-speed.description": "Rainbow speed of rainbow color mode.", + "hud.active-modules.color.rainbow-spread": "Rainbow Spread", + "hud.active-modules.color.rainbow-spread.description": "Rainbow spread of rainbow color mode.", + "hud.active-modules.color.rainbow-saturation": "Rainbow Saturation", + "hud.active-modules.color.rainbow-saturation.description": "", + "hud.active-modules.color.rainbow-brightness": "Rainbow Brightness", + "hud.active-modules.color.rainbow-brightness.description": "", + "hud.active-modules.color.module-info-color": "Module Info Color", + "hud.active-modules.color.module-info-color.description": "Color of module info text.", + "hud.active-modules.scale.custom-scale": "Custom Scale", + "hud.active-modules.scale.custom-scale.description": "Applies a custom scale to this hud element.", + "hud.active-modules.scale.scale": "Scale", + "hud.active-modules.scale.scale.description": "Custom scale.", + "hud.active-modules.background.background": "Background", + "hud.active-modules.background.background.description": "Displays background.", + "hud.active-modules.background.background-color": "Background Color", + "hud.active-modules.background.background-color.description": "Color used for the background.", + "hud.armor.general.orientation": "Orientation", + "hud.armor.general.orientation.description": "How to display armor.", + "hud.armor.general.flip-order": "Flip Order", + "hud.armor.general.flip-order.description": "Flips the order of armor items.", + "hud.armor.general.show-empty": "Show Empty", + "hud.armor.general.show-empty.description": "Renders barrier icons for empty slots.", + "hud.armor.durability.durability": "Durability", + "hud.armor.durability.durability.description": "How to display armor durability.", + "hud.armor.durability.durability-color": "Durability Color", + "hud.armor.durability.durability-color.description": "Color of the text.", + "hud.armor.durability.durability-shadow": "Durability Shadow", + "hud.armor.durability.durability-shadow.description": "Text shadow.", + "hud.armor.scale.custom-scale": "Custom Scale", + "hud.armor.scale.custom-scale.description": "Applies a custom scale to this hud element.", + "hud.armor.scale.scale": "Scale", + "hud.armor.scale.scale.description": "Custom scale.", + "hud.armor.background.background": "Background", + "hud.armor.background.background.description": "Displays background.", + "hud.armor.background.background-color": "Background Color", + "hud.armor.background.background-color.description": "Color used for the background.", + "hud.combat.general.range": "Range", + "hud.combat.general.range.description": "The range to target players.", + "hud.combat.enchantments.displayed-enchantments": "Displayed Enchantments", + "hud.combat.enchantments.displayed-enchantments.description": "The enchantments that are shown on nametags.", + "hud.combat.enchantments.enchantment-color": "Enchantment Color", + "hud.combat.enchantments.enchantment-color.description": "Color of enchantment text.", + "hud.combat.health.health-stage-1": "Health Stage 1", + "hud.combat.health.health-stage-1.description": "The color on the left of the health gradient.", + "hud.combat.health.health-stage-2": "Health Stage 2", + "hud.combat.health.health-stage-2.description": "The color in the middle of the health gradient.", + "hud.combat.health.health-stage-3": "Health Stage 3", + "hud.combat.health.health-stage-3.description": "The color on the right of the health gradient.", + "hud.combat.distance.distance": "Distance", + "hud.combat.distance.distance.description": "Shows the distance between you and the player.", + "hud.combat.distance.distance-stage-1": "Distance Stage 1", + "hud.combat.distance.distance-stage-1.description": "The color when a player is within 10 blocks of you.", + "hud.combat.distance.distance-stage-2": "Distance Stage 2", + "hud.combat.distance.distance-stage-2.description": "The color when a player is within 50 blocks of you.", + "hud.combat.distance.distance-stage-3": "Distance Stage 3", + "hud.combat.distance.distance-stage-3.description": "The color when a player is greater then 50 blocks away from you.", + "hud.combat.ping.ping": "Ping", + "hud.combat.ping.ping.description": "Shows the player's ping.", + "hud.combat.ping.ping-stage-1": "Ping Stage 1", + "hud.combat.ping.ping-stage-1.description": "Color of ping text when under 75.", + "hud.combat.ping.ping-stage-2": "Ping Stage 2", + "hud.combat.ping.ping-stage-2.description": "Color of ping text when between 75 and 200.", + "hud.combat.ping.ping-stage-3": "Ping Stage 3", + "hud.combat.ping.ping-stage-3.description": "Color of ping text when over 200.", + "hud.combat.scale.custom-scale": "Custom Scale", + "hud.combat.scale.custom-scale.description": "Applies a custom scale to this hud element.", + "hud.combat.scale.scale": "Scale", + "hud.combat.scale.scale.description": "Custom scale.", + "hud.combat.background.background": "Background", + "hud.combat.background.background.description": "Displays background.", + "hud.combat.background.background-color": "Background Color", + "hud.combat.background.background-color.description": "Color used for the background.", + "hud.compass.general.type": "Type", + "hud.compass.general.type.description": "Which type of direction information to show.", + "hud.compass.general.color-north": "Color North", + "hud.compass.general.color-north.description": "Color of north.", + "hud.compass.general.color-other": "Color Other", + "hud.compass.general.color-other.description": "Color of other directions.", + "hud.compass.general.shadow": "Shadow", + "hud.compass.general.shadow.description": "Text shadow.", + "hud.compass.scale.custom-scale": "Custom Scale", + "hud.compass.scale.custom-scale.description": "Apply custom scales to this hud element.", + "hud.compass.scale.text-scale": "Text Scale", + "hud.compass.scale.text-scale.description": "Scale to use for the letters.", + "hud.compass.scale.compass-scale": "Compass Scale", + "hud.compass.scale.compass-scale.description": "Scale of the whole HUD element.", + "hud.compass.background.background": "Background", + "hud.compass.background.background.description": "Displays background.", + "hud.compass.background.background-color": "Background Color", + "hud.compass.background.background-color.description": "Color used for the background.", + "hud.hole.general.safe-blocks": "Safe Blocks", + "hud.hole.general.safe-blocks.description": "Which blocks to consider safe.", + "hud.hole.scale.custom-scale": "Custom Scale", + "hud.hole.scale.custom-scale.description": "Applies a custom scale to this hud element.", + "hud.hole.scale.scale": "Scale", + "hud.hole.scale.scale.description": "Custom scale.", + "hud.hole.background.background": "Background", + "hud.hole.background.background.description": "Displays background.", + "hud.hole.background.background-color": "Background Color", + "hud.hole.background.background-color.description": "Color used for the background.", + "hud.inventory.general.containers": "Containers", + "hud.inventory.general.containers.description": "Shows the contents of a container when holding them.", + "hud.inventory.scale.custom-scale": "Custom Scale", + "hud.inventory.scale.custom-scale.description": "Applies a custom scale to this hud element.", + "hud.inventory.scale.scale": "Scale", + "hud.inventory.scale.scale.description": "Custom scale.", + "hud.inventory.background.background": "Background", + "hud.inventory.background.background.description": "Background of inventory viewer.", + "hud.inventory.background.background-color": "Background Color", + "hud.inventory.background.background-color.description": "Color used for the background.", + "hud.item.general.item": "Item", + "hud.item.general.item.description": "Item to display", + "hud.item.general.none-mode": "None Mode", + "hud.item.general.none-mode.description": "How to render the item when you don't have the specified item in your inventory.", + "hud.item.scale.custom-scale": "Custom Scale", + "hud.item.scale.`custom-scale`.description": "Applies a custom scale to this hud element.", + "hud.item.scale.scale": "Scale", + "hud.item.scale.scale.description": "Custom scale.", + "hud.item.background.background": "Background", + "hud.item.background.background.description": "Displays background.", + "hud.item.background.background-color": "Background Color", + "hud.item.background.background-color.description": "Color used for the background.", + "hud.lag-notifier.general.shadow": "Shadow", + "hud.lag-notifier.general.shadow.description": "Text shadow.", + "hud.lag-notifier.general.text-color": "Text Color", + "hud.lag-notifier.general.text-color.description": "A.", + "hud.lag-notifier.general.color-1": "Color 1", + "hud.lag-notifier.general.color-1.description": "First color.", + "hud.lag-notifier.general.color-2": "Color 2", + "hud.lag-notifier.general.color-2.description": "Second color.", + "hud.lag-notifier.general.color-3": "Color 3", + "hud.lag-notifier.general.color-3.description": "Third color.", + "hud.lag-notifier.scale.custom-scale": "Custom Scale", + "hud.lag-notifier.scale.custom-scale.description": "Applies a custom scale to this hud element.", + "hud.lag-notifier.scale.scale": "Scale", + "hud.lag-notifier.scale.scale.description": "Custom scale.", + "hud.lag-notifier.background.background": "Background", + "hud.lag-notifier.background.background.description": "Displays background.", + "hud.lag-notifier.background.background-color": "Background Color", + "hud.lag-notifier.background.background-color.description": "Color used for the background.", + "hud.map.general.mode": "Mode", + "hud.map.general.mode.description": "How to determine which map to render.", + "hud.map.general.slot-index": "Slot Index", + "hud.map.general.slot-index.description": "Which slot to grab the map from.", + "hud.map.general.map-id": "Map Id", + "hud.map.general.map-id.description": "Which map id to render from. Must be in your inventory!", + "hud.map.visual.scale": "Scale", + "hud.map.visual.scale.description": "How big to render the map.", + "hud.map.visual.background": "Background", + "hud.map.visual.background.description": "Displays background.", + "hud.map.visual.background-color": "Background Color", + "hud.map.visual.background-color.description": "Color used for the background.", + "hud.module-infos.general.modules": "Modules", + "hud.module-infos.general.modules.description": "Which modules to display", + "hud.module-infos.general.additional-info": "Additional Info", + "hud.module-infos.general.additional-info.description": "Shows additional info from the module next to the name in the module info list.", + "hud.module-infos.general.text-shadow": "Text Shadow", + "hud.module-infos.general.text-shadow.description": "Renders shadow behind text.", + "hud.module-infos.general.module-color": "Module Color", + "hud.module-infos.general.module-color.description": "Module color.", + "hud.module-infos.general.on-color": "On Color", + "hud.module-infos.general.on-color.description": "Color when module is on.", + "hud.module-infos.general.off-color": "Off Color", + "hud.module-infos.general.off-color.description": "Color when module is off.", + "hud.module-infos.general.alignment": "Alignment", + "hud.module-infos.general.alignment.description": "Horizontal alignment.", + "hud.player-model.general.copy-yaw": "Copy Yaw", + "hud.player-model.general.copy-yaw.description": "Makes the player model's yaw equal to yours.", + "hud.player-model.general.custom-yaw": "Custom Yaw", + "hud.player-model.general.custom-yaw.description": "Custom yaw for when copy yaw is off.", + "hud.player-model.general.copy-pitch": "Copy Pitch", + "hud.player-model.general.copy-pitch.description": "Makes the player model's pitch equal to yours.", + "hud.player-model.general.custom-pitch": "Custom Pitch", + "hud.player-model.general.custom-pitch.description": "Custom pitch for when copy pitch is off.", + "hud.player-model.general.center-orientation": "Center Orientation", + "hud.player-model.general.center-orientation.description": "Which direction the player faces when the HUD model faces directly forward.", + "hud.player-model.scale.custom-scale": "Custom Scale", + "hud.player-model.scale.custom-scale.description": "Applies a custom scale to this hud element.", + "hud.player-model.scale.scale": "Scale", + "hud.player-model.scale.scale.description": "Custom scale.", + "hud.player-model.background.background": "Background", + "hud.player-model.background.background.description": "Displays background.", + "hud.player-model.background.background-color": "Background Color", + "hud.player-model.background.background-color.description": "Color used for the background.", + "hud.player-radar.general.limit": "Limit", + "hud.player-radar.general.limit.description": "The max number of players to show.", + "hud.player-radar.general.distance": "Distance", + "hud.player-radar.general.distance.description": "Shows the distance to the player next to their name.", + "hud.player-radar.general.display-friends": "Display Friends", + "hud.player-radar.general.display-friends.description": "Whether to show friends or not.", + "hud.player-radar.general.shadow": "Shadow", + "hud.player-radar.general.shadow.description": "Renders shadow behind text.", + "hud.player-radar.general.primary-color": "Primary Color", + "hud.player-radar.general.primary-color.description": "Primary color.", + "hud.player-radar.general.secondary-color": "Secondary Color", + "hud.player-radar.general.secondary-color.description": "Secondary color.", + "hud.player-radar.general.alignment": "Alignment", + "hud.player-radar.general.alignment.description": "Horizontal alignment.", + "hud.player-radar.general.border": "Border", + "hud.player-radar.general.border.description": "How much space to add around the element.", + "hud.player-radar.scale.custom-scale": "Custom Scale", + "hud.player-radar.scale.custom-scale.description": "Applies a custom scale to this hud element.", + "hud.player-radar.scale.scale": "Scale", + "hud.player-radar.scale.scale.description": "Custom scale.", + "hud.player-radar.background.background": "Background", + "hud.player-radar.background.background.description": "Displays background.", + "hud.player-radar.background.background-color": "Background Color", + "hud.player-radar.background.background-color.description": "Color used for the background.", + "hud.potion-timers.general.hidden-effects": "Hidden Effects", + "hud.potion-timers.general.hidden-effects.description": "Which effects not to show in the list.", + "hud.potion-timers.general.show-ambient": "Show Ambient", + "hud.potion-timers.general.show-ambient.description": "Whether to show ambient effects like from beacons and conduits.", + "hud.potion-timers.general.color-mode": "Color Mode", + "hud.potion-timers.general.color-mode.description": "What color to use for effects.", + "hud.potion-timers.general.flat-color": "Flat Color", + "hud.potion-timers.general.flat-color.description": "Color for flat color mode.", + "hud.potion-timers.general.rainbow-speed": "Rainbow Speed", + "hud.potion-timers.general.rainbow-speed.description": "Rainbow speed of rainbow color mode.", + "hud.potion-timers.general.rainbow-spread": "Rainbow Spread", + "hud.potion-timers.general.rainbow-spread.description": "Rainbow spread of rainbow color mode.", + "hud.potion-timers.general.rainbow-saturation": "Rainbow Saturation", + "hud.potion-timers.general.rainbow-saturation.description": "Saturation of rainbow color mode.", + "hud.potion-timers.general.rainbow-brightness": "Rainbow Brightness", + "hud.potion-timers.general.rainbow-brightness.description": "Brightness of rainbow color mode.", + "hud.potion-timers.general.shadow": "Shadow", + "hud.potion-timers.general.shadow.description": "Renders shadow behind text.", + "hud.potion-timers.general.alignment": "Alignment", + "hud.potion-timers.general.alignment.description": "Horizontal alignment.", + "hud.potion-timers.general.border": "Border", + "hud.potion-timers.general.border.description": "How much space to add around the element.", + "hud.potion-timers.scale.custom-scale": "Custom Scale", + "hud.potion-timers.scale.custom-scale.description": "Applies a custom scale to this hud element.", + "hud.potion-timers.scale.scale": "Scale", + "hud.potion-timers.scale.scale.description": "Custom scale.", + "hud.potion-timers.background.background": "Background", + "hud.potion-timers.background.background.description": "Displays background.", + "hud.potion-timers.background.background-color": "Background Color", + "hud.potion-timers.background.background-color.description": "Color used for the background.", + "hud.text.general.text": "Text", + "hud.text.general.text.description": "Text to display with Starscript.", + "hud.text.general.update-delay": "Update Delay", + "hud.text.general.update-delay.description": "Update delay in ticks", + "hud.text.general.shadow": "Shadow", + "hud.text.general.shadow.description": "Renders shadow behind text.", + "hud.text.general.border": "Border", + "hud.text.general.border.description": "How much space to add around the text.", + "hud.text.shown.shown": "Shown", + "hud.text.shown.shown.description": "When this text element is shown.", + "hud.text.shown.condition": "Condition", + "hud.text.shown.condition.description": "Condition to check when shown is not Always.", + "hud.text.scale.custom-scale": "Custom Scale", + "hud.text.scale.custom-scale.description": "Applies a custom scale to this hud element.", + "hud.text.scale.scale": "Scale", + "hud.text.scale.scale.description": "Custom scale.", + "hud.text.background.background": "Background", + "hud.text.background.background.description": "Displays background.", + "hud.text.background.background-color": "Background Color", + "hud.text.background.background-color.description": "Color used for the background.", + + "macro.general.name": "Name", + "macro.general.name.description": "The name of the macro.", + "macro.general.messages": "Messages", + "macro.general.messages.description": "The messages for the macro to send.", + "macro.general.keybind": "Keybind", + "macro.general.keybind.description": "The bind to run the macro.", + + "profile.general.name": "Name", + "profile.general.name.description": "The name of the profile.", + "profile.general.load-on-join": "Load On Join", + "profile.general.load-on-join.description": "Which servers to set this profile as active when joining.", + "profile.save.hud": "Hud", + "profile.save.hud.description": "Whether the profile should save hud.", + "profile.save.macros": "Macros", + "profile.save.macros.description": "Whether the profile should save macros.", + "profile.save.modules": "Modules", + "profile.save.modules.description": "Whether the profile should save modules.", + "profile.save.waypoints": "Waypoints", + "profile.save.waypoints.description": "Whether the profile should save waypoints.", + + "proxies.refreshing.threads": "Threads", + "proxies.refreshing.threads.description": "The number of concurrent threads to check proxies with.", + "proxies.refreshing.timeout": "Timeout", + "proxies.refreshing.timeout.description": "The timeout in milliseconds for checking proxies.", + "proxies.refreshing.retries-on-timeout": "Retries On Timeout", + "proxies.refreshing.retries-on-timeout.description": "How many additional times to check a proxy if the check times out.", + "proxies.cleanup.sort-by-latency": "Sort By Latency", + "proxies.cleanup.sort-by-latency.description": "Whether to sort the proxy list by latency.", + "proxies.cleanup.prune-dead": "Prune Dead", + "proxies.cleanup.prune-dead.description": "Whether to prune dead proxies.", + "proxies.cleanup.prune-by-latency": "Prune By Latency", + "proxies.cleanup.prune-by-latency.description": "Prune proxies at or above this latency in ms. 0 to disable.", + "proxies.cleanup.prune-to-count": "Prune To Count", + "proxies.cleanup.prune-to-count.description": "If in excess, prune the number of proxies to this count. 0 to disable. Prioritises by latency.", + + "proxy.general.name": "Name", + "proxy.general.name.description": "The name of the proxy.", + "proxy.general.type": "Type", + "proxy.general.type.description": "The type of proxy.", + "proxy.general.address": "Address", + "proxy.general.address.description": "The ip address of the proxy.", + "proxy.general.port": "Port", + "proxy.general.port.description": "The port of the proxy.", + "proxy.general.enabled": "Enabled", + "proxy.general.enabled.description": "Whether the proxy is enabled.", + "proxy.optional.username": "Username", + "proxy.optional.username.description": "The username of the proxy.", + "proxy.optional.password": "Password", + "proxy.optional.password.description": "The password of the proxy.", + + "waypoint.visual.name": "Name", + "waypoint.visual.name.description": "The name of the waypoint.", + "waypoint.visual.icon": "Icon", + "waypoint.visual.icon.description": "The icon of the waypoint.", + "waypoint.visual.color": "Color", + "waypoint.visual.color.description": "The color of the waypoint.", + "waypoint.visual.visible": "Visible", + "waypoint.visual.visible.description": "Whether to show the waypoint.", + "waypoint.visual.max-visible-distance": "Max Visible Distance", + "waypoint.visual.max-visible-distance.description": "How far away to render the waypoint.", + "waypoint.visual.scale": "Scale", + "waypoint.visual.scale.description": "The scale of the waypoint.", + "waypoint.position.location": "Location", + "waypoint.position.location.description": "The location of the waypoint.", + "waypoint.position.dimension": "Dimension", + "waypoint.position.dimension.description": "Which dimension the waypoint is in.", + "waypoint.position.opposite-dimension": "Opposite Dimension", + "waypoint.position.opposite-dimension.description": "Whether to show the waypoint in the opposite dimension.", + "waypoint.position.action-when-near": "Action When Near", + "waypoint.position.action-when-near.description": "Action to be performed when the player is near.", + "waypoint.position.action-when-near-distance": "Action When Near Distance", + "waypoint.position.action-when-near-distance.description": "How close (in blocks) the player has to be for the near action to be performed.", + + "theme.meteor.general.scale": "Scale", + "theme.meteor.general.scale.description": "Scale of the GUI.", + "theme.meteor.general.module-alignment": "Module Alignment", + "theme.meteor.general.module-alignment.description": "How module titles are aligned.", + "theme.meteor.general.category-icons": "Category Icons", + "theme.meteor.general.category-icons.description": "Adds item icons to module categories.", + "theme.meteor.general.hide-HUD": "Hide HUD", + "theme.meteor.general.hide-HUD.description": "Hide HUD when in GUI.", + "theme.meteor.colors.accent-color": "Accent Color", + "theme.meteor.colors.accent-color.description": "Main color of the GUI.", + "theme.meteor.colors.checkbox-color": "Checkbox Color", + "theme.meteor.colors.checkbox-color.description": "Color of checkbox.", + "theme.meteor.colors.plus-color": "Plus Color", + "theme.meteor.colors.plus-color.description": "Color of plus button.", + "theme.meteor.colors.minus-color": "Minus Color", + "theme.meteor.colors.minus-color.description": "Color of minus button.", + "theme.meteor.colors.favorite-color": "Favorite Color", + "theme.meteor.colors.favorite-color.description": "Color of checked favorite button.", + "theme.meteor.text.text-color": "Text Color", + "theme.meteor.text.text-color.description": "Color of text.", + "theme.meteor.text.text-secondary-text-color": "Text Secondary Text Color", + "theme.meteor.text.text-secondary-text-color.description": "Color of secondary text.", + "theme.meteor.text.text-highlight-color": "Text Highlight Color", + "theme.meteor.text.text-highlight-color.description": "Color of text highlighting.", + "theme.meteor.text.title-text-color": "Title Text Color", + "theme.meteor.text.title-text-color.description": "Color of title text.", + "theme.meteor.text.logged-in-text-color": "Logged In Text Color", + "theme.meteor.text.logged-in-text-color.description": "Color of logged in account name.", + "theme.meteor.text.placeholder-color": "Placeholder Color", + "theme.meteor.text.placeholder-color.description": "Color of placeholder text.", + "theme.meteor.background.background-color": "Background Color", + "theme.meteor.background.background-color.description": "Color of background.", + "theme.meteor.background.hovered-background-color": "Hovered Background Color", + "theme.meteor.background.hovered-background-color.description": "Color of background when hovered.", + "theme.meteor.background.pressed-background-color": "Pressed Background Color", + "theme.meteor.background.pressed-background-color.description": "Color of background when pressed.", + "theme.meteor.background.module-background-color": "Module Background Color", + "theme.meteor.background.module-background-color.description": "Color of module background when active.", + "theme.meteor.outline.outline-color": "Outline Color", + "theme.meteor.outline.outline-color.description": "Color of outline.", + "theme.meteor.outline.hovered-outline-color": "Hovered Outline Color", + "theme.meteor.outline.hovered-outline-color.description": "Color of outline when hovered.", + "theme.meteor.outline.pressed-outline-color": "Pressed Outline Color", + "theme.meteor.outline.pressed-outline-color.description": "Color of outline when pressed.", + "theme.meteor.separator.separator-text-color": "Separator Text Color", + "theme.meteor.separator.separator-text-color.description": "Color of separator text", + "theme.meteor.separator.separator-center-color": "Separator Center Color", + "theme.meteor.separator.separator-center-color.description": "Center color of separators.", + "theme.meteor.separator.separator-edges-color": "Separator Edges Color", + "theme.meteor.separator.separator-edges-color.description": "Color of separator edges.", + "theme.meteor.scrollbar.Scrollbar-color": "Scrollbar Color", + "theme.meteor.scrollbar.Scrollbar-color.description": "Color of Scrollbar.", + "theme.meteor.scrollbar.hovered-Scrollbar-color": "Hovered Scrollbar Color", + "theme.meteor.scrollbar.hovered-Scrollbar-color.description": "Color of Scrollbar when hovered.", + "theme.meteor.scrollbar.pressed-Scrollbar-color": "Pressed Scrollbar Color", + "theme.meteor.scrollbar.pressed-Scrollbar-color.description": "Color of Scrollbar when pressed.", + "theme.meteor.slider.slider-handle-color": "Slider Handle Color", + "theme.meteor.slider.slider-handle-color.description": "Color of slider-handle.", + "theme.meteor.slider.hovered-slider-handle-color": "Hovered Slider Handle Color", + "theme.meteor.slider.hovered-slider-handle-color.description": "Color of slider-handle when hovered.", + "theme.meteor.slider.pressed-slider-handle-color": "Pressed Slider Handle Color", + "theme.meteor.slider.pressed-slider-handle-color.description": "Color of slider-handle when pressed.", + "theme.meteor.slider.slider-left-color": "Slider Left Color", + "theme.meteor.slider.slider-left-color.description": "Color of slider left part.", + "theme.meteor.slider.slider-right-color": "Slider Right Color", + "theme.meteor.slider.slider-right-color.description": "Color of slider right part.", + "theme.meteor.starscript.starscript-text-color": "Starscript Text Color", + "theme.meteor.starscript.starscript-text-color.description": "Color of text in Starscript code.", + "theme.meteor.starscript.starscript-braces-color": "Starscript Braces Color", + "theme.meteor.starscript.starscript-braces-color.description": "Color of braces in Starscript code.", + "theme.meteor.starscript.starscript-parenthesis-color": "Starscript Parenthesis Color", + "theme.meteor.starscript.starscript-parenthesis-color.description": "Color of parenthesis in Starscript code.", + "theme.meteor.starscript.starscript-dots-color": "Starscript Dots Color", + "theme.meteor.starscript.starscript-dots-color.description": "Color of dots in starscript code.", + "theme.meteor.starscript.starscript-commas-color": "Starscript Commas Color", + "theme.meteor.starscript.starscript-commas-color.description": "Color of commas in starscript code.", + "theme.meteor.starscript.starscript-operators-color": "Starscript Operators Color", + "theme.meteor.starscript.starscript-operators-color.description": "Color of operators in Starscript code.", + "theme.meteor.starscript.starscript-strings-color": "Starscript Strings Color", + "theme.meteor.starscript.starscript-strings-color.description": "Color of strings in Starscript code.", + "theme.meteor.starscript.starscript-numbers-color": "Starscript Numbers Color", + "theme.meteor.starscript.starscript-numbers-color.description": "Color of numbers in Starscript code.", + "theme.meteor.starscript.starscript-keywords-color": "Starscript Keywords Color", + "theme.meteor.starscript.starscript-keywords-color.description": "Color of keywords in Starscript code.", + "theme.meteor.starscript.starscript-accessed-objects-color": "Starscript Accessed Objects Color", + "theme.meteor.starscript.starscript-accessed-objects-color.description": "Color of accessed objects (before a dot) in Starscript code.", + "category.combat": "Combat", "category.player": "Player", "category.movement": "Movement", @@ -167,6 +662,32 @@ "setting.group.flight": "Flight", "setting.group.range": "Range", "setting.group.smart": "Smart", + "setting.group.editor": "Editor", + "setting.group.bind": "Bind", + "setting.group.modules": "Modules", + "setting.group.chat": "Chat", + "setting.group.misc": "Misc", + "setting.group.save": "Save", + "setting.group.refreshing": "Refreshing", + "setting.group.cleanup": "Cleanup", + "setting.group.optional": "Optional", + "setting.group.position": "Position", + "setting.group.text": "Text", + "setting.group.background": "Background", + "setting.group.outline": "Outline", + "setting.group.separator": "Separator", + "setting.group.scrollbar": "Scrollbar", + "setting.group.slider": "Slider", + "setting.group.starscript": "Starscript", + "setting.group.scale": "Scale", + "setting.group.shown": "Shown", + "setting.group.durability": "Durability", + "setting.group.enchantments": "Enchantments", + "setting.group.distance": "Distance", + "setting.group.ping": "Ping", + "setting.group.anchors": "Anchors", + "setting.group.tracer": "Tracer", + "setting.group.base": "Base", "module.base.bind": "Bind", "module.base.bind.bind": "Bind: ", @@ -1320,6 +1841,17 @@ "module.block-esp.general.tracers": "Tracers", "module.block-esp.general.tracers.description": "Render tracer lines.", + "module.block-esp.data.shape-mode": "Shape Mode", + "module.block-esp.data.shape-mode.description": "How the shape is rendered.", + "module.block-esp.data.line-color": "Line Color", + "module.block-esp.data.line-color.description": "Color of lines.", + "module.block-esp.data.side-color": "Side Color", + "module.block-esp.data.side-color.description": "Color of sides.", + "module.block-esp.data.tracer": "Tracer", + "module.block-esp.data.tracer.description": "If tracer line should be drawn to this block.", + "module.block-esp.data.tracer-color": "Tracer Color", + "module.block-esp.data.tracer-color.description": "Color of the tracer line.", + "module.packet-mine": "Packet Mine", "module.packet-mine.description": "Sends packets to mine blocks without the mining animation.", "module.packet-mine.general.delay": "Delay", @@ -3144,6 +3676,56 @@ "module.marker": "Marker", "module.marker.description": "Renders shapes. Useful for large scale projects", + "marker.sphere-2d.base.name": "Name", + "marker.sphere-2d.base.name.description": "Custom name for this marker.", + "marker.sphere-2d.base.description": "Description", + "marker.sphere-2d.base.description.description": "Custom description for this marker.", + "marker.sphere-2d.base.dimension": "Dimension", + "marker.sphere-2d.base.dimension.description": "In which dimension this marker should be visible.", + "marker.sphere-2d.base.active": "Active", + "marker.sphere-2d.base.active.description": "Is this marker visible.", + "marker.sphere-2d.general.center": "Center", + "marker.sphere-2d.general.center.description": "Center of the sphere", + "marker.sphere-2d.general.radius": "Radius", + "marker.sphere-2d.general.radius.description": "Radius of the sphere", + "marker.sphere-2d.general.layer": "Layer", + "marker.sphere-2d.general.layer.description": "Which layer to render", + "marker.sphere-2d.render.limit-render-range": "Limit Render Range", + "marker.sphere-2d.render.limit-render-range.description": "Whether to limit rendering range (useful in very large circles)", + "marker.sphere-2d.render.render-range": "Render Range", + "marker.sphere-2d.render.render-range.description": "Rendering range", + "marker.sphere-2d.render.shape-mode": "Shape Mode", + "marker.sphere-2d.render.shape-mode.description": "How the shapes are rendered.", + "marker.sphere-2d.render.side-color": "Side Color", + "marker.sphere-2d.render.side-color.description": "The color of the sides of the blocks being rendered.", + "marker.sphere-2d.render.line-color": "Line Color", + "marker.sphere-2d.render.line-color.description": "The color of the lines of the blocks being rendered.", + "marker.sphere-2d.keybinding.next-layer-keybind": "Next Layer Keybind", + "marker.sphere-2d.keybinding.next-layer-keybind.description": "Keybind to increment layer", + "marker.sphere-2d.keybinding.prev-layer-keybind": "Prev Layer Keybind", + "marker.sphere-2d.keybinding.prev-layer-keybind.description": "Keybind to increment layer", + "marker.cuboid.base.name": "Name", + "marker.cuboid.base.name.description": "Custom name for this marker.", + "marker.cuboid.base.description": "Description", + "marker.cuboid.base.description.description": "Custom description for this marker.", + "marker.cuboid.base.dimension": "Dimension", + "marker.cuboid.base.dimension.description": "In which dimension this marker should be visible.", + "marker.cuboid.base.active": "Active", + "marker.cuboid.base.active.description": "Is this marker visible.", + "marker.cuboid.general.pos-1": "Pos 1", + "marker.cuboid.general.pos-1.description": "1st corner of the cuboid", + "marker.cuboid.general.pos-2": "Pos 2", + "marker.cuboid.general.pos-2.description": "2nd corner of the cuboid", + "marker.cuboid.render.mode": "Mode", + "marker.cuboid.render.mode.description": "What mode to use for this marker.", + "marker.cuboid.render.shape-mode": "Shape Mode", + "marker.cuboid.render.shape-mode.description": "How the shapes are rendered.", + "marker.cuboid.render.side-color": "Side Color", + "marker.cuboid.render.side-color.description": "The color of the sides of the blocks being rendered.", + "marker.cuboid.render.line-color": "Line Color", + "marker.cuboid.render.line-color.description": "The color of the lines of the blocks being rendered.", + + "module.criticals": "Criticals", "module.criticals.description": "Performs critical attacks when you hit your target.", "module.criticals.general.mode": "Mode", diff --git a/src/main/resources/assets/meteor-client/language/en_us.json b/src/main/resources/assets/meteor-client/language/en_us.json index 718c010de5..bc9f17c8bd 100644 --- a/src/main/resources/assets/meteor-client/language/en_us.json +++ b/src/main/resources/assets/meteor-client/language/en_us.json @@ -1,5 +1,5 @@ { - "meteor.lang.translators" : "MeteorDevelopment", + "meteor.lang.translators": "MeteorDevelopment", "meteor.key.category": "Meteor Client", "meteor.key.open-commands": "Open Commands", @@ -74,6 +74,501 @@ "command.wasp.info.target": "%s set as target.", "command.waypoint.description": "Manages waypoints.", + "config.visual.custom-font": "Custom Font", + "config.visual.custom-font.description": "Use a custom font.", + "config.visual.font": "Font", + "config.visual.font.description": "Custom font to use.", + "config.visual.rainbow-speed": "Rainbow Speed", + "config.visual.rainbow-speed.description": "The global rainbow speed.", + "config.visual.title-screen-credits": "Title Screen Credits", + "config.visual.title-screen-credits.description": "Show Meteor credits on title screen", + "config.visual.title-screen-splashes": "Title Screen Splashes", + "config.visual.title-screen-splashes.description": "Show Meteor splash texts on title screen", + "config.visual.custom-window-title": "Custom Window Title", + "config.visual.custom-window-title.description": "Show custom text in the window title.", + "config.visual.window-title-text": "Window Title Text", + "config.visual.window-title-text.description": "The text it displays in the window title.", + "config.visual.friend-color": "Friend Color", + "config.visual.friend-color.description": "The color used to show friends.", + "config.visual.sync-list-setting-widths": "Sync List Setting Widths", + "config.visual.sync-list-setting-widths.description": "Prevents the list setting screens from moving around as you add & remove elements.", + "config.modules.hidden-modules": "Hidden Modules", + "config.modules.hidden-modules.description": "Prevent these modules from being rendered as options in the clickgui.", + "config.modules.module-search-count": "Module Search Count", + "config.modules.module-search-count.description": "Amount of modules and settings to be shown in the module search bar.", + "config.modules.search-module-aliases": "Search Module Aliases", + "config.modules.search-module-aliases.description": "Whether or not module aliases will be used in the module search bar.", + "config.chat.prefix": "Prefix", + "config.chat.prefix.description": "Prefix.", + "config.chat.chat-feedback": "Chat Feedback", + "config.chat.chat-feedback.description": "Sends chat feedback when meteor performs certain actions.", + "config.chat.delete-chat-feedback": "Delete Chat Feedback", + "config.chat.delete-chat-feedback.description": "Delete previous matching chat feedback to keep chat clear.", + "config.misc.rotation-hold": "Rotation Hold", + "config.misc.rotation-hold.description": "Hold long to hold server side rotation when not sending any packets.", + "config.misc.use-team-color": "Use Team Color", + "config.misc.use-team-color.description": "Uses player's team color for rendering things like esp and tracers.", + + "hud.general.custom-font": "Custom Font", + "hud.general.custom-font.description": "Text will use custom font.", + "hud.general.hide-in-menus": "Hide In Menus", + "hud.general.hide-in-menus.description": "Hides the meteor hud when in inventory screens or game menus.", + "hud.general.text-scale": "Text Scale", + "hud.general.text-scale.description": "Scale of text if not overridden by the element.", + "hud.general.text-colors": "Text Colors", + "hud.general.text-colors.description": "Colors used for the Text element.", + "hud.editor.border": "Border", + "hud.editor.border.description": "Space around the edges of the screen.", + "hud.editor.snapping-range": "Snapping Range", + "hud.editor.snapping-range.description": "Snapping range in editor.", + "hud.bind.bind": "Bind", + "hud.bind.bind.description": "Keybind for toggling the hud", + + "hud.base.anchors.auto-anchors": "Automatically assigns anchors based on the position.", + "hud.base.anchors.x-anchor": "Horizontal anchor.", + "hud.base.anchors.y-anchor": "Vertical anchor.", + + "hud.active-modules.general.sort": "Sort", + "hud.active-modules.general.sort.description": "How to sort active modules.", + "hud.active-modules.general.hidden-modules": "Hidden Modules", + "hud.active-modules.general.hidden-modules.description": "Which modules not to show in the list.", + "hud.active-modules.general.module-info": "Module Info", + "hud.active-modules.general.module-info.description": "Shows info from the module next to the name in the active modules list.", + "hud.active-modules.general.show-keybind": "Show Keybind", + "hud.active-modules.general.show-keybind.description": "Shows the module's keybind next to its name.", + "hud.active-modules.general.shadow": "Shadow", + "hud.active-modules.general.shadow.description": "Renders shadow behind text.", + "hud.active-modules.general.outlines": "Outlines", + "hud.active-modules.general.outlines.description": "Whether or not to render outlines", + "hud.active-modules.general.outline-width": "Outline Width", + "hud.active-modules.general.outline-width.description": "Outline width", + "hud.active-modules.general.alignment": "Alignment", + "hud.active-modules.general.alignment.description": "Horizontal alignment.", + "hud.active-modules.color.color-mode": "Color Mode", + "hud.active-modules.color.color-mode.description": "What color to use for active modules.", + "hud.active-modules.color.flat-color": "Flat Color", + "hud.active-modules.color.flat-color.description": "Color for flat color mode.", + "hud.active-modules.color.rainbow-speed": "Rainbow Speed", + "hud.active-modules.color.rainbow-speed.description": "Rainbow speed of rainbow color mode.", + "hud.active-modules.color.rainbow-spread": "Rainbow Spread", + "hud.active-modules.color.rainbow-spread.description": "Rainbow spread of rainbow color mode.", + "hud.active-modules.color.rainbow-saturation": "Rainbow Saturation", + "hud.active-modules.color.rainbow-saturation.description": "", + "hud.active-modules.color.rainbow-brightness": "Rainbow Brightness", + "hud.active-modules.color.rainbow-brightness.description": "", + "hud.active-modules.color.module-info-color": "Module Info Color", + "hud.active-modules.color.module-info-color.description": "Color of module info text.", + "hud.active-modules.scale.custom-scale": "Custom Scale", + "hud.active-modules.scale.custom-scale.description": "Applies a custom scale to this hud element.", + "hud.active-modules.scale.scale": "Scale", + "hud.active-modules.scale.scale.description": "Custom scale.", + "hud.active-modules.background.background": "Background", + "hud.active-modules.background.background.description": "Displays background.", + "hud.active-modules.background.background-color": "Background Color", + "hud.active-modules.background.background-color.description": "Color used for the background.", + "hud.armor.general.orientation": "Orientation", + "hud.armor.general.orientation.description": "How to display armor.", + "hud.armor.general.flip-order": "Flip Order", + "hud.armor.general.flip-order.description": "Flips the order of armor items.", + "hud.armor.general.show-empty": "Show Empty", + "hud.armor.general.show-empty.description": "Renders barrier icons for empty slots.", + "hud.armor.durability.durability": "Durability", + "hud.armor.durability.durability.description": "How to display armor durability.", + "hud.armor.durability.durability-color": "Durability Color", + "hud.armor.durability.durability-color.description": "Color of the text.", + "hud.armor.durability.durability-shadow": "Durability Shadow", + "hud.armor.durability.durability-shadow.description": "Text shadow.", + "hud.armor.scale.custom-scale": "Custom Scale", + "hud.armor.scale.custom-scale.description": "Applies a custom scale to this hud element.", + "hud.armor.scale.scale": "Scale", + "hud.armor.scale.scale.description": "Custom scale.", + "hud.armor.background.background": "Background", + "hud.armor.background.background.description": "Displays background.", + "hud.armor.background.background-color": "Background Color", + "hud.armor.background.background-color.description": "Color used for the background.", + "hud.combat.general.range": "Range", + "hud.combat.general.range.description": "The range to target players.", + "hud.combat.enchantments.displayed-enchantments": "Displayed Enchantments", + "hud.combat.enchantments.displayed-enchantments.description": "The enchantments that are shown on nametags.", + "hud.combat.enchantments.enchantment-color": "Enchantment Color", + "hud.combat.enchantments.enchantment-color.description": "Color of enchantment text.", + "hud.combat.health.health-stage-1": "Health Stage 1", + "hud.combat.health.health-stage-1.description": "The color on the left of the health gradient.", + "hud.combat.health.health-stage-2": "Health Stage 2", + "hud.combat.health.health-stage-2.description": "The color in the middle of the health gradient.", + "hud.combat.health.health-stage-3": "Health Stage 3", + "hud.combat.health.health-stage-3.description": "The color on the right of the health gradient.", + "hud.combat.distance.distance": "Distance", + "hud.combat.distance.distance.description": "Shows the distance between you and the player.", + "hud.combat.distance.distance-stage-1": "Distance Stage 1", + "hud.combat.distance.distance-stage-1.description": "The color when a player is within 10 blocks of you.", + "hud.combat.distance.distance-stage-2": "Distance Stage 2", + "hud.combat.distance.distance-stage-2.description": "The color when a player is within 50 blocks of you.", + "hud.combat.distance.distance-stage-3": "Distance Stage 3", + "hud.combat.distance.distance-stage-3.description": "The color when a player is greater then 50 blocks away from you.", + "hud.combat.ping.ping": "Ping", + "hud.combat.ping.ping.description": "Shows the player's ping.", + "hud.combat.ping.ping-stage-1": "Ping Stage 1", + "hud.combat.ping.ping-stage-1.description": "Color of ping text when under 75.", + "hud.combat.ping.ping-stage-2": "Ping Stage 2", + "hud.combat.ping.ping-stage-2.description": "Color of ping text when between 75 and 200.", + "hud.combat.ping.ping-stage-3": "Ping Stage 3", + "hud.combat.ping.ping-stage-3.description": "Color of ping text when over 200.", + "hud.combat.scale.custom-scale": "Custom Scale", + "hud.combat.scale.custom-scale.description": "Applies a custom scale to this hud element.", + "hud.combat.scale.scale": "Scale", + "hud.combat.scale.scale.description": "Custom scale.", + "hud.combat.background.background": "Background", + "hud.combat.background.background.description": "Displays background.", + "hud.combat.background.background-color": "Background Color", + "hud.combat.background.background-color.description": "Color used for the background.", + "hud.compass.general.type": "Type", + "hud.compass.general.type.description": "Which type of direction information to show.", + "hud.compass.general.color-north": "Color North", + "hud.compass.general.color-north.description": "Color of north.", + "hud.compass.general.color-other": "Color Other", + "hud.compass.general.color-other.description": "Color of other directions.", + "hud.compass.general.shadow": "Shadow", + "hud.compass.general.shadow.description": "Text shadow.", + "hud.compass.scale.custom-scale": "Custom Scale", + "hud.compass.scale.custom-scale.description": "Apply custom scales to this hud element.", + "hud.compass.scale.text-scale": "Text Scale", + "hud.compass.scale.text-scale.description": "Scale to use for the letters.", + "hud.compass.scale.compass-scale": "Compass Scale", + "hud.compass.scale.compass-scale.description": "Scale of the whole HUD element.", + "hud.compass.background.background": "Background", + "hud.compass.background.background.description": "Displays background.", + "hud.compass.background.background-color": "Background Color", + "hud.compass.background.background-color.description": "Color used for the background.", + "hud.hole.general.safe-blocks": "Safe Blocks", + "hud.hole.general.safe-blocks.description": "Which blocks to consider safe.", + "hud.hole.scale.custom-scale": "Custom Scale", + "hud.hole.scale.custom-scale.description": "Applies a custom scale to this hud element.", + "hud.hole.scale.scale": "Scale", + "hud.hole.scale.scale.description": "Custom scale.", + "hud.hole.background.background": "Background", + "hud.hole.background.background.description": "Displays background.", + "hud.hole.background.background-color": "Background Color", + "hud.hole.background.background-color.description": "Color used for the background.", + "hud.inventory.general.containers": "Containers", + "hud.inventory.general.containers.description": "Shows the contents of a container when holding them.", + "hud.inventory.scale.custom-scale": "Custom Scale", + "hud.inventory.scale.custom-scale.description": "Applies a custom scale to this hud element.", + "hud.inventory.scale.scale": "Scale", + "hud.inventory.scale.scale.description": "Custom scale.", + "hud.inventory.background.background": "Background", + "hud.inventory.background.background.description": "Background of inventory viewer.", + "hud.inventory.background.background-color": "Background Color", + "hud.inventory.background.background-color.description": "Color used for the background.", + "hud.item.general.item": "Item", + "hud.item.general.item.description": "Item to display", + "hud.item.general.none-mode": "None Mode", + "hud.item.general.none-mode.description": "How to render the item when you don't have the specified item in your inventory.", + "hud.item.scale.custom-scale": "Custom Scale", + "hud.item.scale.`custom-scale`.description": "Applies a custom scale to this hud element.", + "hud.item.scale.scale": "Scale", + "hud.item.scale.scale.description": "Custom scale.", + "hud.item.background.background": "Background", + "hud.item.background.background.description": "Displays background.", + "hud.item.background.background-color": "Background Color", + "hud.item.background.background-color.description": "Color used for the background.", + "hud.lag-notifier.general.shadow": "Shadow", + "hud.lag-notifier.general.shadow.description": "Text shadow.", + "hud.lag-notifier.general.text-color": "Text Color", + "hud.lag-notifier.general.text-color.description": "A.", + "hud.lag-notifier.general.color-1": "Color 1", + "hud.lag-notifier.general.color-1.description": "First color.", + "hud.lag-notifier.general.color-2": "Color 2", + "hud.lag-notifier.general.color-2.description": "Second color.", + "hud.lag-notifier.general.color-3": "Color 3", + "hud.lag-notifier.general.color-3.description": "Third color.", + "hud.lag-notifier.scale.custom-scale": "Custom Scale", + "hud.lag-notifier.scale.custom-scale.description": "Applies a custom scale to this hud element.", + "hud.lag-notifier.scale.scale": "Scale", + "hud.lag-notifier.scale.scale.description": "Custom scale.", + "hud.lag-notifier.background.background": "Background", + "hud.lag-notifier.background.background.description": "Displays background.", + "hud.lag-notifier.background.background-color": "Background Color", + "hud.lag-notifier.background.background-color.description": "Color used for the background.", + "hud.map.general.mode": "Mode", + "hud.map.general.mode.description": "How to determine which map to render.", + "hud.map.general.slot-index": "Slot Index", + "hud.map.general.slot-index.description": "Which slot to grab the map from.", + "hud.map.general.map-id": "Map Id", + "hud.map.general.map-id.description": "Which map id to render from. Must be in your inventory!", + "hud.map.visual.scale": "Scale", + "hud.map.visual.scale.description": "How big to render the map.", + "hud.map.visual.background": "Background", + "hud.map.visual.background.description": "Displays background.", + "hud.map.visual.background-color": "Background Color", + "hud.map.visual.background-color.description": "Color used for the background.", + "hud.module-infos.general.modules": "Modules", + "hud.module-infos.general.modules.description": "Which modules to display", + "hud.module-infos.general.additional-info": "Additional Info", + "hud.module-infos.general.additional-info.description": "Shows additional info from the module next to the name in the module info list.", + "hud.module-infos.general.text-shadow": "Text Shadow", + "hud.module-infos.general.text-shadow.description": "Renders shadow behind text.", + "hud.module-infos.general.module-color": "Module Color", + "hud.module-infos.general.module-color.description": "Module color.", + "hud.module-infos.general.on-color": "On Color", + "hud.module-infos.general.on-color.description": "Color when module is on.", + "hud.module-infos.general.off-color": "Off Color", + "hud.module-infos.general.off-color.description": "Color when module is off.", + "hud.module-infos.general.alignment": "Alignment", + "hud.module-infos.general.alignment.description": "Horizontal alignment.", + "hud.player-model.general.copy-yaw": "Copy Yaw", + "hud.player-model.general.copy-yaw.description": "Makes the player model's yaw equal to yours.", + "hud.player-model.general.custom-yaw": "Custom Yaw", + "hud.player-model.general.custom-yaw.description": "Custom yaw for when copy yaw is off.", + "hud.player-model.general.copy-pitch": "Copy Pitch", + "hud.player-model.general.copy-pitch.description": "Makes the player model's pitch equal to yours.", + "hud.player-model.general.custom-pitch": "Custom Pitch", + "hud.player-model.general.custom-pitch.description": "Custom pitch for when copy pitch is off.", + "hud.player-model.general.center-orientation": "Center Orientation", + "hud.player-model.general.center-orientation.description": "Which direction the player faces when the HUD model faces directly forward.", + "hud.player-model.scale.custom-scale": "Custom Scale", + "hud.player-model.scale.custom-scale.description": "Applies a custom scale to this hud element.", + "hud.player-model.scale.scale": "Scale", + "hud.player-model.scale.scale.description": "Custom scale.", + "hud.player-model.background.background": "Background", + "hud.player-model.background.background.description": "Displays background.", + "hud.player-model.background.background-color": "Background Color", + "hud.player-model.background.background-color.description": "Color used for the background.", + "hud.player-radar.general.limit": "Limit", + "hud.player-radar.general.limit.description": "The max number of players to show.", + "hud.player-radar.general.distance": "Distance", + "hud.player-radar.general.distance.description": "Shows the distance to the player next to their name.", + "hud.player-radar.general.display-friends": "Display Friends", + "hud.player-radar.general.display-friends.description": "Whether to show friends or not.", + "hud.player-radar.general.shadow": "Shadow", + "hud.player-radar.general.shadow.description": "Renders shadow behind text.", + "hud.player-radar.general.primary-color": "Primary Color", + "hud.player-radar.general.primary-color.description": "Primary color.", + "hud.player-radar.general.secondary-color": "Secondary Color", + "hud.player-radar.general.secondary-color.description": "Secondary color.", + "hud.player-radar.general.alignment": "Alignment", + "hud.player-radar.general.alignment.description": "Horizontal alignment.", + "hud.player-radar.general.border": "Border", + "hud.player-radar.general.border.description": "How much space to add around the element.", + "hud.player-radar.scale.custom-scale": "Custom Scale", + "hud.player-radar.scale.custom-scale.description": "Applies a custom scale to this hud element.", + "hud.player-radar.scale.scale": "Scale", + "hud.player-radar.scale.scale.description": "Custom scale.", + "hud.player-radar.background.background": "Background", + "hud.player-radar.background.background.description": "Displays background.", + "hud.player-radar.background.background-color": "Background Color", + "hud.player-radar.background.background-color.description": "Color used for the background.", + "hud.potion-timers.general.hidden-effects": "Hidden Effects", + "hud.potion-timers.general.hidden-effects.description": "Which effects not to show in the list.", + "hud.potion-timers.general.show-ambient": "Show Ambient", + "hud.potion-timers.general.show-ambient.description": "Whether to show ambient effects like from beacons and conduits.", + "hud.potion-timers.general.color-mode": "Color Mode", + "hud.potion-timers.general.color-mode.description": "What color to use for effects.", + "hud.potion-timers.general.flat-color": "Flat Color", + "hud.potion-timers.general.flat-color.description": "Color for flat color mode.", + "hud.potion-timers.general.rainbow-speed": "Rainbow Speed", + "hud.potion-timers.general.rainbow-speed.description": "Rainbow speed of rainbow color mode.", + "hud.potion-timers.general.rainbow-spread": "Rainbow Spread", + "hud.potion-timers.general.rainbow-spread.description": "Rainbow spread of rainbow color mode.", + "hud.potion-timers.general.rainbow-saturation": "Rainbow Saturation", + "hud.potion-timers.general.rainbow-saturation.description": "Saturation of rainbow color mode.", + "hud.potion-timers.general.rainbow-brightness": "Rainbow Brightness", + "hud.potion-timers.general.rainbow-brightness.description": "Brightness of rainbow color mode.", + "hud.potion-timers.general.shadow": "Shadow", + "hud.potion-timers.general.shadow.description": "Renders shadow behind text.", + "hud.potion-timers.general.alignment": "Alignment", + "hud.potion-timers.general.alignment.description": "Horizontal alignment.", + "hud.potion-timers.general.border": "Border", + "hud.potion-timers.general.border.description": "How much space to add around the element.", + "hud.potion-timers.scale.custom-scale": "Custom Scale", + "hud.potion-timers.scale.custom-scale.description": "Applies a custom scale to this hud element.", + "hud.potion-timers.scale.scale": "Scale", + "hud.potion-timers.scale.scale.description": "Custom scale.", + "hud.potion-timers.background.background": "Background", + "hud.potion-timers.background.background.description": "Displays background.", + "hud.potion-timers.background.background-color": "Background Color", + "hud.potion-timers.background.background-color.description": "Color used for the background.", + "hud.text.general.text": "Text", + "hud.text.general.text.description": "Text to display with Starscript.", + "hud.text.general.update-delay": "Update Delay", + "hud.text.general.update-delay.description": "Update delay in ticks", + "hud.text.general.shadow": "Shadow", + "hud.text.general.shadow.description": "Renders shadow behind text.", + "hud.text.general.border": "Border", + "hud.text.general.border.description": "How much space to add around the text.", + "hud.text.shown.shown": "Shown", + "hud.text.shown.shown.description": "When this text element is shown.", + "hud.text.shown.condition": "Condition", + "hud.text.shown.condition.description": "Condition to check when shown is not Always.", + "hud.text.scale.custom-scale": "Custom Scale", + "hud.text.scale.custom-scale.description": "Applies a custom scale to this hud element.", + "hud.text.scale.scale": "Scale", + "hud.text.scale.scale.description": "Custom scale.", + "hud.text.background.background": "Background", + "hud.text.background.background.description": "Displays background.", + "hud.text.background.background-color": "Background Color", + "hud.text.background.background-color.description": "Color used for the background.", + + "macro.general.name": "Name", + "macro.general.name.description": "The name of the macro.", + "macro.general.messages": "Messages", + "macro.general.messages.description": "The messages for the macro to send.", + "macro.general.keybind": "Keybind", + "macro.general.keybind.description": "The bind to run the macro.", + + "profile.general.name": "Name", + "profile.general.name.description": "The name of the profile.", + "profile.general.load-on-join": "Load On Join", + "profile.general.load-on-join.description": "Which servers to set this profile as active when joining.", + "profile.save.hud": "Hud", + "profile.save.hud.description": "Whether the profile should save hud.", + "profile.save.macros": "Macros", + "profile.save.macros.description": "Whether the profile should save macros.", + "profile.save.modules": "Modules", + "profile.save.modules.description": "Whether the profile should save modules.", + "profile.save.waypoints": "Waypoints", + "profile.save.waypoints.description": "Whether the profile should save waypoints.", + + "proxies.refreshing.threads": "Threads", + "proxies.refreshing.threads.description": "The number of concurrent threads to check proxies with.", + "proxies.refreshing.timeout": "Timeout", + "proxies.refreshing.timeout.description": "The timeout in milliseconds for checking proxies.", + "proxies.refreshing.retries-on-timeout": "Retries On Timeout", + "proxies.refreshing.retries-on-timeout.description": "How many additional times to check a proxy if the check times out.", + "proxies.cleanup.sort-by-latency": "Sort By Latency", + "proxies.cleanup.sort-by-latency.description": "Whether to sort the proxy list by latency.", + "proxies.cleanup.prune-dead": "Prune Dead", + "proxies.cleanup.prune-dead.description": "Whether to prune dead proxies.", + "proxies.cleanup.prune-by-latency": "Prune By Latency", + "proxies.cleanup.prune-by-latency.description": "Prune proxies at or above this latency in ms. 0 to disable.", + "proxies.cleanup.prune-to-count": "Prune To Count", + "proxies.cleanup.prune-to-count.description": "If in excess, prune the number of proxies to this count. 0 to disable. Prioritises by latency.", + + "proxy.general.name": "Name", + "proxy.general.name.description": "The name of the proxy.", + "proxy.general.type": "Type", + "proxy.general.type.description": "The type of proxy.", + "proxy.general.address": "Address", + "proxy.general.address.description": "The ip address of the proxy.", + "proxy.general.port": "Port", + "proxy.general.port.description": "The port of the proxy.", + "proxy.general.enabled": "Enabled", + "proxy.general.enabled.description": "Whether the proxy is enabled.", + "proxy.optional.username": "Username", + "proxy.optional.username.description": "The username of the proxy.", + "proxy.optional.password": "Password", + "proxy.optional.password.description": "The password of the proxy.", + + "waypoint.visual.name": "Name", + "waypoint.visual.name.description": "The name of the waypoint.", + "waypoint.visual.icon": "Icon", + "waypoint.visual.icon.description": "The icon of the waypoint.", + "waypoint.visual.color": "Color", + "waypoint.visual.color.description": "The color of the waypoint.", + "waypoint.visual.visible": "Visible", + "waypoint.visual.visible.description": "Whether to show the waypoint.", + "waypoint.visual.max-visible-distance": "Max Visible Distance", + "waypoint.visual.max-visible-distance.description": "How far away to render the waypoint.", + "waypoint.visual.scale": "Scale", + "waypoint.visual.scale.description": "The scale of the waypoint.", + "waypoint.position.location": "Location", + "waypoint.position.location.description": "The location of the waypoint.", + "waypoint.position.dimension": "Dimension", + "waypoint.position.dimension.description": "Which dimension the waypoint is in.", + "waypoint.position.opposite-dimension": "Opposite Dimension", + "waypoint.position.opposite-dimension.description": "Whether to show the waypoint in the opposite dimension.", + "waypoint.position.action-when-near": "Action When Near", + "waypoint.position.action-when-near.description": "Action to be performed when the player is near.", + "waypoint.position.action-when-near-distance": "Action When Near Distance", + "waypoint.position.action-when-near-distance.description": "How close (in blocks) the player has to be for the near action to be performed.", + + "theme.meteor.general.scale": "Scale", + "theme.meteor.general.scale.description": "Scale of the GUI.", + "theme.meteor.general.module-alignment": "Module Alignment", + "theme.meteor.general.module-alignment.description": "How module titles are aligned.", + "theme.meteor.general.category-icons": "Category Icons", + "theme.meteor.general.category-icons.description": "Adds item icons to module categories.", + "theme.meteor.general.hide-HUD": "Hide HUD", + "theme.meteor.general.hide-HUD.description": "Hide HUD when in GUI.", + "theme.meteor.colors.accent-color": "Accent Color", + "theme.meteor.colors.accent-color.description": "Main color of the GUI.", + "theme.meteor.colors.checkbox-color": "Checkbox Color", + "theme.meteor.colors.checkbox-color.description": "Color of checkbox.", + "theme.meteor.colors.plus-color": "Plus Color", + "theme.meteor.colors.plus-color.description": "Color of plus button.", + "theme.meteor.colors.minus-color": "Minus Color", + "theme.meteor.colors.minus-color.description": "Color of minus button.", + "theme.meteor.colors.favorite-color": "Favorite Color", + "theme.meteor.colors.favorite-color.description": "Color of checked favorite button.", + "theme.meteor.text.text-color": "Text Color", + "theme.meteor.text.text-color.description": "Color of text.", + "theme.meteor.text.text-secondary-text-color": "Text Secondary Text Color", + "theme.meteor.text.text-secondary-text-color.description": "Color of secondary text.", + "theme.meteor.text.text-highlight-color": "Text Highlight Color", + "theme.meteor.text.text-highlight-color.description": "Color of text highlighting.", + "theme.meteor.text.title-text-color": "Title Text Color", + "theme.meteor.text.title-text-color.description": "Color of title text.", + "theme.meteor.text.logged-in-text-color": "Logged In Text Color", + "theme.meteor.text.logged-in-text-color.description": "Color of logged in account name.", + "theme.meteor.text.placeholder-color": "Placeholder Color", + "theme.meteor.text.placeholder-color.description": "Color of placeholder text.", + "theme.meteor.background.background-color": "Background Color", + "theme.meteor.background.background-color.description": "Color of background.", + "theme.meteor.background.hovered-background-color": "Hovered Background Color", + "theme.meteor.background.hovered-background-color.description": "Color of background when hovered.", + "theme.meteor.background.pressed-background-color": "Pressed Background Color", + "theme.meteor.background.pressed-background-color.description": "Color of background when pressed.", + "theme.meteor.background.module-background-color": "Module Background Color", + "theme.meteor.background.module-background-color.description": "Color of module background when active.", + "theme.meteor.outline.outline-color": "Outline Color", + "theme.meteor.outline.outline-color.description": "Color of outline.", + "theme.meteor.outline.hovered-outline-color": "Hovered Outline Color", + "theme.meteor.outline.hovered-outline-color.description": "Color of outline when hovered.", + "theme.meteor.outline.pressed-outline-color": "Pressed Outline Color", + "theme.meteor.outline.pressed-outline-color.description": "Color of outline when pressed.", + "theme.meteor.separator.separator-text-color": "Separator Text Color", + "theme.meteor.separator.separator-text-color.description": "Color of separator text", + "theme.meteor.separator.separator-center-color": "Separator Center Color", + "theme.meteor.separator.separator-center-color.description": "Center color of separators.", + "theme.meteor.separator.separator-edges-color": "Separator Edges Color", + "theme.meteor.separator.separator-edges-color.description": "Color of separator edges.", + "theme.meteor.scrollbar.Scrollbar-color": "Scrollbar Color", + "theme.meteor.scrollbar.Scrollbar-color.description": "Color of Scrollbar.", + "theme.meteor.scrollbar.hovered-Scrollbar-color": "Hovered Scrollbar Color", + "theme.meteor.scrollbar.hovered-Scrollbar-color.description": "Color of Scrollbar when hovered.", + "theme.meteor.scrollbar.pressed-Scrollbar-color": "Pressed Scrollbar Color", + "theme.meteor.scrollbar.pressed-Scrollbar-color.description": "Color of Scrollbar when pressed.", + "theme.meteor.slider.slider-handle-color": "Slider Handle Color", + "theme.meteor.slider.slider-handle-color.description": "Color of slider-handle.", + "theme.meteor.slider.hovered-slider-handle-color": "Hovered Slider Handle Color", + "theme.meteor.slider.hovered-slider-handle-color.description": "Color of slider-handle when hovered.", + "theme.meteor.slider.pressed-slider-handle-color": "Pressed Slider Handle Color", + "theme.meteor.slider.pressed-slider-handle-color.description": "Color of slider-handle when pressed.", + "theme.meteor.slider.slider-left-color": "Slider Left Color", + "theme.meteor.slider.slider-left-color.description": "Color of slider left part.", + "theme.meteor.slider.slider-right-color": "Slider Right Color", + "theme.meteor.slider.slider-right-color.description": "Color of slider right part.", + "theme.meteor.starscript.starscript-text-color": "Starscript Text Color", + "theme.meteor.starscript.starscript-text-color.description": "Color of text in Starscript code.", + "theme.meteor.starscript.starscript-braces-color": "Starscript Braces Color", + "theme.meteor.starscript.starscript-braces-color.description": "Color of braces in Starscript code.", + "theme.meteor.starscript.starscript-parenthesis-color": "Starscript Parenthesis Color", + "theme.meteor.starscript.starscript-parenthesis-color.description": "Color of parenthesis in Starscript code.", + "theme.meteor.starscript.starscript-dots-color": "Starscript Dots Color", + "theme.meteor.starscript.starscript-dots-color.description": "Color of dots in starscript code.", + "theme.meteor.starscript.starscript-commas-color": "Starscript Commas Color", + "theme.meteor.starscript.starscript-commas-color.description": "Color of commas in starscript code.", + "theme.meteor.starscript.starscript-operators-color": "Starscript Operators Color", + "theme.meteor.starscript.starscript-operators-color.description": "Color of operators in Starscript code.", + "theme.meteor.starscript.starscript-strings-color": "Starscript Strings Color", + "theme.meteor.starscript.starscript-strings-color.description": "Color of strings in Starscript code.", + "theme.meteor.starscript.starscript-numbers-color": "Starscript Numbers Color", + "theme.meteor.starscript.starscript-numbers-color.description": "Color of numbers in Starscript code.", + "theme.meteor.starscript.starscript-keywords-color": "Starscript Keywords Color", + "theme.meteor.starscript.starscript-keywords-color.description": "Color of keywords in Starscript code.", + "theme.meteor.starscript.starscript-accessed-objects-color": "Starscript Accessed Objects Color", + "theme.meteor.starscript.starscript-accessed-objects-color.description": "Color of accessed objects (before a dot) in Starscript code.", + "category.combat": "Combat", "category.player": "Player", "category.movement": "Movement", @@ -167,6 +662,38 @@ "setting.group.flight": "Flight", "setting.group.range": "Range", "setting.group.smart": "Smart", + "setting.group.editor": "Editor", + "setting.group.bind": "Bind", + "setting.group.modules": "Modules", + "setting.group.chat": "Chat", + "setting.group.misc": "Misc", + "setting.group.save": "Save", + "setting.group.refreshing": "Refreshing", + "setting.group.cleanup": "Cleanup", + "setting.group.optional": "Optional", + "setting.group.position": "Position", + "setting.group.text": "Text", + "setting.group.background": "Background", + "setting.group.outline": "Outline", + "setting.group.separator": "Separator", + "setting.group.scrollbar": "Scrollbar", + "setting.group.slider": "Slider", + "setting.group.starscript": "Starscript", + "setting.group.scale": "Scale", + "setting.group.shown": "Shown", + "setting.group.durability": "Durability", + "setting.group.enchantments": "Enchantments", + "setting.group.distance": "Distance", + "setting.group.ping": "Ping", + "setting.group.anchors": "Anchors", + "setting.group.tracer": "Tracer", + "setting.group.base": "Base", + "setting.group.strings": "Strings", + "setting.group.whole-numbers": "Whole Numbers", + "setting.group.numbers": "Numbers", + "setting.group.checkboxes": "Checkboxes", + "setting.group.block-lists": "Block Lists", + "setting.group.item-lists": "Item Lists", "module.base.bind": "Bind", "module.base.bind.bind": "Bind: ", @@ -1320,6 +1847,17 @@ "module.block-esp.general.tracers": "Tracers", "module.block-esp.general.tracers.description": "Render tracer lines.", + "module.block-esp.data.shape-mode": "Shape Mode", + "module.block-esp.data.shape-mode.description": "How the shape is rendered.", + "module.block-esp.data.line-color": "Line Color", + "module.block-esp.data.line-color.description": "Color of lines.", + "module.block-esp.data.side-color": "Side Color", + "module.block-esp.data.side-color.description": "Color of sides.", + "module.block-esp.data.tracer": "Tracer", + "module.block-esp.data.tracer.description": "If tracer line should be drawn to this block.", + "module.block-esp.data.tracer-color": "Tracer Color", + "module.block-esp.data.tracer-color.description": "Color of the tracer line.", + "module.packet-mine": "Packet Mine", "module.packet-mine.description": "Sends packets to mine blocks without the mining animation.", "module.packet-mine.general.delay": "Delay", @@ -3144,6 +3682,56 @@ "module.marker": "Marker", "module.marker.description": "Renders shapes. Useful for large scale projects", + "marker.sphere-2d.base.name": "Name", + "marker.sphere-2d.base.name.description": "Custom name for this marker.", + "marker.sphere-2d.base.description": "Description", + "marker.sphere-2d.base.description.description": "Custom description for this marker.", + "marker.sphere-2d.base.dimension": "Dimension", + "marker.sphere-2d.base.dimension.description": "In which dimension this marker should be visible.", + "marker.sphere-2d.base.active": "Active", + "marker.sphere-2d.base.active.description": "Is this marker visible.", + "marker.sphere-2d.general.center": "Center", + "marker.sphere-2d.general.center.description": "Center of the sphere", + "marker.sphere-2d.general.radius": "Radius", + "marker.sphere-2d.general.radius.description": "Radius of the sphere", + "marker.sphere-2d.general.layer": "Layer", + "marker.sphere-2d.general.layer.description": "Which layer to render", + "marker.sphere-2d.render.limit-render-range": "Limit Render Range", + "marker.sphere-2d.render.limit-render-range.description": "Whether to limit rendering range (useful in very large circles)", + "marker.sphere-2d.render.render-range": "Render Range", + "marker.sphere-2d.render.render-range.description": "Rendering range", + "marker.sphere-2d.render.shape-mode": "Shape Mode", + "marker.sphere-2d.render.shape-mode.description": "How the shapes are rendered.", + "marker.sphere-2d.render.side-color": "Side Color", + "marker.sphere-2d.render.side-color.description": "The color of the sides of the blocks being rendered.", + "marker.sphere-2d.render.line-color": "Line Color", + "marker.sphere-2d.render.line-color.description": "The color of the lines of the blocks being rendered.", + "marker.sphere-2d.keybinding.next-layer-keybind": "Next Layer Keybind", + "marker.sphere-2d.keybinding.next-layer-keybind.description": "Keybind to increment layer", + "marker.sphere-2d.keybinding.prev-layer-keybind": "Prev Layer Keybind", + "marker.sphere-2d.keybinding.prev-layer-keybind.description": "Keybind to increment layer", + "marker.cuboid.base.name": "Name", + "marker.cuboid.base.name.description": "Custom name for this marker.", + "marker.cuboid.base.description": "Description", + "marker.cuboid.base.description.description": "Custom description for this marker.", + "marker.cuboid.base.dimension": "Dimension", + "marker.cuboid.base.dimension.description": "In which dimension this marker should be visible.", + "marker.cuboid.base.active": "Active", + "marker.cuboid.base.active.description": "Is this marker visible.", + "marker.cuboid.general.pos-1": "Pos 1", + "marker.cuboid.general.pos-1.description": "1st corner of the cuboid", + "marker.cuboid.general.pos-2": "Pos 2", + "marker.cuboid.general.pos-2.description": "2nd corner of the cuboid", + "marker.cuboid.render.mode": "Mode", + "marker.cuboid.render.mode.description": "What mode to use for this marker.", + "marker.cuboid.render.shape-mode": "Shape Mode", + "marker.cuboid.render.shape-mode.description": "How the shapes are rendered.", + "marker.cuboid.render.side-color": "Side Color", + "marker.cuboid.render.side-color.description": "The color of the sides of the blocks being rendered.", + "marker.cuboid.render.line-color": "Line Color", + "marker.cuboid.render.line-color.description": "The color of the lines of the blocks being rendered.", + + "module.criticals": "Criticals", "module.criticals.description": "Performs critical attacks when you hit your target.", "module.criticals.general.mode": "Mode", From a3fc6e63347899b9994ff270876fdaf0a5ff1d99 Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Mon, 12 Jan 2026 23:18:21 -0500 Subject: [PATCH 47/52] support the entire utf 16 plane in font rendering --- .../renderer/text/CustomTextRenderer.java | 9 +- .../meteorclient/renderer/text/Font.java | 203 ++++++++++++------ .../meteorclient/systems/hud/HudRenderer.java | 13 +- 3 files changed, 143 insertions(+), 82 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/renderer/text/CustomTextRenderer.java b/src/main/java/meteordevelopment/meteorclient/renderer/text/CustomTextRenderer.java index c31faabc6e..f1242672a1 100644 --- a/src/main/java/meteordevelopment/meteorclient/renderer/text/CustomTextRenderer.java +++ b/src/main/java/meteordevelopment/meteorclient/renderer/text/CustomTextRenderer.java @@ -8,6 +8,7 @@ import meteordevelopment.meteorclient.renderer.MeshBuilder; import meteordevelopment.meteorclient.renderer.MeshRenderer; import meteordevelopment.meteorclient.renderer.MeteorRenderPipelines; +import meteordevelopment.meteorclient.renderer.Texture; import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.render.color.Color; import net.minecraft.client.MinecraftClient; @@ -38,7 +39,7 @@ public CustomTextRenderer(FontFace fontFace) { fonts = new Font[5]; for (int i = 0; i < fonts.length; i++) { - fonts[i] = new Font(buffer, (int) Math.round(27 * ((i * 0.5) + 1))); + fonts[i] = new Font(fontFace, buffer, (int) Math.round(27 * ((i * 0.5) + 1))); } } @@ -125,11 +126,13 @@ public void end() { if (!scaleOnly) { mesh.end(); + Texture fontAtlas = font.getTexture(); + MeshRenderer.begin() .attachments(MinecraftClient.getInstance().getFramebuffer()) .pipeline(MeteorRenderPipelines.UI_TEXT) .mesh(mesh) - .sampler("u_Texture", font.texture.getGlTextureView(), font.texture.getSampler()) + .sampler("u_Texture", fontAtlas.getGlTextureView(), fontAtlas.getSampler()) .end(); } @@ -139,7 +142,7 @@ public void end() { public void destroy() { for (Font font : this.fonts) { - font.texture.close(); + font.close(); } } } diff --git a/src/main/java/meteordevelopment/meteorclient/renderer/text/Font.java b/src/main/java/meteordevelopment/meteorclient/renderer/text/Font.java index 7886610014..ad95a12927 100644 --- a/src/main/java/meteordevelopment/meteorclient/renderer/text/Font.java +++ b/src/main/java/meteordevelopment/meteorclient/renderer/text/Font.java @@ -7,10 +7,12 @@ import com.mojang.blaze3d.textures.FilterMode; import com.mojang.blaze3d.textures.TextureFormat; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import it.unimi.dsi.fastutil.ints.*; import meteordevelopment.meteorclient.renderer.MeshBuilder; import meteordevelopment.meteorclient.renderer.Texture; +import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.render.color.Color; +import org.jetbrains.annotations.Nullable; import org.lwjgl.BufferUtils; import org.lwjgl.stb.*; import org.lwjgl.system.MemoryStack; @@ -19,84 +21,125 @@ import java.nio.IntBuffer; public class Font { - public final Texture texture; + private static final int size = 2048; + private final Texture texture; + private final FontFace fontFace; private final int height; private final float scale; private final float ascent; private final Int2ObjectOpenHashMap charMap = new Int2ObjectOpenHashMap<>(); - private static final int size = 2048; + private final Int2IntMap pending = new Int2IntOpenHashMap(); + private @Nullable STBTTFontinfo fontInfo; + private @Nullable ByteBuffer fontBuffer; - public Font(ByteBuffer buffer, int height) { + public Font(FontFace fontFace, ByteBuffer buffer, int height) { + this.fontFace = fontFace; + this.fontBuffer = buffer; this.height = height; // Initialize font - STBTTFontinfo fontInfo = STBTTFontinfo.create(); - STBTruetype.stbtt_InitFont(fontInfo, buffer); + STBTTFontinfo fontInfo = this.getOrCreateFontInfo(); + texture = new Texture(size, size, TextureFormat.RED8, FilterMode.LINEAR, FilterMode.LINEAR); + scale = STBTruetype.stbtt_ScaleForPixelHeight(fontInfo, height); + + // Get font vertical ascent + try (MemoryStack stack = MemoryStack.stackPush()) { + IntBuffer ascent = stack.mallocInt(1); + STBTruetype.stbtt_GetFontVMetrics(fontInfo, ascent, null, null); + this.ascent = ascent.get(0); + } + } + + public Font(FontFace fontFace, int height) { + this(fontFace, readFont(fontFace), height); + } + private void renderAndUploadAtlas() { // Allocate buffers - ByteBuffer bitmap = BufferUtils.createByteBuffer(size * size); - STBTTPackedchar.Buffer[] cdata = { - STBTTPackedchar.create(95), // Basic Latin - STBTTPackedchar.create(96), // Latin 1 Supplement - STBTTPackedchar.create(128), // Latin Extended-A - STBTTPackedchar.create(144), // Greek and Coptic - STBTTPackedchar.create(256), // Cyrillic - STBTTPackedchar.create(1) // infinity symbol - }; + int chars = charMap.size() + pending.size(); - // create and initialise packing context - STBTTPackContext packContext = STBTTPackContext.create(); - STBTruetype.stbtt_PackBegin(packContext, bitmap, size, size, 0 ,1); + STBTTPackRange.Buffer packRange = STBTTPackRange.create(1); + STBTTPackedchar.Buffer packedCharBuffer = STBTTPackedchar.create(chars); // create the pack range, populate with the specific packing ranges - STBTTPackRange.Buffer packRange = STBTTPackRange.create(cdata.length); - packRange.put(STBTTPackRange.create().set(height, 32, null, 95, cdata[0], (byte) 2, (byte) 2)); - packRange.put(STBTTPackRange.create().set(height, 160, null, 96, cdata[1], (byte) 2, (byte) 2)); - packRange.put(STBTTPackRange.create().set(height, 256, null, 128, cdata[2], (byte) 2, (byte) 2)); - packRange.put(STBTTPackRange.create().set(height, 880, null, 144, cdata[3], (byte) 2, (byte) 2)); - packRange.put(STBTTPackRange.create().set(height, 1024, null, 256, cdata[4], (byte) 2, (byte) 2)); - packRange.put(STBTTPackRange.create().set(height, 8734, null, 1, cdata[5], (byte) 2, (byte) 2)); // lol + IntBuffer charBuffer = BufferUtils.createIntBuffer(chars); + for (int c : charMap.keySet()) charBuffer.put(c); + charMap.clear(); + for (int c : pending.keySet()) charBuffer.put(c); + pending.clear(); + charBuffer.flip(); + + packRange.put(STBTTPackRange.create().set(height, 0, charBuffer, chars, packedCharBuffer, (byte) 0, (byte) 0)); packRange.flip(); - // write and finish - STBTruetype.stbtt_PackFontRanges(packContext, buffer, 0, packRange); + // create and initialise packing context + ByteBuffer bitmap = BufferUtils.createByteBuffer(size * size); + + STBTTPackContext packContext = STBTTPackContext.create(); + STBTruetype.stbtt_PackBegin(packContext, bitmap, size, size, 0 ,1); + + // pack and upload + STBTruetype.stbtt_PackFontRanges(packContext, this.fontBuffer, 0, packRange); STBTruetype.stbtt_PackEnd(packContext); - // Create texture object and get font scale - texture = new Texture(size, size, TextureFormat.RED8, FilterMode.LINEAR, FilterMode.LINEAR); texture.upload(bitmap); - scale = STBTruetype.stbtt_ScaleForPixelHeight(fontInfo, height); - // Get font vertical ascent - try (MemoryStack stack = MemoryStack.stackPush()) { - IntBuffer ascent = stack.mallocInt(1); - STBTruetype.stbtt_GetFontVMetrics(fontInfo, ascent, null, null); - this.ascent = ascent.get(0); + // update char data + for (int i = 0; i < chars; i++) { + int codepoint = charBuffer.get(i); + STBTTPackedchar packedChar = packedCharBuffer.get(i); + + float ipw = 1f / size; // pixel width and height + float iph = 1f / size; + + charMap.put(codepoint, new CharData( + packedChar.xoff(), + packedChar.yoff(), + packedChar.xoff2(), + packedChar.yoff2(), + packedChar.x0() * ipw, + packedChar.y0() * iph, + packedChar.x1() * ipw, + packedChar.y1() * iph, + packedChar.xadvance() + )); } - for (int i = 0; i < cdata.length; i++) { - STBTTPackedchar.Buffer cbuf = cdata[i]; - int offset = packRange.get(i).first_unicode_codepoint_in_range(); - - for (int j = 0; j < cbuf.capacity(); j++) { - STBTTPackedchar packedChar = cbuf.get(j); - - float ipw = 1f / size; // pixel width and height - float iph = 1f / size; - - charMap.put(j + offset, new CharData( - packedChar.xoff(), - packedChar.yoff(), - packedChar.xoff2(), - packedChar.yoff2(), - packedChar.x0() * ipw, - packedChar.y0() * iph, - packedChar.x1() * ipw, - packedChar.y1() * iph, - packedChar.xadvance() - )); - } + // clear + this.fontInfo = null; + this.fontBuffer = null; + } + + private STBTTFontinfo getOrCreateFontInfo() { + if (this.fontInfo != null) { + return this.fontInfo; } + + if (this.fontBuffer == null) { + this.fontBuffer = readFont(this.fontFace); + } + + STBTTFontinfo fontInfo = STBTTFontinfo.create(); + STBTruetype.stbtt_InitFont(fontInfo, fontBuffer); + + return this.fontInfo = fontInfo; + } + + private static ByteBuffer readFont(FontFace fontFace) { + byte[] data = Utils.readBytes(fontFace.toStream()); + return BufferUtils.createByteBuffer(data.length).put(data).flip(); + } + + private int addCharacter(int codepoint) { + return pending.computeIfAbsent(codepoint, c -> { + STBTTFontinfo fontInfo = this.getOrCreateFontInfo(); + + try (MemoryStack stack = MemoryStack.stackPush()) { + IntBuffer advance = stack.mallocInt(1); + STBTruetype.stbtt_GetCodepointHMetrics(fontInfo, c, advance, null); + return advance.get(); + } + }); } public double getWidth(String string, int length) { @@ -104,10 +147,13 @@ public double getWidth(String string, int length) { for (int i = 0; i < length; i++) { int cp = string.charAt(i); - CharData c = charMap.get(cp); - if (c == null) c = charMap.get(32); - - width += c.xAdvance; + @Nullable CharData c = charMap.get(cp); + if (c != null) { + width += c.xAdvance; + } else { + int advance = addCharacter(cp); + width += advance * this.scale; + } } return width; @@ -125,20 +171,35 @@ public double render(MeshBuilder mesh, String string, double x, double y, Color for (int i = 0; i < length; i++) { int cp = string.charAt(i); - CharData c = charMap.get(cp); - if (c == null) c = charMap.get(32); + @Nullable CharData c = charMap.get(cp); + if (c != null) { + mesh.quad( + mesh.vec2(x + c.x0 * scale, y + c.y0 * scale).vec2(c.u0, c.v0).color(color).next(), + mesh.vec2(x + c.x0 * scale, y + c.y1 * scale).vec2(c.u0, c.v1).color(color).next(), + mesh.vec2(x + c.x1 * scale, y + c.y1 * scale).vec2(c.u1, c.v1).color(color).next(), + mesh.vec2(x + c.x1 * scale, y + c.y0 * scale).vec2(c.u1, c.v0).color(color).next() + ); + + x += c.xAdvance * scale; + } else { + int advance = addCharacter(cp); + x += advance * this.scale * scale; + } + } - mesh.quad( - mesh.vec2(x + c.x0 * scale, y + c.y0 * scale).vec2(c.u0, c.v0).color(color).next(), - mesh.vec2(x + c.x0 * scale, y + c.y1 * scale).vec2(c.u0, c.v1).color(color).next(), - mesh.vec2(x + c.x1 * scale, y + c.y1 * scale).vec2(c.u1, c.v1).color(color).next(), - mesh.vec2(x + c.x1 * scale, y + c.y0 * scale).vec2(c.u1, c.v0).color(color).next() - ); + return x; + } - x += c.xAdvance * scale; + public Texture getTexture() { + if (fontInfo != null) { + renderAndUploadAtlas(); } - return x; + return this.texture; + } + + public void close() { + this.texture.close(); } private record CharData(float x0, float y0, float x1, float y1, float u0, float v0, float u1, float v1, float xAdvance) {} diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/HudRenderer.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/HudRenderer.java index 3316565d67..5ee5cb0a77 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/HudRenderer.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/HudRenderer.java @@ -27,9 +27,7 @@ import net.minecraft.util.Identifier; import org.joml.Quaternionf; import org.joml.Vector3f; -import org.lwjgl.BufferUtils; -import java.nio.ByteBuffer; import java.time.Duration; import java.util.ArrayList; import java.util.Iterator; @@ -85,11 +83,13 @@ public void end() { FontHolder fontHolder = it.next(); if (fontHolder.visited) { + Texture fontAtlas = fontHolder.font.getTexture(); + MeshRenderer.begin() .attachments(mc.getFramebuffer()) .pipeline(MeteorRenderPipelines.UI_TEXT) .mesh(fontHolder.getMesh()) - .sampler("u_Texture", fontHolder.font.texture.getGlTextureView(), fontHolder.font.texture.getSampler()) + .sampler("u_Texture", fontAtlas.getGlTextureView(), fontAtlas.getSampler()) .end(); } else { @@ -298,10 +298,7 @@ private void onCustomFontChanged(CustomFontChangedEvent event) { } private static FontHolder loadFont(int height) { - byte[] data = Utils.readBytes(Fonts.RENDERER.fontFace.toStream()); - ByteBuffer buffer = BufferUtils.createByteBuffer(data.length).put(data).flip(); - - return new FontHolder(new Font(buffer, height)); + return new FontHolder(new Font(Fonts.RENDERER.fontFace, height)); } private static class FontHolder { @@ -321,7 +318,7 @@ public MeshBuilder getMesh() { } public void destroy() { - font.texture.close(); + font.close(); } } } From b536421f312214172d82491d52831fbbcb869dae Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Tue, 13 Jan 2026 17:46:23 -0500 Subject: [PATCH 48/52] dont invalidate existing char data when updating glyph atlas --- .../meteorclient/renderer/text/Font.java | 157 ++++++++++-------- 1 file changed, 91 insertions(+), 66 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/renderer/text/Font.java b/src/main/java/meteordevelopment/meteorclient/renderer/text/Font.java index ad95a12927..565002b165 100644 --- a/src/main/java/meteordevelopment/meteorclient/renderer/text/Font.java +++ b/src/main/java/meteordevelopment/meteorclient/renderer/text/Font.java @@ -5,6 +5,8 @@ package meteordevelopment.meteorclient.renderer.text; +import com.mojang.blaze3d.opengl.GlConst; +import com.mojang.blaze3d.opengl.GlStateManager; import com.mojang.blaze3d.textures.FilterMode; import com.mojang.blaze3d.textures.TextureFormat; import it.unimi.dsi.fastutil.ints.*; @@ -12,10 +14,13 @@ import meteordevelopment.meteorclient.renderer.Texture; import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.render.color.Color; +import net.minecraft.client.texture.GlTexture; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.lwjgl.BufferUtils; import org.lwjgl.stb.*; import org.lwjgl.system.MemoryStack; +import org.lwjgl.system.MemoryUtil; import java.nio.ByteBuffer; import java.nio.IntBuffer; @@ -28,20 +33,28 @@ public class Font { private final float scale; private final float ascent; private final Int2ObjectOpenHashMap charMap = new Int2ObjectOpenHashMap<>(); - private final Int2IntMap pending = new Int2IntOpenHashMap(); - private @Nullable STBTTFontinfo fontInfo; - private @Nullable ByteBuffer fontBuffer; + private final STBTTPackContext packContext; + private final ByteBuffer fontAtlasBuffer; + private @Nullable ByteBuffer fileBuffer; - public Font(FontFace fontFace, ByteBuffer buffer, int height) { + public Font(FontFace fontFace, @NotNull ByteBuffer buffer, int height) { this.fontFace = fontFace; - this.fontBuffer = buffer; + this.fileBuffer = buffer; this.height = height; - // Initialize font - STBTTFontinfo fontInfo = this.getOrCreateFontInfo(); + // allocate data + STBTTFontinfo fontInfo = STBTTFontinfo.create(); + STBTruetype.stbtt_InitFont(fontInfo, buffer); + texture = new Texture(size, size, TextureFormat.RED8, FilterMode.LINEAR, FilterMode.LINEAR); scale = STBTruetype.stbtt_ScaleForPixelHeight(fontInfo, height); + // initialize font info & zero out texture + fontAtlasBuffer = BufferUtils.createByteBuffer(size * size); + + packContext = STBTTPackContext.create(); + STBTruetype.stbtt_PackBegin(packContext, fontAtlasBuffer, size, size, 0 ,1); + // Get font vertical ascent try (MemoryStack stack = MemoryStack.stackPush()) { IntBuffer ascent = stack.mallocInt(1); @@ -54,9 +67,23 @@ public Font(FontFace fontFace, int height) { this(fontFace, readFont(fontFace), height); } - private void renderAndUploadAtlas() { + private void upload() { + GlStateManager._bindTexture(((GlTexture) this.texture.getGlTexture()).getGlId()); + GlStateManager._pixelStore(GlConst.GL_UNPACK_ROW_LENGTH, size); + GlStateManager._pixelStore(GlConst.GL_UNPACK_SKIP_PIXELS, 0); + GlStateManager._pixelStore(GlConst.GL_UNPACK_SKIP_ROWS, 0); + GlStateManager._pixelStore(GlConst.GL_UNPACK_ALIGNMENT, 1); + GlStateManager._texSubImage2D(GlConst.GL_TEXTURE_2D, 0, 0, 0, size, size, GlConst.GL_RED, GlConst.GL_UNSIGNED_BYTE, MemoryUtil.memAddress0(this.fontAtlasBuffer)); + } + + // currently unused, but useful in the future hopefully + private void regenerateAtlas() { + if (this.fileBuffer == null) { + this.fileBuffer = readFont(this.fontFace); + } + // Allocate buffers - int chars = charMap.size() + pending.size(); + int chars = charMap.size(); STBTTPackRange.Buffer packRange = STBTTPackRange.create(1); STBTTPackedchar.Buffer packedCharBuffer = STBTTPackedchar.create(chars); @@ -65,24 +92,17 @@ private void renderAndUploadAtlas() { IntBuffer charBuffer = BufferUtils.createIntBuffer(chars); for (int c : charMap.keySet()) charBuffer.put(c); charMap.clear(); - for (int c : pending.keySet()) charBuffer.put(c); - pending.clear(); charBuffer.flip(); packRange.put(STBTTPackRange.create().set(height, 0, charBuffer, chars, packedCharBuffer, (byte) 0, (byte) 0)); packRange.flip(); // create and initialise packing context - ByteBuffer bitmap = BufferUtils.createByteBuffer(size * size); - - STBTTPackContext packContext = STBTTPackContext.create(); - STBTruetype.stbtt_PackBegin(packContext, bitmap, size, size, 0 ,1); // pack and upload - STBTruetype.stbtt_PackFontRanges(packContext, this.fontBuffer, 0, packRange); - STBTruetype.stbtt_PackEnd(packContext); + STBTruetype.stbtt_PackFontRanges(packContext, this.fileBuffer, 0, packRange); - texture.upload(bitmap); + this.upload(); // update char data for (int i = 0; i < chars; i++) { @@ -106,23 +126,7 @@ private void renderAndUploadAtlas() { } // clear - this.fontInfo = null; - this.fontBuffer = null; - } - - private STBTTFontinfo getOrCreateFontInfo() { - if (this.fontInfo != null) { - return this.fontInfo; - } - - if (this.fontBuffer == null) { - this.fontBuffer = readFont(this.fontFace); - } - - STBTTFontinfo fontInfo = STBTTFontinfo.create(); - STBTruetype.stbtt_InitFont(fontInfo, fontBuffer); - - return this.fontInfo = fontInfo; + this.fileBuffer = null; } private static ByteBuffer readFont(FontFace fontFace) { @@ -130,15 +134,43 @@ private static ByteBuffer readFont(FontFace fontFace) { return BufferUtils.createByteBuffer(data.length).put(data).flip(); } - private int addCharacter(int codepoint) { - return pending.computeIfAbsent(codepoint, c -> { - STBTTFontinfo fontInfo = this.getOrCreateFontInfo(); - - try (MemoryStack stack = MemoryStack.stackPush()) { - IntBuffer advance = stack.mallocInt(1); - STBTruetype.stbtt_GetCodepointHMetrics(fontInfo, c, advance, null); - return advance.get(); + private CharData getCharData(int codepoint) { + return charMap.computeIfAbsent(codepoint, c -> { + if (this.fileBuffer == null) { + this.fileBuffer = readFont(this.fontFace); } + + // allocate buffers + STBTTPackRange.Buffer packRange = STBTTPackRange.create(1); + STBTTPackedchar.Buffer packedCharBuffer = STBTTPackedchar.create(1); + + IntBuffer charBuffer = BufferUtils.createIntBuffer(1); + charBuffer.put(codepoint); + charBuffer.flip(); + + packRange.put(STBTTPackRange.create().set(height, 0, charBuffer, 1, packedCharBuffer, (byte) 0, (byte) 0)); + packRange.flip(); + + // pack and upload + STBTruetype.stbtt_PackFontRanges(packContext, this.fileBuffer, 0, packRange); + + // update char data + STBTTPackedchar packedChar = packedCharBuffer.get(0); + + float ipw = 1f / size; // pixel width and height + float iph = 1f / size; + + return new CharData( + packedChar.xoff(), + packedChar.yoff(), + packedChar.xoff2(), + packedChar.yoff2(), + packedChar.x0() * ipw, + packedChar.y0() * iph, + packedChar.x1() * ipw, + packedChar.y1() * iph, + packedChar.xadvance() + ); }); } @@ -147,13 +179,8 @@ public double getWidth(String string, int length) { for (int i = 0; i < length; i++) { int cp = string.charAt(i); - @Nullable CharData c = charMap.get(cp); - if (c != null) { - width += c.xAdvance; - } else { - int advance = addCharacter(cp); - width += advance * this.scale; - } + CharData c = this.getCharData(cp); + width += c.xAdvance(); } return width; @@ -171,28 +198,25 @@ public double render(MeshBuilder mesh, String string, double x, double y, Color for (int i = 0; i < length; i++) { int cp = string.charAt(i); - @Nullable CharData c = charMap.get(cp); - if (c != null) { - mesh.quad( - mesh.vec2(x + c.x0 * scale, y + c.y0 * scale).vec2(c.u0, c.v0).color(color).next(), - mesh.vec2(x + c.x0 * scale, y + c.y1 * scale).vec2(c.u0, c.v1).color(color).next(), - mesh.vec2(x + c.x1 * scale, y + c.y1 * scale).vec2(c.u1, c.v1).color(color).next(), - mesh.vec2(x + c.x1 * scale, y + c.y0 * scale).vec2(c.u1, c.v0).color(color).next() - ); - - x += c.xAdvance * scale; - } else { - int advance = addCharacter(cp); - x += advance * this.scale * scale; - } + CharData c = this.getCharData(cp); + mesh.quad( + mesh.vec2(x + c.x0() * scale, y + c.y0() * scale).vec2(c.u0(), c.v0()).color(color).next(), + mesh.vec2(x + c.x0() * scale, y + c.y1() * scale).vec2(c.u0(), c.v1()).color(color).next(), + mesh.vec2(x + c.x1() * scale, y + c.y1() * scale).vec2(c.u1(), c.v1()).color(color).next(), + mesh.vec2(x + c.x1() * scale, y + c.y0() * scale).vec2(c.u1(), c.v0()).color(color).next() + ); + + x += c.xAdvance() * scale; } return x; } public Texture getTexture() { - if (fontInfo != null) { - renderAndUploadAtlas(); + // flush updates + if (this.fileBuffer != null) { + this.upload(); + this.fileBuffer = null; } return this.texture; @@ -200,6 +224,7 @@ public Texture getTexture() { public void close() { this.texture.close(); + STBTruetype.stbtt_PackEnd(this.packContext); } private record CharData(float x0, float y0, float x1, float y1, float u0, float v0, float u1, float v1, float xAdvance) {} From 108369f42b5e6812049c83b59d58e07da1f76fc5 Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Tue, 13 Jan 2026 18:45:27 -0500 Subject: [PATCH 49/52] weakref the file buffer --- .../meteorclient/renderer/text/Font.java | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/renderer/text/Font.java b/src/main/java/meteordevelopment/meteorclient/renderer/text/Font.java index 565002b165..16de5d125b 100644 --- a/src/main/java/meteordevelopment/meteorclient/renderer/text/Font.java +++ b/src/main/java/meteordevelopment/meteorclient/renderer/text/Font.java @@ -22,6 +22,7 @@ import org.lwjgl.system.MemoryStack; import org.lwjgl.system.MemoryUtil; +import java.lang.ref.WeakReference; import java.nio.ByteBuffer; import java.nio.IntBuffer; @@ -36,10 +37,12 @@ public class Font { private final STBTTPackContext packContext; private final ByteBuffer fontAtlasBuffer; private @Nullable ByteBuffer fileBuffer; + private WeakReference fileBufferRef; public Font(FontFace fontFace, @NotNull ByteBuffer buffer, int height) { this.fontFace = fontFace; this.fileBuffer = buffer; + this.fileBufferRef = new WeakReference<>(buffer); this.height = height; // allocate data @@ -76,11 +79,23 @@ private void upload() { GlStateManager._texSubImage2D(GlConst.GL_TEXTURE_2D, 0, 0, 0, size, size, GlConst.GL_RED, GlConst.GL_UNSIGNED_BYTE, MemoryUtil.memAddress0(this.fontAtlasBuffer)); } - // currently unused, but useful in the future hopefully - private void regenerateAtlas() { + private ByteBuffer getFileBuffer() { if (this.fileBuffer == null) { - this.fileBuffer = readFont(this.fontFace); + if (this.fileBufferRef.get() == null) { + ByteBuffer buffer = readFont(this.fontFace); + this.fileBufferRef = new WeakReference<>(buffer); + return this.fileBuffer = buffer; + } else { + return this.fileBuffer = this.fileBufferRef.get(); + } + } else { + return this.fileBuffer; } + } + + // currently unused, but useful in the future hopefully + private void regenerateAtlas() { + ByteBuffer fileBuffer = this.getFileBuffer(); // Allocate buffers int chars = charMap.size(); @@ -100,7 +115,7 @@ private void regenerateAtlas() { // create and initialise packing context // pack and upload - STBTruetype.stbtt_PackFontRanges(packContext, this.fileBuffer, 0, packRange); + STBTruetype.stbtt_PackFontRanges(packContext, fileBuffer, 0, packRange); this.upload(); @@ -136,9 +151,7 @@ private static ByteBuffer readFont(FontFace fontFace) { private CharData getCharData(int codepoint) { return charMap.computeIfAbsent(codepoint, c -> { - if (this.fileBuffer == null) { - this.fileBuffer = readFont(this.fontFace); - } + ByteBuffer fileBuffer = this.getFileBuffer(); // allocate buffers STBTTPackRange.Buffer packRange = STBTTPackRange.create(1); @@ -152,7 +165,7 @@ private CharData getCharData(int codepoint) { packRange.flip(); // pack and upload - STBTruetype.stbtt_PackFontRanges(packContext, this.fileBuffer, 0, packRange); + STBTruetype.stbtt_PackFontRanges(packContext, fileBuffer, 0, packRange); // update char data STBTTPackedchar packedChar = packedCharBuffer.get(0); From 4cd2c9524f30e593c7b973e50e489243aeefe298 Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Wed, 14 Jan 2026 14:55:15 -0500 Subject: [PATCH 50/52] slight optimization --- .../meteorclient/renderer/text/Font.java | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/renderer/text/Font.java b/src/main/java/meteordevelopment/meteorclient/renderer/text/Font.java index 16de5d125b..30196b4f43 100644 --- a/src/main/java/meteordevelopment/meteorclient/renderer/text/Font.java +++ b/src/main/java/meteordevelopment/meteorclient/renderer/text/Font.java @@ -93,6 +93,11 @@ private ByteBuffer getFileBuffer() { } } + private static ByteBuffer readFont(FontFace fontFace) { + byte[] data = Utils.readBytes(fontFace.toStream()); + return BufferUtils.createByteBuffer(data.length).put(data).flip(); + } + // currently unused, but useful in the future hopefully private void regenerateAtlas() { ByteBuffer fileBuffer = this.getFileBuffer(); @@ -144,11 +149,6 @@ private void regenerateAtlas() { this.fileBuffer = null; } - private static ByteBuffer readFont(FontFace fontFace) { - byte[] data = Utils.readBytes(fontFace.toStream()); - return BufferUtils.createByteBuffer(data.length).put(data).flip(); - } - private CharData getCharData(int codepoint) { return charMap.computeIfAbsent(codepoint, c -> { ByteBuffer fileBuffer = this.getFileBuffer(); @@ -157,11 +157,7 @@ private CharData getCharData(int codepoint) { STBTTPackRange.Buffer packRange = STBTTPackRange.create(1); STBTTPackedchar.Buffer packedCharBuffer = STBTTPackedchar.create(1); - IntBuffer charBuffer = BufferUtils.createIntBuffer(1); - charBuffer.put(codepoint); - charBuffer.flip(); - - packRange.put(STBTTPackRange.create().set(height, 0, charBuffer, 1, packedCharBuffer, (byte) 0, (byte) 0)); + packRange.put(STBTTPackRange.create().set(height, codepoint, null, 1, packedCharBuffer, (byte) 0, (byte) 0)); packRange.flip(); // pack and upload From 4c42509a622da2e375ed64e84d6b7a5f06b6c10e Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Wed, 14 Jan 2026 14:57:04 -0500 Subject: [PATCH 51/52] correctly handle surrogate pairs Co-authored-by: Nora <50046813+noramibu@users.noreply.github.com> --- .../meteorclient/renderer/text/Font.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/renderer/text/Font.java b/src/main/java/meteordevelopment/meteorclient/renderer/text/Font.java index 30196b4f43..3df4180a64 100644 --- a/src/main/java/meteordevelopment/meteorclient/renderer/text/Font.java +++ b/src/main/java/meteordevelopment/meteorclient/renderer/text/Font.java @@ -186,10 +186,11 @@ private CharData getCharData(int codepoint) { public double getWidth(String string, int length) { double width = 0; - for (int i = 0; i < length; i++) { - int cp = string.charAt(i); + for (int i = 0; i < length;) { + int cp = string.codePointAt(i); CharData c = this.getCharData(cp); width += c.xAdvance(); + i += Character.charCount(cp); } return width; @@ -205,8 +206,8 @@ public double render(MeshBuilder mesh, String string, double x, double y, Color int length = string.length(); mesh.ensureCapacity(length * 4, length * 6); - for (int i = 0; i < length; i++) { - int cp = string.charAt(i); + for (int i = 0; i < length;) { + int cp = string.codePointAt(i); CharData c = this.getCharData(cp); mesh.quad( mesh.vec2(x + c.x0() * scale, y + c.y0() * scale).vec2(c.u0(), c.v0()).color(color).next(), @@ -216,6 +217,7 @@ public double render(MeshBuilder mesh, String string, double x, double y, Color ); x += c.xAdvance() * scale; + i += Character.charCount(cp); } return x; From 9c69beaa649874b529b0de83db4fade03b7c00b9 Mon Sep 17 00:00:00 2001 From: Crosby <32882447+crosby-moe@users.noreply.github.com> Date: Thu, 15 Jan 2026 15:46:33 -0500 Subject: [PATCH 52/52] use `NativeImage` for font atlas --- .../meteorclient/renderer/text/Font.java | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/renderer/text/Font.java b/src/main/java/meteordevelopment/meteorclient/renderer/text/Font.java index 3df4180a64..a15906244c 100644 --- a/src/main/java/meteordevelopment/meteorclient/renderer/text/Font.java +++ b/src/main/java/meteordevelopment/meteorclient/renderer/text/Font.java @@ -5,8 +5,7 @@ package meteordevelopment.meteorclient.renderer.text; -import com.mojang.blaze3d.opengl.GlConst; -import com.mojang.blaze3d.opengl.GlStateManager; +import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.textures.FilterMode; import com.mojang.blaze3d.textures.TextureFormat; import it.unimi.dsi.fastutil.ints.*; @@ -14,7 +13,7 @@ import meteordevelopment.meteorclient.renderer.Texture; import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.render.color.Color; -import net.minecraft.client.texture.GlTexture; +import net.minecraft.client.texture.NativeImage; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.lwjgl.BufferUtils; @@ -35,7 +34,7 @@ public class Font { private final float ascent; private final Int2ObjectOpenHashMap charMap = new Int2ObjectOpenHashMap<>(); private final STBTTPackContext packContext; - private final ByteBuffer fontAtlasBuffer; + private final NativeImage fontAtlas; private @Nullable ByteBuffer fileBuffer; private WeakReference fileBufferRef; @@ -53,10 +52,10 @@ public Font(FontFace fontFace, @NotNull ByteBuffer buffer, int height) { scale = STBTruetype.stbtt_ScaleForPixelHeight(fontInfo, height); // initialize font info & zero out texture - fontAtlasBuffer = BufferUtils.createByteBuffer(size * size); + fontAtlas = new NativeImage(NativeImage.Format.LUMINANCE, size, size, false); packContext = STBTTPackContext.create(); - STBTruetype.stbtt_PackBegin(packContext, fontAtlasBuffer, size, size, 0 ,1); + STBTruetype.nstbtt_PackBegin(packContext.address(), fontAtlas.imageId(), size, size, 0, 1, MemoryUtil.NULL); // Get font vertical ascent try (MemoryStack stack = MemoryStack.stackPush()) { @@ -71,12 +70,7 @@ public Font(FontFace fontFace, int height) { } private void upload() { - GlStateManager._bindTexture(((GlTexture) this.texture.getGlTexture()).getGlId()); - GlStateManager._pixelStore(GlConst.GL_UNPACK_ROW_LENGTH, size); - GlStateManager._pixelStore(GlConst.GL_UNPACK_SKIP_PIXELS, 0); - GlStateManager._pixelStore(GlConst.GL_UNPACK_SKIP_ROWS, 0); - GlStateManager._pixelStore(GlConst.GL_UNPACK_ALIGNMENT, 1); - GlStateManager._texSubImage2D(GlConst.GL_TEXTURE_2D, 0, 0, 0, size, size, GlConst.GL_RED, GlConst.GL_UNSIGNED_BYTE, MemoryUtil.memAddress0(this.fontAtlasBuffer)); + RenderSystem.getDevice().createCommandEncoder().writeToTexture(this.texture.getGlTexture(), this.fontAtlas); } private ByteBuffer getFileBuffer() { @@ -235,6 +229,7 @@ public Texture getTexture() { public void close() { this.texture.close(); + this.fontAtlas.close(); STBTruetype.stbtt_PackEnd(this.packContext); }