From 4b66aa2936d412bf78305456e4f87ae6099e3ae6 Mon Sep 17 00:00:00 2001 From: LunarClient Bot Date: Thu, 18 Jun 2026 04:42:48 +0000 Subject: [PATCH 1/2] Sync LunarClient Mods & Options --- .../com/lunarclient/apollo/mods/Mods.java | 6 +- .../apollo/mods/impl/ModArmorstatus.java | 56 +++ .../apollo/mods/impl/ModAttackIndicator.java | 389 ++++++++++++++++++ .../apollo/mods/impl/ModCrosshair.java | 11 + .../apollo/mods/impl/ModGuiScale.java | 75 ++++ docs/developers/mods/_meta.json | 2 + docs/developers/mods/armorstatus.mdx | 32 ++ docs/developers/mods/attackindicator.mdx | 212 ++++++++++ docs/developers/mods/crosshair.mdx | 6 + docs/developers/mods/guiscale.mdx | 39 ++ 10 files changed, 827 insertions(+), 1 deletion(-) create mode 100644 api/src/main/java/com/lunarclient/apollo/mods/impl/ModAttackIndicator.java create mode 100644 api/src/main/java/com/lunarclient/apollo/mods/impl/ModGuiScale.java create mode 100644 docs/developers/mods/attackindicator.mdx create mode 100644 docs/developers/mods/guiscale.mdx diff --git a/api/src/main/java/com/lunarclient/apollo/mods/Mods.java b/api/src/main/java/com/lunarclient/apollo/mods/Mods.java index 01b90406..344016d6 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/Mods.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/Mods.java @@ -26,6 +26,7 @@ import com.lunarclient.apollo.mods.impl.Mod2dItems; import com.lunarclient.apollo.mods.impl.Mod3dSkins; import com.lunarclient.apollo.mods.impl.ModArmorstatus; +import com.lunarclient.apollo.mods.impl.ModAttackIndicator; import com.lunarclient.apollo.mods.impl.ModAudioSubtitles; import com.lunarclient.apollo.mods.impl.ModAutoTextActions; import com.lunarclient.apollo.mods.impl.ModAutoTextHotkey; @@ -49,6 +50,7 @@ import com.lunarclient.apollo.mods.impl.ModFps; import com.lunarclient.apollo.mods.impl.ModFreelook; import com.lunarclient.apollo.mods.impl.ModGlintColorizer; +import com.lunarclient.apollo.mods.impl.ModGuiScale; import com.lunarclient.apollo.mods.impl.ModHitColor; import com.lunarclient.apollo.mods.impl.ModHitbox; import com.lunarclient.apollo.mods.impl.ModHorseStats; @@ -145,6 +147,7 @@ public final class Mods { ModCoordinates.class, ModDayCounter.class, ModCrosshair.class, + ModAttackIndicator.class, ModPotionEffects.class, ModDirectionHud.class, ModWaypoints.class, @@ -219,9 +222,10 @@ public final class Mods { ModKillSounds.class, ModInventoryMod.class, ModF3Display.class, + ModGuiScale.class, ModRadio.class, - ModUhcOverlay.class, ModSba.class, + ModUhcOverlay.class, ModNeu.class ); diff --git a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModArmorstatus.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModArmorstatus.java index eaea4670..86420f90 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModArmorstatus.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModArmorstatus.java @@ -125,6 +125,40 @@ public final class ModArmorstatus { .notifyClient() .build(); + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption BACKGROUND = SimpleOption.builder() + .node("armorstatus", "background").type(TypeToken.get(Boolean.class)) + .defaultValue(false) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption BORDER = SimpleOption.builder() + .node("armorstatus", "border").type(TypeToken.get(Boolean.class)) + .defaultValue(false) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final NumberOption BORDER_THICKNESS = NumberOption.number() + .node("armorstatus", "border-thickness").type(TypeToken.get(Float.class)) + .min(0.5F).max(3.0F) + .defaultValue(0.5F) + .notifyClient() + .build(); + /** * No documentation available. * @@ -169,6 +203,28 @@ public final class ModArmorstatus { .notifyClient() .build(); + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption BACKGROUND_COLOR = SimpleOption.builder() + .node("armorstatus", "background-color").type(TypeToken.get(Color.class)) + .defaultValue(new Color(0, 0, 0, 111)) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption BORDER_COLOR = SimpleOption.builder() + .node("armorstatus", "border-color").type(TypeToken.get(Color.class)) + .defaultValue(new Color(0, 0, 0, 159)) + .notifyClient() + .build(); + /** * No documentation available. * diff --git a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModAttackIndicator.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModAttackIndicator.java new file mode 100644 index 00000000..2f4a41ea --- /dev/null +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModAttackIndicator.java @@ -0,0 +1,389 @@ +/* + * This file is part of Apollo, licensed under the MIT License. + * + * Copyright (c) 2026 Moonsworth + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package com.lunarclient.apollo.mods.impl; + +import com.lunarclient.apollo.option.NumberOption; +import com.lunarclient.apollo.option.SimpleOption; +import io.leangen.geantyref.TypeToken; +import java.awt.Color; + +/** + * Allows you to customize the crosshair attack indicator. + * + * @since %release_version% + */ +public final class ModAttackIndicator { + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption ENABLED = SimpleOption.builder() + .node("attack-indicator", "enabled").type(TypeToken.get(Boolean.class)) + .defaultValue(false) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption HORIZONTAL = SimpleOption.builder() + .node("attack-indicator", "horizontal").type(TypeToken.get(Boolean.class)) + .defaultValue(true) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final NumberOption SCALE = NumberOption.number() + .node("attack-indicator", "scale").type(TypeToken.get(Float.class)) + .min(0.25F).max(5.0F) + .defaultValue(1.0F) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption SHOW_IN_HUD_EDITOR = SimpleOption.builder() + .node("attack-indicator", "show-in-hud-editor").type(TypeToken.get(Boolean.class)) + .defaultValue(true) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption ALWAYS_SHOW = SimpleOption.builder() + .node("attack-indicator", "always-show").type(TypeToken.get(Boolean.class)) + .defaultValue(true) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption RENDER_ICON = SimpleOption.builder() + .node("attack-indicator", "render-icon").type(TypeToken.get(Boolean.class)) + .defaultValue(true) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption BACKGROUND = SimpleOption.builder() + .node("attack-indicator", "background").type(TypeToken.get(Boolean.class)) + .defaultValue(false) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption BACKGROUND_COLOR = SimpleOption.builder() + .node("attack-indicator", "background-color").type(TypeToken.get(Color.class)) + .defaultValue(new Color(0, 0, 0, 111)) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption BORDER = SimpleOption.builder() + .node("attack-indicator", "border").type(TypeToken.get(Boolean.class)) + .defaultValue(false) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final NumberOption BORDER_THICKNESS = NumberOption.number() + .node("attack-indicator", "border-thickness").type(TypeToken.get(Float.class)) + .min(0.5F).max(3.0F) + .defaultValue(0.5F) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption BORDER_COLOR = SimpleOption.builder() + .node("attack-indicator", "border-color").type(TypeToken.get(Color.class)) + .defaultValue(new Color(0, 0, 0, 159)) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption VANILLA_BLENDING = SimpleOption.builder() + .node("attack-indicator", "vanilla-blending").type(TypeToken.get(Boolean.class)) + .defaultValue(false) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption DYNAMIC_COLOR = SimpleOption.builder() + .node("attack-indicator", "dynamic-color").type(TypeToken.get(Boolean.class)) + .defaultValue(false) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption COLOR_LOW = SimpleOption.builder() + .node("attack-indicator", "color-low").type(TypeToken.get(Color.class)) + .defaultValue(new Color(255, 0, 0)) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption COLOR_HIGH = SimpleOption.builder() + .node("attack-indicator", "color-high").type(TypeToken.get(Color.class)) + .defaultValue(new Color(0, 255, 0)) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption COLOR = SimpleOption.builder() + .node("attack-indicator", "color").type(TypeToken.get(Color.class)) + .defaultValue(new Color(255, 255, 255)) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption SWORDS = SimpleOption.builder() + .node("attack-indicator", "swords").type(TypeToken.get(Boolean.class)) + .defaultValue(true) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption AXES = SimpleOption.builder() + .node("attack-indicator", "axes").type(TypeToken.get(Boolean.class)) + .defaultValue(true) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption PICKAXES = SimpleOption.builder() + .node("attack-indicator", "pickaxes").type(TypeToken.get(Boolean.class)) + .defaultValue(true) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption SHOVEL = SimpleOption.builder() + .node("attack-indicator", "shovel").type(TypeToken.get(Boolean.class)) + .defaultValue(true) + .notifyClient() + .build(); + + /** + * Show the generic attack swing cooldown when switching items (includes hand). + * + * @since %release_version% + */ + public static final SimpleOption NON_WEAPONS = SimpleOption.builder() + .comment("Show the generic attack swing cooldown when switching items (includes hand)") + .node("attack-indicator", "non-weapons").type(TypeToken.get(Boolean.class)) + .defaultValue(false) + .notifyClient() + .build(); + + /** + * Play a ding when the weapon cooldowns are done. + * + * @since %release_version% + */ + public static final SimpleOption ATTACK_INDICATOR_PLAY_SOUND_VANILLA = SimpleOption.builder() + .comment("Play a ding when the weapon cooldowns are done") + .node("attack-indicator", "attack-indicator-play-sound-vanilla").type(TypeToken.get(Boolean.class)) + .defaultValue(false) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption SLEEP = SimpleOption.builder() + .node("attack-indicator", "sleep").type(TypeToken.get(Boolean.class)) + .defaultValue(false) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption BLOCK_BREAKING = SimpleOption.builder() + .node("attack-indicator", "block-breaking").type(TypeToken.get(Boolean.class)) + .defaultValue(false) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption ENDER_PEARL = SimpleOption.builder() + .node("attack-indicator", "ender-pearl").type(TypeToken.get(Boolean.class)) + .defaultValue(false) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption CHORUS_FRUIT = SimpleOption.builder() + .node("attack-indicator", "chorus-fruit").type(TypeToken.get(Boolean.class)) + .defaultValue(false) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption BOWS = SimpleOption.builder() + .node("attack-indicator", "bows").type(TypeToken.get(Boolean.class)) + .defaultValue(false) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption SHIELDS = SimpleOption.builder() + .node("attack-indicator", "shields").type(TypeToken.get(Boolean.class)) + .defaultValue(false) + .notifyClient() + .build(); + + /** + * Foods & Potions. + * + * @since %release_version% + */ + public static final SimpleOption CONSUMABLES = SimpleOption.builder() + .comment("Foods & Potions") + .node("attack-indicator", "consumables").type(TypeToken.get(Boolean.class)) + .defaultValue(false) + .notifyClient() + .build(); + + /** + * Show capacity of storage items (bundles, shulker boxes). + * + * @since %release_version% + */ + public static final SimpleOption STORAGE = SimpleOption.builder() + .comment("Show capacity of storage items (bundles, shulker boxes)") + .node("attack-indicator", "storage").type(TypeToken.get(Boolean.class)) + .defaultValue(false) + .notifyClient() + .build(); + + /** + * Play a ding when the cooldowns/indicators are done (excluding Sleep Progress, Block Breaking, Consumables and Storage Items). + * + * @since %release_version% + */ + public static final SimpleOption ATTACK_INDICATOR_PLAY_SOUND_CUSTOM = SimpleOption.builder() + .comment("Play a ding when the cooldowns/indicators are done (excluding Sleep Progress, Block Breaking, Consumables and Storage Items)") + .node("attack-indicator", "attack-indicator-play-sound-custom").type(TypeToken.get(Boolean.class)) + .defaultValue(false) + .notifyClient() + .build(); + + private ModAttackIndicator() { + } + +} diff --git a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModCrosshair.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModCrosshair.java index 2895204b..ed43bff3 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModCrosshair.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModCrosshair.java @@ -46,6 +46,17 @@ public final class ModCrosshair { .notifyClient() .build(); + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption SHOW_IN_F5 = SimpleOption.builder() + .node("crosshair", "show-in-f5").type(TypeToken.get(Boolean.class)) + .defaultValue(true) + .notifyClient() + .build(); + /** * No documentation available. * diff --git a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModGuiScale.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModGuiScale.java new file mode 100644 index 00000000..87c787a6 --- /dev/null +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModGuiScale.java @@ -0,0 +1,75 @@ +/* + * This file is part of Apollo, licensed under the MIT License. + * + * Copyright (c) 2026 Moonsworth + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package com.lunarclient.apollo.mods.impl; + +import com.lunarclient.apollo.option.NumberOption; +import com.lunarclient.apollo.option.SimpleOption; +import io.leangen.geantyref.TypeToken; + +/** + * Allows you to set a custom GUI scale different from the Minecraft settings. + * + * @since %release_version% + */ +public final class ModGuiScale { + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final SimpleOption ENABLED = SimpleOption.builder() + .node("gui-scale", "enabled").type(TypeToken.get(Boolean.class)) + .defaultValue(false) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final NumberOption HOTBAR_SCALE = NumberOption.number() + .node("gui-scale", "hotbar-scale").type(TypeToken.get(Float.class)) + .min(0.25F).max(2.0F) + .defaultValue(1.0F) + .notifyClient() + .build(); + + /** + * No documentation available. + * + * @since %release_version% + */ + public static final NumberOption INVENTORY_SCALE = NumberOption.number() + .node("gui-scale", "inventory-scale").type(TypeToken.get(Integer.class)) + .min(1).max(5) + .defaultValue(2) + .notifyClient() + .build(); + + private ModGuiScale() { + } + +} diff --git a/docs/developers/mods/_meta.json b/docs/developers/mods/_meta.json index 6dbb83a5..5729f816 100644 --- a/docs/developers/mods/_meta.json +++ b/docs/developers/mods/_meta.json @@ -2,6 +2,7 @@ "2ditems": "2dItems", "3dskins": "3dSkins", "armorstatus": "Armorstatus", + "attackindicator": "AttackIndicator", "audiosubtitles": "AudioSubtitles", "autotextactions": "AutoTextActions", "autotexthotkey": "AutoTextHotkey", @@ -25,6 +26,7 @@ "fps": "Fps", "freelook": "Freelook", "glintcolorizer": "GlintColorizer", + "guiscale": "GuiScale", "hitbox": "Hitbox", "hitcolor": "HitColor", "horsestats": "HorseStats", diff --git a/docs/developers/mods/armorstatus.mdx b/docs/developers/mods/armorstatus.mdx index 8f186505..d7b8e96f 100644 --- a/docs/developers/mods/armorstatus.mdx +++ b/docs/developers/mods/armorstatus.mdx @@ -66,6 +66,26 @@ public void toggleArmorStatusExample(Player viewer, boolean value) { - Type: `Boolean` - Default: `true` +- __`BACKGROUND`__ + - Config Key: `background` + - Values + - Type: `Boolean` + - Default: `false` + +- __`BORDER`__ + - Config Key: `border` + - Values + - Type: `Boolean` + - Default: `false` + +- __`BORDER_THICKNESS`__ + - Config Key: `border-thickness` + - Values + - Type: `Float` + - Default: `0.5F` + - Minimum: `0.5F` + - Maximum: `3.0F` + - __`DAMAGE_OVERLAY`__ - Config Key: `damage-overlay` - Values @@ -90,6 +110,18 @@ public void toggleArmorStatusExample(Player viewer, boolean value) { - Type: `Boolean` - Default: `false` +- __`BACKGROUND_COLOR`__ + - Config Key: `background-color` + - Values + - Type: `String` + - Default: `#6F000000` + +- __`BORDER_COLOR`__ + - Config Key: `border-color` + - Values + - Type: `String` + - Default: `#9F000000` + - __`STATIC_DAMAGE_COLORS`__ - Config Key: `static-damage-colors` - Values diff --git a/docs/developers/mods/attackindicator.mdx b/docs/developers/mods/attackindicator.mdx new file mode 100644 index 00000000..dc4b55af --- /dev/null +++ b/docs/developers/mods/attackindicator.mdx @@ -0,0 +1,212 @@ +# Attack Indicator + +Allows you to customize the crosshair attack indicator + +## Integration + +### How to toggle the mod + +```java +public void toggleAttackIndicatorExample(Player viewer, boolean value) { + Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); + apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModAttackIndicator.ENABLED, value)); +} +``` + +## Available options + +- __`ENABLED`__ + - Config Key: `enabled` + - Values + - Type: `Boolean` + - Default: `false` + +- __`HORIZONTAL`__ + - Config Key: `horizontal` + - Values + - Type: `Boolean` + - Default: `true` + +- __`SCALE`__ + - Config Key: `scale` + - Values + - Type: `Float` + - Default: `1.0F` + - Minimum: `0.25F` + - Maximum: `5.0F` + +- __`SHOW_IN_HUD_EDITOR`__ + - Config Key: `show-in-hud-editor` + - Values + - Type: `Boolean` + - Default: `true` + +- __`ALWAYS_SHOW`__ + - Config Key: `always-show` + - Values + - Type: `Boolean` + - Default: `true` + +- __`RENDER_ICON`__ + - Config Key: `render-icon` + - Values + - Type: `Boolean` + - Default: `true` + +- __`BACKGROUND`__ + - Config Key: `background` + - Values + - Type: `Boolean` + - Default: `false` + +- __`BACKGROUND_COLOR`__ + - Config Key: `background-color` + - Values + - Type: `String` + - Default: `#6F000000` + +- __`BORDER`__ + - Config Key: `border` + - Values + - Type: `Boolean` + - Default: `false` + +- __`BORDER_THICKNESS`__ + - Config Key: `border-thickness` + - Values + - Type: `Float` + - Default: `0.5F` + - Minimum: `0.5F` + - Maximum: `3.0F` + +- __`BORDER_COLOR`__ + - Config Key: `border-color` + - Values + - Type: `String` + - Default: `#9F000000` + +- __`VANILLA_BLENDING`__ + - Config Key: `vanilla-blending` + - Values + - Type: `Boolean` + - Default: `false` + +- __`DYNAMIC_COLOR`__ + - Config Key: `dynamic-color` + - Values + - Type: `Boolean` + - Default: `false` + +- __`COLOR_LOW`__ + - Config Key: `color-low` + - Values + - Type: `String` + - Default: `#FFFF0000` + +- __`COLOR_HIGH`__ + - Config Key: `color-high` + - Values + - Type: `String` + - Default: `#FF00FF00` + +- __`COLOR`__ + - Config Key: `color` + - Values + - Type: `String` + - Default: `#FFFFFFFF` + +- __`SWORDS`__ + - Config Key: `swords` + - Values + - Type: `Boolean` + - Default: `true` + +- __`AXES`__ + - Config Key: `axes` + - Values + - Type: `Boolean` + - Default: `true` + +- __`PICKAXES`__ + - Config Key: `pickaxes` + - Values + - Type: `Boolean` + - Default: `true` + +- __`SHOVEL`__ + - Config Key: `shovel` + - Values + - Type: `Boolean` + - Default: `true` + +- __`NON_WEAPONS`__ + - Show the generic attack swing cooldown when switching items (includes hand) + - Config Key: `non-weapons` + - Values + - Type: `Boolean` + - Default: `false` + +- __`ATTACK_INDICATOR_PLAY_SOUND_VANILLA`__ + - Play a ding when the weapon cooldowns are done + - Config Key: `attack-indicator-play-sound-vanilla` + - Values + - Type: `Boolean` + - Default: `false` + +- __`SLEEP`__ + - Config Key: `sleep` + - Values + - Type: `Boolean` + - Default: `false` + +- __`BLOCK_BREAKING`__ + - Config Key: `block-breaking` + - Values + - Type: `Boolean` + - Default: `false` + +- __`ENDER_PEARL`__ + - Config Key: `ender-pearl` + - Values + - Type: `Boolean` + - Default: `false` + +- __`CHORUS_FRUIT`__ + - Config Key: `chorus-fruit` + - Values + - Type: `Boolean` + - Default: `false` + +- __`BOWS`__ + - Config Key: `bows` + - Values + - Type: `Boolean` + - Default: `false` + +- __`SHIELDS`__ + - Config Key: `shields` + - Values + - Type: `Boolean` + - Default: `false` + +- __`CONSUMABLES`__ + - Foods & Potions + - Config Key: `consumables` + - Values + - Type: `Boolean` + - Default: `false` + +- __`STORAGE`__ + - Show capacity of storage items (bundles, shulker boxes) + - Config Key: `storage` + - Values + - Type: `Boolean` + - Default: `false` + +- __`ATTACK_INDICATOR_PLAY_SOUND_CUSTOM`__ + - Play a ding when the cooldowns/indicators are done (excluding Sleep Progress, Block Breaking, Consumables and Storage Items) + - Config Key: `attack-indicator-play-sound-custom` + - Values + - Type: `Boolean` + - Default: `false` + diff --git a/docs/developers/mods/crosshair.mdx b/docs/developers/mods/crosshair.mdx index 4f70b5a2..0dd2a9ae 100644 --- a/docs/developers/mods/crosshair.mdx +++ b/docs/developers/mods/crosshair.mdx @@ -21,3 +21,9 @@ public void toggleCrosshairExample(Player viewer, boolean value) { - Type: `Boolean` - Default: `false` +- __`SHOW_IN_F5`__ + - Config Key: `show-in-f5` + - Values + - Type: `Boolean` + - Default: `true` + diff --git a/docs/developers/mods/guiscale.mdx b/docs/developers/mods/guiscale.mdx new file mode 100644 index 00000000..44c7964c --- /dev/null +++ b/docs/developers/mods/guiscale.mdx @@ -0,0 +1,39 @@ +# GUI Scale + +Allows you to set a custom GUI scale different from the Minecraft settings. + +## Integration + +### How to toggle the mod + +```java +public void toggleGUIScaleExample(Player viewer, boolean value) { + Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); + apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModGuiScale.ENABLED, value)); +} +``` + +## Available options + +- __`ENABLED`__ + - Config Key: `enabled` + - Values + - Type: `Boolean` + - Default: `false` + +- __`HOTBAR_SCALE`__ + - Config Key: `hotbar-scale` + - Values + - Type: `Float` + - Default: `1.0F` + - Minimum: `0.25F` + - Maximum: `2.0F` + +- __`INVENTORY_SCALE`__ + - Config Key: `inventory-scale` + - Values + - Type: `Integer` + - Default: `2` + - Minimum: `1` + - Maximum: `5` + From 907d7e3b72f764ad330b25db5071c7700c8a79ca Mon Sep 17 00:00:00 2001 From: ItsNature Date: Sat, 27 Jun 2026 20:59:30 +0200 Subject: [PATCH 2/2] Update version tags to 1.2.8 --- .../apollo/mods/impl/ModArmorstatus.java | 10 +-- .../apollo/mods/impl/ModAttackIndicator.java | 64 +++++++++---------- .../apollo/mods/impl/ModCrosshair.java | 2 +- .../apollo/mods/impl/ModGuiScale.java | 8 +-- 4 files changed, 42 insertions(+), 42 deletions(-) diff --git a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModArmorstatus.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModArmorstatus.java index 86420f90..795eb6b9 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModArmorstatus.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModArmorstatus.java @@ -128,7 +128,7 @@ public final class ModArmorstatus { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption BACKGROUND = SimpleOption.builder() .node("armorstatus", "background").type(TypeToken.get(Boolean.class)) @@ -139,7 +139,7 @@ public final class ModArmorstatus { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption BORDER = SimpleOption.builder() .node("armorstatus", "border").type(TypeToken.get(Boolean.class)) @@ -150,7 +150,7 @@ public final class ModArmorstatus { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final NumberOption BORDER_THICKNESS = NumberOption.number() .node("armorstatus", "border-thickness").type(TypeToken.get(Float.class)) @@ -206,7 +206,7 @@ public final class ModArmorstatus { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption BACKGROUND_COLOR = SimpleOption.builder() .node("armorstatus", "background-color").type(TypeToken.get(Color.class)) @@ -217,7 +217,7 @@ public final class ModArmorstatus { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption BORDER_COLOR = SimpleOption.builder() .node("armorstatus", "border-color").type(TypeToken.get(Color.class)) diff --git a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModAttackIndicator.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModAttackIndicator.java index 2f4a41ea..876e47f1 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModAttackIndicator.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModAttackIndicator.java @@ -31,14 +31,14 @@ /** * Allows you to customize the crosshair attack indicator. * - * @since %release_version% + * @since 1.2.8 */ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption ENABLED = SimpleOption.builder() .node("attack-indicator", "enabled").type(TypeToken.get(Boolean.class)) @@ -49,7 +49,7 @@ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption HORIZONTAL = SimpleOption.builder() .node("attack-indicator", "horizontal").type(TypeToken.get(Boolean.class)) @@ -60,7 +60,7 @@ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final NumberOption SCALE = NumberOption.number() .node("attack-indicator", "scale").type(TypeToken.get(Float.class)) @@ -72,7 +72,7 @@ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption SHOW_IN_HUD_EDITOR = SimpleOption.builder() .node("attack-indicator", "show-in-hud-editor").type(TypeToken.get(Boolean.class)) @@ -83,7 +83,7 @@ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption ALWAYS_SHOW = SimpleOption.builder() .node("attack-indicator", "always-show").type(TypeToken.get(Boolean.class)) @@ -94,7 +94,7 @@ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption RENDER_ICON = SimpleOption.builder() .node("attack-indicator", "render-icon").type(TypeToken.get(Boolean.class)) @@ -105,7 +105,7 @@ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption BACKGROUND = SimpleOption.builder() .node("attack-indicator", "background").type(TypeToken.get(Boolean.class)) @@ -116,7 +116,7 @@ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption BACKGROUND_COLOR = SimpleOption.builder() .node("attack-indicator", "background-color").type(TypeToken.get(Color.class)) @@ -127,7 +127,7 @@ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption BORDER = SimpleOption.builder() .node("attack-indicator", "border").type(TypeToken.get(Boolean.class)) @@ -138,7 +138,7 @@ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final NumberOption BORDER_THICKNESS = NumberOption.number() .node("attack-indicator", "border-thickness").type(TypeToken.get(Float.class)) @@ -150,7 +150,7 @@ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption BORDER_COLOR = SimpleOption.builder() .node("attack-indicator", "border-color").type(TypeToken.get(Color.class)) @@ -161,7 +161,7 @@ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption VANILLA_BLENDING = SimpleOption.builder() .node("attack-indicator", "vanilla-blending").type(TypeToken.get(Boolean.class)) @@ -172,7 +172,7 @@ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption DYNAMIC_COLOR = SimpleOption.builder() .node("attack-indicator", "dynamic-color").type(TypeToken.get(Boolean.class)) @@ -183,7 +183,7 @@ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption COLOR_LOW = SimpleOption.builder() .node("attack-indicator", "color-low").type(TypeToken.get(Color.class)) @@ -194,7 +194,7 @@ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption COLOR_HIGH = SimpleOption.builder() .node("attack-indicator", "color-high").type(TypeToken.get(Color.class)) @@ -205,7 +205,7 @@ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption COLOR = SimpleOption.builder() .node("attack-indicator", "color").type(TypeToken.get(Color.class)) @@ -216,7 +216,7 @@ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption SWORDS = SimpleOption.builder() .node("attack-indicator", "swords").type(TypeToken.get(Boolean.class)) @@ -227,7 +227,7 @@ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption AXES = SimpleOption.builder() .node("attack-indicator", "axes").type(TypeToken.get(Boolean.class)) @@ -238,7 +238,7 @@ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption PICKAXES = SimpleOption.builder() .node("attack-indicator", "pickaxes").type(TypeToken.get(Boolean.class)) @@ -249,7 +249,7 @@ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption SHOVEL = SimpleOption.builder() .node("attack-indicator", "shovel").type(TypeToken.get(Boolean.class)) @@ -260,7 +260,7 @@ public final class ModAttackIndicator { /** * Show the generic attack swing cooldown when switching items (includes hand). * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption NON_WEAPONS = SimpleOption.builder() .comment("Show the generic attack swing cooldown when switching items (includes hand)") @@ -272,7 +272,7 @@ public final class ModAttackIndicator { /** * Play a ding when the weapon cooldowns are done. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption ATTACK_INDICATOR_PLAY_SOUND_VANILLA = SimpleOption.builder() .comment("Play a ding when the weapon cooldowns are done") @@ -284,7 +284,7 @@ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption SLEEP = SimpleOption.builder() .node("attack-indicator", "sleep").type(TypeToken.get(Boolean.class)) @@ -295,7 +295,7 @@ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption BLOCK_BREAKING = SimpleOption.builder() .node("attack-indicator", "block-breaking").type(TypeToken.get(Boolean.class)) @@ -306,7 +306,7 @@ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption ENDER_PEARL = SimpleOption.builder() .node("attack-indicator", "ender-pearl").type(TypeToken.get(Boolean.class)) @@ -317,7 +317,7 @@ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption CHORUS_FRUIT = SimpleOption.builder() .node("attack-indicator", "chorus-fruit").type(TypeToken.get(Boolean.class)) @@ -328,7 +328,7 @@ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption BOWS = SimpleOption.builder() .node("attack-indicator", "bows").type(TypeToken.get(Boolean.class)) @@ -339,7 +339,7 @@ public final class ModAttackIndicator { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption SHIELDS = SimpleOption.builder() .node("attack-indicator", "shields").type(TypeToken.get(Boolean.class)) @@ -350,7 +350,7 @@ public final class ModAttackIndicator { /** * Foods & Potions. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption CONSUMABLES = SimpleOption.builder() .comment("Foods & Potions") @@ -362,7 +362,7 @@ public final class ModAttackIndicator { /** * Show capacity of storage items (bundles, shulker boxes). * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption STORAGE = SimpleOption.builder() .comment("Show capacity of storage items (bundles, shulker boxes)") @@ -374,7 +374,7 @@ public final class ModAttackIndicator { /** * Play a ding when the cooldowns/indicators are done (excluding Sleep Progress, Block Breaking, Consumables and Storage Items). * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption ATTACK_INDICATOR_PLAY_SOUND_CUSTOM = SimpleOption.builder() .comment("Play a ding when the cooldowns/indicators are done (excluding Sleep Progress, Block Breaking, Consumables and Storage Items)") diff --git a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModCrosshair.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModCrosshair.java index ed43bff3..e322cd73 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModCrosshair.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModCrosshair.java @@ -49,7 +49,7 @@ public final class ModCrosshair { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption SHOW_IN_F5 = SimpleOption.builder() .node("crosshair", "show-in-f5").type(TypeToken.get(Boolean.class)) diff --git a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModGuiScale.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModGuiScale.java index 87c787a6..e1974321 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModGuiScale.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModGuiScale.java @@ -30,14 +30,14 @@ /** * Allows you to set a custom GUI scale different from the Minecraft settings. * - * @since %release_version% + * @since 1.2.8 */ public final class ModGuiScale { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final SimpleOption ENABLED = SimpleOption.builder() .node("gui-scale", "enabled").type(TypeToken.get(Boolean.class)) @@ -48,7 +48,7 @@ public final class ModGuiScale { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final NumberOption HOTBAR_SCALE = NumberOption.number() .node("gui-scale", "hotbar-scale").type(TypeToken.get(Float.class)) @@ -60,7 +60,7 @@ public final class ModGuiScale { /** * No documentation available. * - * @since %release_version% + * @since 1.2.8 */ public static final NumberOption INVENTORY_SCALE = NumberOption.number() .node("gui-scale", "inventory-scale").type(TypeToken.get(Integer.class))