# Table of Contents - [Crosshair | Lunar Client Developers](#crosshair-lunar-client-developers) - [Coordinates | Lunar Client Developers](#coordinates-lunar-client-developers) - [Cooldowns | Lunar Client Developers](#cooldowns-lunar-client-developers) - [Item Physics | Lunar Client Developers](#item-physics-lunar-client-developers) - [Item Counter | Lunar Client Developers](#item-counter-lunar-client-developers) - [Item Tracker | Lunar Client Developers](#item-tracker-lunar-client-developers) - [Better Sounds | Lunar Client Developers](#better-sounds-lunar-client-developers) - [Protocol Buffers | Lunar Client Developers](#protocol-buffers-lunar-client-developers) - [Adventure Util | Lunar Client Developers](#adventure-util-lunar-client-developers) - [Direction HUD | Lunar Client Developers](#direction-hud-lunar-client-developers) - [Fog Customizer | Lunar Client Developers](#fog-customizer-lunar-client-developers) - [FPS | Lunar Client Developers](#fps-lunar-client-developers) - [Hurt Cam | Lunar Client Developers](#hurt-cam-lunar-client-developers) - [Hit Color | Lunar Client Developers](#hit-color-lunar-client-developers) - [Freelook | Lunar Client Developers](#freelook-lunar-client-developers) - [Horse Stats | Lunar Client Developers](#horse-stats-lunar-client-developers) - [Hypixel Bedwars | Lunar Client Developers](#hypixel-bedwars-lunar-client-developers) - [Adventure Util | Lunar Client Developers](#adventure-util-lunar-client-developers) - [Memory Usage | Lunar Client Developers](#memory-usage-lunar-client-developers) - [UHC Overlay | Lunar Client Developers](#uhc-overlay-lunar-client-developers) - [Commands | Lunar Client Developers](#commands-lunar-client-developers) - [Nick Hider | Lunar Client Developers](#nick-hider-lunar-client-developers) - [Waypoints | Lunar Client Developers](#waypoints-lunar-client-developers) - [Getting Started | Lunar Client Developers](#getting-started-lunar-client-developers) - [Getting Started | Lunar Client Developers](#getting-started-lunar-client-developers) - [Saturation | Lunar Client Developers](#saturation-lunar-client-developers) - [Shiny Pots | Lunar Client Developers](#shiny-pots-lunar-client-developers) - [Shulker Preview | Lunar Client Developers](#shulker-preview-lunar-client-developers) - [Acceptable Use | Lunar Client Developers](#acceptable-use-lunar-client-developers) - [License Information | Lunar Client Developers](#license-information-lunar-client-developers) - [Damage Tint | Lunar Client Developers](#damage-tint-lunar-client-developers) - [CPS | Lunar Client Developers](#cps-lunar-client-developers) - [Glint Colorizer | Lunar Client Developers](#glint-colorizer-lunar-client-developers) - [FOV Changer | Lunar Client Developers](#fov-changer-lunar-client-developers) - [Menu Blur | Lunar Client Developers](#menu-blur-lunar-client-developers) - [Minimap | Lunar Client Developers](#minimap-lunar-client-developers) - [Hitbox | Lunar Client Developers](#hitbox-lunar-client-developers) - [Time Changer | Lunar Client Developers](#time-changer-lunar-client-developers) - [WAILA | Lunar Client Developers](#waila-lunar-client-developers) - [Zoom | Lunar Client Developers](#zoom-lunar-client-developers) - [Momentum Mod | Lunar Client Developers](#momentum-mod-lunar-client-developers) - [Particle Changer | Lunar Client Developers](#particle-changer-lunar-client-developers) - [NameTags | Lunar Client Developers](#nametags-lunar-client-developers) - [Toggle Sneak/Sprint | Lunar Client Developers](#toggle-sneak-sprint-lunar-client-developers) - [Pack Organizer | Lunar Client Developers](#pack-organizer-lunar-client-developers) - [Scrollable Tooltips | Lunar Client Developers](#scrollable-tooltips-lunar-client-developers) - [Screenshot Uploader | Lunar Client Developers](#screenshot-uploader-lunar-client-developers) - [Day Counter | Lunar Client Developers](#day-counter-lunar-client-developers) - [Hypixel Mods | Lunar Client Developers](#hypixel-mods-lunar-client-developers) - [Snaplook | Lunar Client Developers](#snaplook-lunar-client-developers) - [Player Detection | Lunar Client Developers](#player-detection-lunar-client-developers) - [WorldEdit CUI | Lunar Client Developers](#worldedit-cui-lunar-client-developers) - [Scoreboard | Lunar Client Developers](#scoreboard-lunar-client-developers) - [Ping | Lunar Client Developers](#ping-lunar-client-developers) - [Pack Display | Lunar Client Developers](#pack-display-lunar-client-developers) - [Serverbound Packets | Lunar Client Developers](#serverbound-packets-lunar-client-developers) - [Tab Editor | Lunar Client Developers](#tab-editor-lunar-client-developers) - [Cuboids | Lunar Client Developers](#cuboids-lunar-client-developers) - [Server Address | Lunar Client Developers](#server-address-lunar-client-developers) - [Weather Changer | Lunar Client Developers](#weather-changer-lunar-client-developers) - [Key Strokes | Lunar Client Developers](#key-strokes-lunar-client-developers) - [Reach Display | Lunar Client Developers](#reach-display-lunar-client-developers) - [Radio | Lunar Client Developers](#radio-lunar-client-developers) - [Playtime | Lunar Client Developers](#playtime-lunar-client-developers) - [Titles | Lunar Client Developers](#titles-lunar-client-developers) - [Stopwatch | Lunar Client Developers](#stopwatch-lunar-client-developers) - [FAQs | Lunar Client Developers](#faqs-lunar-client-developers) - [Hypixel Skyblock | Lunar Client Developers](#hypixel-skyblock-lunar-client-developers) - [Configuration | Lunar Client Developers](#configuration-lunar-client-developers) - [Player Detection | Lunar Client Developers](#player-detection-lunar-client-developers) - [ReplayMod | Lunar Client Developers](#replaymod-lunar-client-developers) - [Platform Utilities | Lunar Client Developers](#platform-utilities-lunar-client-developers) - [Colors | Lunar Client Developers](#colors-lunar-client-developers) - [Potion Effects | Lunar Client Developers](#potion-effects-lunar-client-developers) - [Icons | Lunar Client Developers](#icons-lunar-client-developers) - [Protobuf Object Util | Lunar Client Developers](#protobuf-object-util-lunar-client-developers) - [JSON Object Util | Lunar Client Developers](#json-object-util-lunar-client-developers) - [Locations | Lunar Client Developers](#locations-lunar-client-developers) - [Protobuf Packet Util | Lunar Client Developers](#protobuf-packet-util-lunar-client-developers) - [Roundtrip Packets | Lunar Client Developers](#roundtrip-packets-lunar-client-developers) - [JSON Packet Util | Lunar Client Developers](#json-packet-util-lunar-client-developers) - [SkyblockAddons | Lunar Client Developers](#skyblockaddons-lunar-client-developers) - [Lighting | Lunar Client Developers](#lighting-lunar-client-developers) - [Motion Blur | Lunar Client Developers](#motion-blur-lunar-client-developers) - [Adventure | Lunar Client Developers](#adventure-lunar-client-developers) - [Team View | Lunar Client Developers](#team-view-lunar-client-developers) - [Hypixel Quickplay | Lunar Client Developers](#hypixel-quickplay-lunar-client-developers) - [1.7 Visuals | Lunar Client Developers](#1-7-visuals-lunar-client-developers) - [Mumble Link | Lunar Client Developers](#mumble-link-lunar-client-developers) - [Not Enough Updates | Lunar Client Developers](#not-enough-updates-lunar-client-developers) - [TNT Countdown | Lunar Client Developers](#tnt-countdown-lunar-client-developers) - [PvP Info | Lunar Client Developers](#pvp-info-lunar-client-developers) - [Lightweight | Lunar Client Developers](#lightweight-lunar-client-developers) --- # Crosshair | Lunar Client Developers Apollo Developers Mods Crosshair Crosshair ========= Replace the default Minecraft crosshair with a customizable crosshair. Integration[](https://lunarclient.dev/apollo/developers/mods/crosshair#integration) ------------------------------------------------------------------------------------ ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/crosshair#how-to-toggle-the-mod) public void toggleCrosshairExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModCrosshair.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/crosshair#available-options) ------------------------------------------------------------------------------------------------ * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`CROSSHAIR_THICKNESS`** * Config Key: `crosshair-thickness` * Values * Type: `Integer` * Default: `1` * Minimum: `1` * Maximum: `5` * **`CROSSHAIR_SIZE`** * Config Key: `crosshair-size` * Values * Type: `Integer` * Default: `4` * Minimum: `0` * Maximum: `8` * **`CROSSHAIR_GAP`** * Config Key: `crosshair-gap` * Values * Type: `Integer` * Default: `0` * Minimum: `0` * Maximum: `8` * **`CROSSHAIR_DOT`** * Config Key: `crosshair-dot` * Values * Type: `Boolean` * Default: `true` * **`CROSSHAIR_OUTLINE`** * Config Key: `crosshair-outline` * Values * Type: `Boolean` * Default: `false` * **`OUTLINE_THICKNESS`** * Config Key: `outline-thickness` * Values * Type: `Float` * Default: `0.5F` * Minimum: `0.0F` * Maximum: `1.0F` * **`OUTLINE_COLOR`** * Config Key: `outline-color` * Values * Type: `String` * Default: `#88000000` * **`CUSTOM_SCALE`** * Config Key: `custom-scale` * Values * Type: `Boolean` * Default: `false` * **`COLOR`** * Config Key: `color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`FRIENDLY_COLOR`** * Config Key: `friendly-color` * Values * Type: `String` * Default: `#FF33FF33` * **`ENEMY_COLOR`** * Config Key: `enemy-color` * Values * Type: `String` * Default: `#FFFF3333` [Cps](https://lunarclient.dev/apollo/developers/mods/cps "Cps") [DamageTint](https://lunarclient.dev/apollo/developers/mods/damagetint "DamageTint") --- # Coordinates | Lunar Client Developers Apollo Developers Mods Coordinates Coordinates =========== Displays your coordinates on the HUD. Integration[](https://lunarclient.dev/apollo/developers/mods/coordinates#integration) -------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/coordinates#how-to-toggle-the-mod) public void toggleCoordinatesExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModCoordinates.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/coordinates#available-options) -------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` * **`SCALE`** * Config Key: `scale` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.5F` * Maximum: `1.5F` * **`TEXT_SHADOW`** * Config Key: `text-shadow` * Values * Type: `Boolean` * Default: `true` * **`SHOW_WHILE_TYPING`** * Config Key: `show-while-typing` * Values * Type: `Boolean` * Default: `true` * **`BACKGROUND`** * Config Key: `background` * Values * Type: `Boolean` * Default: `true` * **`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` * **`MOVE_CHILDREN_INDIVIDUALLY`** * Config Key: `move-children-individually` * Values * 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` [Cooldowns](https://lunarclient.dev/apollo/developers/mods/cooldowns "Cooldowns") [Cps](https://lunarclient.dev/apollo/developers/mods/cps "Cps") --- # Cooldowns | Lunar Client Developers Apollo Developers Mods Cooldowns Cooldowns ========= Allows servers to display items or abilities that are on cooldown on the HUD. Integration[](https://lunarclient.dev/apollo/developers/mods/cooldowns#integration) ------------------------------------------------------------------------------------ ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/cooldowns#how-to-toggle-the-mod) public void toggleCooldownsExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModCooldowns.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/cooldowns#available-options) ------------------------------------------------------------------------------------------------ * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` * **`SCALE`** * Config Key: `scale` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.5F` * Maximum: `1.5F` [Combo](https://lunarclient.dev/apollo/developers/mods/combo "Combo") [Coordinates](https://lunarclient.dev/apollo/developers/mods/coordinates "Coordinates") --- # Item Physics | Lunar Client Developers Apollo Developers Mods ItemPhysics Item Physics ============ Replaces ground items with ones that have physics. Integration[](https://lunarclient.dev/apollo/developers/mods/itemphysics#integration) -------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/itemphysics#how-to-toggle-the-mod) public void toggleItemPhysicsExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModItemPhysics.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/itemphysics#available-options) -------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`ROTATION_SPEED`** * Config Key: `rotation-speed` * Values * Type: `Float` * Default: `0.5F` * Minimum: `0.1F` * Maximum: `4.0F` [ItemCounter](https://lunarclient.dev/apollo/developers/mods/itemcounter "ItemCounter") [ItemTracker](https://lunarclient.dev/apollo/developers/mods/itemtracker "ItemTracker") --- # Item Counter | Lunar Client Developers Apollo Developers Mods ItemCounter Item Counter ============ Displays how many of the items you have selected are currently in your inventory, on the HUD. Integration[](https://lunarclient.dev/apollo/developers/mods/itemcounter#integration) -------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/itemcounter#how-to-toggle-the-mod) public void toggleItemCounterExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModItemCounter.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/itemcounter#available-options) -------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`SCALE`** * Config Key: `scale` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.5F` * Maximum: `1.5F` [HypixelMod](https://lunarclient.dev/apollo/developers/mods/hypixelmod "HypixelMod") [ItemPhysics](https://lunarclient.dev/apollo/developers/mods/itemphysics "ItemPhysics") --- # Item Tracker | Lunar Client Developers Apollo Developers Mods ItemTracker Item Tracker ============ Shows you when and how much items you pick up or drop. Integration[](https://lunarclient.dev/apollo/developers/mods/itemtracker#integration) -------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/itemtracker#how-to-toggle-the-mod) public void toggleItemTrackerExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModItemTracker.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/itemtracker#available-options) -------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`SCALE`** * Config Key: `scale` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.5F` * Maximum: `1.5F` * **`TEXT_SHADOW`** * Config Key: `text-shadow` * Values * Type: `Boolean` * Default: `false` * **`SKYBLOCK_ONLY`** * Config Key: `skyblock-only` * Values * Type: `Boolean` * Default: `false` * **`POPUP_DURATION_SEC`** * How long the text should stay on screen (seconds) * Config Key: `popup-duration-sec` * Values * Type: `Float` * Default: `5.0F` * Minimum: `0.1F` * Maximum: `30.0F` [ItemPhysics](https://lunarclient.dev/apollo/developers/mods/itemphysics "ItemPhysics") [Keystrokes](https://lunarclient.dev/apollo/developers/mods/keystrokes "Keystrokes") --- # Better Sounds | Lunar Client Developers Apollo Developers Mods SoundChanger Better Sounds ============= Modify the volume of any sound in the game Integration[](https://lunarclient.dev/apollo/developers/mods/soundchanger#integration) --------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/soundchanger#how-to-toggle-the-mod) public void toggleBetterSoundsExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModSoundChanger.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/soundchanger#available-options) --------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` [Snaplook](https://lunarclient.dev/apollo/developers/mods/snaplook "Snaplook") [Stopwatch](https://lunarclient.dev/apollo/developers/mods/stopwatch "Stopwatch") --- # Protocol Buffers | Lunar Client Developers Apollo Internals Protocol Buffers Protocol Buffers ================ ⚠️ This page describes the internals of the project. This is only relevant if you'd like to contribute to Apollo. For standard usage of Apollo, this page is not relevant. Overview[](https://lunarclient.dev/apollo/internals/protocol-buffers#overview) ------------------------------------------------------------------------------- Apollo uses Google's [Protocol Buffers (opens in a new tab)](https://protobuf.dev/) to communicate with the client. * The generated artifacts are available on our [Maven repository](https://lunarclient.dev/maven-repository) as `com.lunarclient:apollo-protos` * The underlying `.proto` definitions are available on Buf Schema Registry, at [https://buf.build/lunarclient/apollo (opens in a new tab)](https://buf.build/lunarclient/apollo) Note that although the `.proto` files / messages _generally_ match up with Apollo modules, there are circumstances where we expose different interfaces in Apollo -- primarily to make the API simpler to use. For example, Apollo's `modsetting` and `serverrule` module end up flowing over the wire as the same packet. However, we split them into separate modules (with separate purposes) in the public API. Contributions[](https://lunarclient.dev/apollo/internals/protocol-buffers#contributions) ----------------------------------------------------------------------------------------- As all changes to the `.proto` definitions require a corresponding implementation in the client to be usable, we aren't currently allowing direct contributions to `.proto` files. Support[](https://lunarclient.dev/apollo/internals/protocol-buffers#support) ----------------------------------------------------------------------------- The usage of protocol buffers, and the generated code itself, is considered an implementation detail of Apollo. As such, we can only provide limited support to those wishing to use protocol buffers directly. [Acceptable Use](https://lunarclient.dev/apollo/acceptable-use "Acceptable Use") [Introduction](https://lunarclient.dev/server-mappings/introduction "Introduction") --- # Adventure Util | Lunar Client Developers Apollo Developers Lightweight Protobuf Adventure Util Adventure Util ============== Overview[](https://lunarclient.dev/apollo/developers/lightweight/protobuf/adventure-util#overview) --------------------------------------------------------------------------------------------------- Provides a single method responsible for serializing the Adventure Component to a String Integration[](https://lunarclient.dev/apollo/developers/lightweight/protobuf/adventure-util#integration) --------------------------------------------------------------------------------------------------------- public static String toJson(@NonNull Component component) { return GsonComponentSerializer.gson().serialize(component); } [Object Util](https://lunarclient.dev/apollo/developers/lightweight/protobuf/object-util "Object Util") [Getting Started](https://lunarclient.dev/apollo/developers/lightweight/json/getting-started "Getting Started") --- # Direction HUD | Lunar Client Developers Apollo Developers Mods DirectionHud Direction HUD ============= Display your cardinal direction on the HUD. Integration[](https://lunarclient.dev/apollo/developers/mods/directionhud#integration) --------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/directionhud#how-to-toggle-the-mod) public void toggleDirectionHUDExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModDirectionHud.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/directionhud#available-options) --------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` * **`SCALE`** * Config Key: `scale` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.5F` * Maximum: `1.5F` * **`WIDTH`** * Config Key: `width` * Values * Type: `Float` * Default: `280.0F` * Minimum: `168.0F` * Maximum: `448.0F` * **`TEXT_SHADOW`** * Config Key: `text-shadow` * Values * Type: `Boolean` * Default: `false` * **`BOLD_DIRECTIONS`** * Show the cardinal directions in BOLD. * Config Key: `bold-directions` * Values * Type: `Boolean` * Default: `false` * **`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` * **`USE_LEGACY_STYLE`** * Config Key: `use-legacy-style` * Values * Type: `Boolean` * Default: `false` * **`SHOW_MARKER`** * Config Key: `show-marker` * Values * Type: `Boolean` * Default: `true` * **`SHOW_MARKER_VALUE`** * Config Key: `show-marker-value` * Values * Type: `Boolean` * Default: `true` * **`BACKGROUND_COLOR`** * Config Key: `background-color` * Values * Type: `String` * Default: `#6F000000` * **`BORDER_COLOR`** * Config Key: `border-color` * Values * Type: `String` * Default: `#9F000000` * **`MARKER_COLOR`** * Config Key: `marker-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`DIRECTION_COLOR`** * Config Key: `direction-color` * Values * Type: `String` * Default: `#FFFFFFFF` [DayCounter](https://lunarclient.dev/apollo/developers/mods/daycounter "DayCounter") [Fog](https://lunarclient.dev/apollo/developers/mods/fog "Fog") --- # Fog Customizer | Lunar Client Developers Apollo Developers Mods Fog Fog Customizer ============== Allows you to adjust the strength of fog for various fog types Integration[](https://lunarclient.dev/apollo/developers/mods/fog#integration) ------------------------------------------------------------------------------ ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/fog#how-to-toggle-the-mod) public void toggleFogCustomizerExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModFog.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/fog#available-options) ------------------------------------------------------------------------------------------ * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`WATER_FOG_DENSITY`** * Config Key: `water-fog-density` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.0F` * Maximum: `1.8F` * **`RENDER_DISTANCE_FOG_DENSITY`** * Config Key: `render-distance-fog-density` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.0F` * Maximum: `1.95F` * **`RENDER_DISTANCE_FOG_COLOR_TOGGLE`** * Config Key: `render-distance-fog-color-toggle` * Values * Type: `Boolean` * Default: `false` * **`RENDER_DISTANCE_FOG_COLOR`** * Config Key: `render-distance-fog-color` * Values * Type: `String` * Default: `#C0D8FF` [DirectionHud](https://lunarclient.dev/apollo/developers/mods/directionhud "DirectionHud") [Fov](https://lunarclient.dev/apollo/developers/mods/fov "Fov") --- # FPS | Lunar Client Developers Apollo Developers Mods Fps FPS === Display your FPS on the HUD. Integration[](https://lunarclient.dev/apollo/developers/mods/fps#integration) ------------------------------------------------------------------------------ ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/fps#how-to-toggle-the-mod) public void toggleFPSExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModFps.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/fps#available-options) ------------------------------------------------------------------------------------------ * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`SCALE`** * Config Key: `scale` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.5F` * Maximum: `1.5F` * **`TEXT_SHADOW`** * Config Key: `text-shadow` * Values * Type: `Boolean` * Default: `true` * **`BRACKETS`** * Config Key: `brackets` * Values * Type: `Boolean` * Default: `true` * **`BRACKET_COLOR`** * Config Key: `bracket-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`BACKGROUND`** * Config Key: `background` * Values * Type: `Boolean` * Default: `true` * **`STATIC_BACKGROUND_WIDTH`** * If this is disabled the background will change size with the text. * Config Key: `static-background-width` * Values * Type: `Boolean` * Default: `true` * **`STATIC_BACKGROUND_HEIGHT`** * If this is disabled the background will change size with the text. * Config Key: `static-background-height` * Values * Type: `Boolean` * Default: `true` * **`BACKGROUND_WIDTH`** * Config Key: `background-width` * Values * Type: `Integer` * Default: `56` * Minimum: `50` * Maximum: `62` * **`BACKGROUND_HEIGHT`** * Config Key: `background-height` * Values * Type: `Integer` * Default: `18` * Minimum: `10` * Maximum: `22` * **`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` * **`BACKGROUND_COLOR`** * Config Key: `background-color` * Values * Type: `String` * Default: `#6F000000` * **`TEXT_COLOR`** * Config Key: `text-color` * Values * Type: `String` * Default: `#FFFFFFFF` [Fov](https://lunarclient.dev/apollo/developers/mods/fov "Fov") [Freelook](https://lunarclient.dev/apollo/developers/mods/freelook "Freelook") --- # Hurt Cam | Lunar Client Developers Apollo Developers Mods HurtCam Hurt Cam ======== Manage the hurt camera shaking animation. Integration[](https://lunarclient.dev/apollo/developers/mods/hurtcam#integration) ---------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/hurtcam#how-to-toggle-the-mod) public void toggleHurtCamExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModHurtCam.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/hurtcam#available-options) ---------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`DISABLE_HURT_CAM`** * Config Key: `disable-hurt-cam` * Values * Type: `Boolean` * Default: `false` * **`HURT_SHAKING_INTENSITY`** * Config Key: `hurt-shaking-intensity` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.0F` * Maximum: `2.0F` * **`OLD_CAMERA_TILT`** * Config Key: `old-camera-tilt` * Values * Type: `Boolean` * Default: `false` [HorseStats](https://lunarclient.dev/apollo/developers/mods/horsestats "HorseStats") [HypixelBedwars](https://lunarclient.dev/apollo/developers/mods/hypixelbedwars "HypixelBedwars") --- # Hit Color | Lunar Client Developers Apollo Developers Mods HitColor Hit Color ========= Changes the color of the damage indicator. Integration[](https://lunarclient.dev/apollo/developers/mods/hitcolor#integration) ----------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/hitcolor#how-to-toggle-the-mod) public void toggleHitColorExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModHitColor.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/hitcolor#available-options) ----------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`HIT_ARMOR_COLOR`** * Config Key: `hit-armor-color` * Values * Type: `String` * Default: `#66990000` * **`SHOULD_COLOR_ARMOR`** * Config Key: `should-color-armor` * Values * Type: `Boolean` * Default: `true` [Hitbox](https://lunarclient.dev/apollo/developers/mods/hitbox "Hitbox") [HorseStats](https://lunarclient.dev/apollo/developers/mods/horsestats "HorseStats") --- # Freelook | Lunar Client Developers Apollo Developers Mods Freelook Freelook ======== When activated, allows you to change your camera perspective without rotating your player. Integration[](https://lunarclient.dev/apollo/developers/mods/freelook#integration) ----------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/freelook#how-to-toggle-the-mod) public void toggleFreelookExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModFreelook.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/freelook#available-options) ----------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` * **`INVERT_PITCH`** * Config Key: `invert-pitch` * Values * Type: `Boolean` * Default: `false` * **`INVERT_YAW`** * Config Key: `invert-yaw` * Values * Type: `Boolean` * Default: `false` * **`TOGGLE_KEY_FREELOOK`** * Quickly pressing and releasing the key will toggle freelook * Config Key: `toggle-key-freelook` * Values * Type: `Boolean` * Default: `false` * **`SMOOTH_CAMERA`** * When zoomed in the camera movement will move smoothly (cinematic camera) * Config Key: `smooth-camera` * Values * Type: `Boolean` * Default: `true` [Fps](https://lunarclient.dev/apollo/developers/mods/fps "Fps") [GlintColorizer](https://lunarclient.dev/apollo/developers/mods/glintcolorizer "GlintColorizer") --- # Horse Stats | Lunar Client Developers Apollo Developers Mods HorseStats Horse Stats =========== Display the stats of the horse you are riding in the horse's inventory. Integration[](https://lunarclient.dev/apollo/developers/mods/horsestats#integration) ------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/horsestats#how-to-toggle-the-mod) public void toggleHorseStatsExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModHorseStats.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/horsestats#available-options) ------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` * **`TEXT_COLOR`** * Config Key: `text-color` * Values * Type: `String` * Default: `#FF404040` * **`SPEED_COLOR`** * Config Key: `speed-color` * Values * Type: `String` * Default: `#FF2D68CF` * **`JUMP_COLOR`** * Config Key: `jump-color` * Values * Type: `String` * Default: `#FF12AF0D` * **`HEALTH_COLOR`** * Config Key: `health-color` * Values * Type: `String` * Default: `#FFCF2D2D` [HitColor](https://lunarclient.dev/apollo/developers/mods/hitcolor "HitColor") [HurtCam](https://lunarclient.dev/apollo/developers/mods/hurtcam "HurtCam") --- # Hypixel Bedwars | Lunar Client Developers Apollo Developers Mods HypixelBedwars Hypixel Bedwars =============== Various enhancements to assist you when playing Hypixel Bedwars Integration[](https://lunarclient.dev/apollo/developers/mods/hypixelbedwars#integration) ----------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/hypixelbedwars#how-to-toggle-the-mod) public void toggleHypixelBedwarsExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModHypixelBedwars.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/hypixelbedwars#available-options) ----------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` * **`COLORED_BEDS`** * Recolor the beds in-game according to the team's color * Config Key: `colored-beds` * Values * Type: `Boolean` * Default: `true` * **`BW_HARDCORE_HEARTS`** * Replaces normal hearts with hardcore hearts once your bed is lost * Config Key: `bw-hardcore-hearts` * Values * Type: `Boolean` * Default: `true` [HurtCam](https://lunarclient.dev/apollo/developers/mods/hurtcam "HurtCam") [HypixelMod](https://lunarclient.dev/apollo/developers/mods/hypixelmod "HypixelMod") --- # Adventure Util | Lunar Client Developers Apollo Developers Lightweight JSON Adventure Util Adventure Util ============== Overview[](https://lunarclient.dev/apollo/developers/lightweight/json/adventure-util#overview) ----------------------------------------------------------------------------------------------- Provides a single method responsible for serializing the Adventure Component to a String Integration[](https://lunarclient.dev/apollo/developers/lightweight/json/adventure-util#integration) ----------------------------------------------------------------------------------------------------- public static String toJson(@NonNull Component component) { return GsonComponentSerializer.gson().serialize(component); } [Object Util](https://lunarclient.dev/apollo/developers/lightweight/json/object-util "Object Util") [Config](https://lunarclient.dev/apollo/server-owners/config "Config") --- # Memory Usage | Lunar Client Developers Apollo Developers Mods Memory Memory Usage ============ Displays your total and free memory usage. Integration[](https://lunarclient.dev/apollo/developers/mods/memory#integration) --------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/memory#how-to-toggle-the-mod) public void toggleMemoryUsageExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModMemory.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/memory#available-options) --------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`SCALE`** * Config Key: `scale` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.5F` * Maximum: `1.5F` * **`TEXT_SHADOW`** * Config Key: `text-shadow` * Values * Type: `Boolean` * Default: `true` * **`BRACKETS`** * Config Key: `brackets` * Values * Type: `Boolean` * Default: `true` * **`BRACKET_COLOR`** * Config Key: `bracket-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`BACKGROUND`** * Config Key: `background` * Values * Type: `Boolean` * Default: `true` * **`STATIC_BACKGROUND_WIDTH`** * If this is disabled the background will change size with the text. * Config Key: `static-background-width` * Values * Type: `Boolean` * Default: `true` * **`STATIC_BACKGROUND_HEIGHT`** * If this is disabled the background will change size with the text. * Config Key: `static-background-height` * Values * Type: `Boolean` * Default: `true` * **`BACKGROUND_WIDTH`** * Config Key: `background-width` * Values * Type: `Integer` * Default: `56` * Minimum: `46` * Maximum: `62` * **`BACKGROUND_HEIGHT`** * Config Key: `background-height` * Values * Type: `Integer` * Default: `18` * Minimum: `10` * Maximum: `22` * **`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` * **`BACKGROUND_COLOR`** * Config Key: `background-color` * Values * Type: `String` * Default: `#6F000000` * **`TEXT_COLOR`** * Config Key: `text-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`COLOR_BASED_ON_USAGE`** * Config Key: `color-based-on-usage` * Values * Type: `Boolean` * Default: `false` * **`LOW_MEM_COLOR`** * Config Key: `low-mem-color` * Values * Type: `String` * Default: `#FFFF0000` * **`MED_MEM_COLOR`** * Config Key: `med-mem-color` * Values * Type: `String` * Default: `#FFFFFF00` * **`HIGH_MEM_COLOR`** * Config Key: `high-mem-color` * Values * Type: `String` * Default: `#FF00FF00` [Lighting](https://lunarclient.dev/apollo/developers/mods/lighting "Lighting") [MenuBlur](https://lunarclient.dev/apollo/developers/mods/menublur "MenuBlur") --- # UHC Overlay | Lunar Client Developers Apollo Developers Mods UhcOverlay UHC Overlay =========== Resize items that are commonly needed in UHC to make spotting them easier. Integration[](https://lunarclient.dev/apollo/developers/mods/uhcoverlay#integration) ------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/uhcoverlay#how-to-toggle-the-mod) public void toggleUHCOverlayExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModUhcOverlay.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/uhcoverlay#available-options) ------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` [ToggleSneak](https://lunarclient.dev/apollo/developers/mods/togglesneak "ToggleSneak") [Waila](https://lunarclient.dev/apollo/developers/mods/waila "Waila") --- # Commands | Lunar Client Developers Apollo Server Owners Commands Commands ======== Apollo comes with some built-in commands to make your life easier. Apollo Command[](https://lunarclient.dev/apollo/server-owners/commands#apollo-command) --------------------------------------------------------------------------------------- * `/apollo` * Description: The Main Apollo Command. * Permission: `apollo.command` * `/apollo reload` * Description: Reload The Apollo Configuration Files. * Permission: `apollo.command` * `/apollo update` * Description: Forcefully updates Apollo to the latest version. * Permission: `apollo.command` LunarClient Command[](https://lunarclient.dev/apollo/server-owners/commands#lunarclient-command) ------------------------------------------------------------------------------------------------- * `/lunarclient ` * Description: The command to check whether the player is using Lunar Client. * Aliases: `lc` * Permission: `apollo.lunarclient` [Config](https://lunarclient.dev/apollo/server-owners/config "Config") [FAQ](https://lunarclient.dev/apollo/server-owners/faq "FAQ") --- # Nick Hider | Lunar Client Developers Apollo Developers Mods NickHider Nick Hider ========== Allows you to hide skins and usernames for yourself or others. Integration[](https://lunarclient.dev/apollo/developers/mods/nickhider#integration) ------------------------------------------------------------------------------------ ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/nickhider#how-to-toggle-the-mod) public void toggleNickHiderExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModNickHider.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/nickhider#available-options) ------------------------------------------------------------------------------------------------ * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`HIDE_NAME`** * Config Key: `hide-name` * Values * Type: `Boolean` * Default: `true` * **`HIDE_REAL_NAME`** * Config Key: `hide-real-name` * Values * Type: `Boolean` * Default: `true` * **`HIDE_OTHERS_NAMES`** * Config Key: `hide-others-names` * Values * Type: `Boolean` * Default: `false` * **`HIDE_OWN_SKIN`** * Config Key: `hide-own-skin` * Values * Type: `Boolean` * Default: `true` * **`USE_REAL_SKIN`** * Config Key: `use-real-skin` * Values * Type: `Boolean` * Default: `true` * **`HIDE_OTHERS_SKIN`** * Config Key: `hide-others-skin` * Values * Type: `Boolean` * Default: `false` [Neu](https://lunarclient.dev/apollo/developers/mods/neu "Neu") [OneSevenVisuals](https://lunarclient.dev/apollo/developers/mods/onesevenvisuals "OneSevenVisuals") --- # Waypoints | Lunar Client Developers Apollo Developers Mods Waypoints Waypoints ========= Create a waypoint anywhere in the world that will show how for away from a location you are as well as optionally render the name and a beam. Integration[](https://lunarclient.dev/apollo/developers/mods/waypoints#integration) ------------------------------------------------------------------------------------ ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/waypoints#how-to-toggle-the-mod) public void toggleWaypointsExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModWaypoints.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/waypoints#available-options) ------------------------------------------------------------------------------------------------ * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` * **`DEATH_WAYPOINT`** * Config Key: `death-waypoint` * Values * Type: `Boolean` * Default: `false` * **`WAYPOINT_BEAMS`** * Config Key: `waypoint-beams` * Values * Type: `Boolean` * Default: `true` * **`BOX_BORDER`** * Config Key: `box-border` * Values * Type: `Boolean` * Default: `true` * **`TEXT_SHADOW`** * Config Key: `text-shadow` * Values * Type: `Boolean` * Default: `false` * **`BOX_PADDING`** * Config Key: `box-padding` * Values * Type: `Float` * Default: `4.0F` * Minimum: `1.0F` * Maximum: `8.0F` * **`ONLY_SHOW_WHEN_LOOKING_NEAR`** * Only show each waypoint when looking near then in the world * Config Key: `only-show-when-looking-near` * Values * Type: `Boolean` * Default: `false` * **`SHOW_ICONS`** * Show simpler text icons above each waypoint * Config Key: `show-icons` * Values * Type: `Boolean` * Default: `false` * **`LABEL_SCALE`** * Config Key: `label-scale` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.1F` * Maximum: `2.0F` * **`ICON_SCALE`** * Config Key: `icon-scale` * Values * Type: `Float` * Default: `1.5F` * Minimum: `0.1F` * Maximum: `3.0F` * **`ADD_WAYPOINTS_FROM_CHAT`** * Config Key: `add-waypoints-from-chat` * Values * Type: `Boolean` * Default: `true` [Waila](https://lunarclient.dev/apollo/developers/mods/waila "Waila") [WeatherChanger](https://lunarclient.dev/apollo/developers/mods/weatherchanger "WeatherChanger") --- # Getting Started | Lunar Client Developers Apollo Developers Lightweight Protobuf Getting Started Getting Started =============== Overview[](https://lunarclient.dev/apollo/developers/lightweight/protobuf/getting-started#overview) ---------------------------------------------------------------------------------------------------- This guide will help you get started with the `apollo-protos` library, which is used to handle Apollo-related packets from Lunar Client in your Minecraft server. The `apollo-protos` library provides strong typing and schema validation for all Apollo messages, ensuring seamless communication between the client and the server. In this guide, you'll learn how to add the required repository and dependencies to your project. You'll also find links to various examples demonstrating how to integrate and work with Apollo packets, from detecting players using Lunar Client to handling advanced serverbound and roundtrip packets. Available fields for each message, including their types, are available on the Buf Schema Registry at [https://buf.build/lunarclient/apollo (opens in a new tab)](https://buf.build/lunarclient/apollo) . Adding the repository and dependencies[](https://lunarclient.dev/apollo/developers/lightweight/protobuf/getting-started#adding-the-repository-and-dependencies) ---------------------------------------------------------------------------------------------------------------------------------------------------------------- MavenGradle (Groovy)Gradle (Kotlin) pom.xml lunarclient https://repo.lunarclient.dev com.lunarclient apollo-protos 0.0.2 Integration Examples[](https://lunarclient.dev/apollo/developers/lightweight/protobuf/getting-started#integration-examples) ---------------------------------------------------------------------------------------------------------------------------- πŸ”— [Sending Apollo packets & Enabling Apollo modules](https://lunarclient.dev/apollo/developers/lightweight/protobuf/packet-util) πŸ”— [Detecting players using LunarClient](https://lunarclient.dev/apollo/developers/lightweight/protobuf/player-detection) πŸ”— [Common Apollo Objects](https://lunarclient.dev/apollo/developers/lightweight/protobuf/object-util) πŸ”— [Adventure Util](https://lunarclient.dev/apollo/developers/lightweight/protobuf/adventure-util) πŸ”— [Apollo Serverbound packets](https://lunarclient.dev/apollo/developers/lightweight/protobuf/serverbound-packets) πŸ”— [Apollo Roundtrip packets](https://lunarclient.dev/apollo/developers/lightweight/protobuf/roundtrip-packets) For examples of module integration, refer to the specific Module pages. Each page contains code samples under the `apollo-protos library` tab. For instance, you can find sample code for the `BorderModule` on its dedicated page [BorderModule](https://lunarclient.dev/apollo/developers/modules/border#sample-code) in the `Sample Code` section. [Introduction](https://lunarclient.dev/apollo/developers/lightweight/introduction "Introduction") [Player Detection](https://lunarclient.dev/apollo/developers/lightweight/protobuf/player-detection "Player Detection") --- # Getting Started | Lunar Client Developers Apollo Developers Lightweight JSON Getting Started Getting Started =============== Overview[](https://lunarclient.dev/apollo/developers/lightweight/json/getting-started#overview) ------------------------------------------------------------------------------------------------ This method involves manually constructing JSON objects using a JSON library (e.g., Gson) and then converting these objects into byte arrays for transmission. It allows for dynamic and programmatic construction of JSON objects, offering flexibility in modifying the JSON structure. Available fields for each message, including their types, are available on the Buf Schema Registry at [https://buf.build/lunarclient/apollo (opens in a new tab)](https://buf.build/lunarclient/apollo) . While constructing messages, note that the `@type` field isn't required if the message is being sent within a message. Note that this method uses a different plugin channel for sending packets, which is `apollo:json`, while still using the `lunar:apollo` for player detection. Integration Examples[](https://lunarclient.dev/apollo/developers/lightweight/json/getting-started#integration-examples) ------------------------------------------------------------------------------------------------------------------------ πŸ”— [Sending Apollo packets & Enabling Apollo modules](https://lunarclient.dev/apollo/developers/lightweight/json/packet-util) πŸ”— [Detecting players using LunarClient](https://lunarclient.dev/apollo/developers/lightweight/json/player-detection) πŸ”— [Common Apollo Objects](https://lunarclient.dev/apollo/developers/lightweight/json/object-util) πŸ”— [Adventure Util](https://lunarclient.dev/apollo/developers/lightweight/json/adventure-util) For examples of module integration, refer to the specific Module pages. Each page contains code samples under the `Manual JSON Object Construction` tab. For instance, you can find sample code for the `BorderModule` on its dedicated page [BorderModule](https://lunarclient.dev/apollo/developers/modules/border#sample-code) in the `Sample Code` section. [Adventure Util](https://lunarclient.dev/apollo/developers/lightweight/protobuf/adventure-util "Adventure Util") [Player Detection](https://lunarclient.dev/apollo/developers/lightweight/json/player-detection "Player Detection") --- # Saturation | Lunar Client Developers Apollo Developers Mods Saturation Saturation ========== Saturation HUD with AppleSkin features Integration[](https://lunarclient.dev/apollo/developers/mods/saturation#integration) ------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/saturation#how-to-toggle-the-mod) public void toggleSaturationExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModSaturation.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/saturation#available-options) ------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` * **`SHOW_SATURATION_OVERLAY`** * Config Key: `show-saturation-overlay` * Values * Type: `Boolean` * Default: `true` * **`SHOW_APPLESKIN_TOOLTIP`** * Config Key: `show-appleskin-tooltip` * Values * Type: `Boolean` * Default: `true` * **`SHOW_HELD_ITEM_HUNGER`** * Config Key: `show-held-item-hunger` * Values * Type: `Boolean` * Default: `true` * **`SHOW_HELD_ITEM_SATURATION`** * Config Key: `show-held-item-saturation` * Values * Type: `Boolean` * Default: `true` [Replaymod](https://lunarclient.dev/apollo/developers/mods/replaymod "Replaymod") [Sba](https://lunarclient.dev/apollo/developers/mods/sba "Sba") --- # Shiny Pots | Lunar Client Developers Apollo Developers Mods ShinyPots Shiny Pots ========== Gives potions the full box shiny enchantment effect. Integration[](https://lunarclient.dev/apollo/developers/mods/shinypots#integration) ------------------------------------------------------------------------------------ ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/shinypots#how-to-toggle-the-mod) public void toggleShinyPotsExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModShinyPots.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/shinypots#available-options) ------------------------------------------------------------------------------------------------ * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`COLORED_POTIONS`** * Config Key: `colored-potions` * Values * Type: `Boolean` * Default: `false` * **`RENDER_GLINT_BEHIND_POTION`** * Config Key: `render-glint-behind-potion` * Values * Type: `Boolean` * Default: `false` * **`RENDER_ENTIRE_SLOT`** * Config Key: `render-entire-slot` * Values * Type: `Boolean` * Default: `false` [ServerAddress](https://lunarclient.dev/apollo/developers/mods/serveraddress "ServerAddress") [ShulkerPreview](https://lunarclient.dev/apollo/developers/mods/shulkerpreview "ShulkerPreview") --- # Shulker Preview | Lunar Client Developers Apollo Developers Mods ShulkerPreview Shulker Preview =============== Display a preview of the shulker box directly from your inventory. Integration[](https://lunarclient.dev/apollo/developers/mods/shulkerpreview#integration) ----------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/shulkerpreview#how-to-toggle-the-mod) public void toggleShulkerPreviewExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModShulkerPreview.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/shulkerpreview#available-options) ----------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` * **`ALWAYS_PREVIEW`** * Config Key: `always-preview` * Values * Type: `Boolean` * Default: `false` * **`COLORED_SHULKER_PREVIEW`** * Config Key: `colored-shulker-preview` * Values * Type: `Boolean` * Default: `true` [ShinyPots](https://lunarclient.dev/apollo/developers/mods/shinypots "ShinyPots") [Skyblock](https://lunarclient.dev/apollo/developers/mods/skyblock "Skyblock") --- # Acceptable Use | Lunar Client Developers Apollo Acceptable Use Acceptable Use ============== ⚠️ This page describes acceptable use of Apollo according to Moonsworth, LLC. Please note that any experiences you create must still be compliant with the Minecraft EULA and Lunar Client Terms of Service. Current modules[](https://lunarclient.dev/apollo/acceptable-use#current-modules) --------------------------------------------------------------------------------- All current Apollo modules are available for use by all servers, without charge. The intent of Apollo is to help servers create amazing experiences for Lunar Client players. Future modules[](https://lunarclient.dev/apollo/acceptable-use#future-modules) ------------------------------------------------------------------------------- We _may_ release future Apollo modules / features that require an approval process for servers to use. This would be done if a new module / feature is: * Something that requires backing infrastructure that we're unable to provide for free. * Something we're required to keep exclusive for a certain period of time. * Something that directly competes with our [store (opens in a new tab)](https://store.lunarclient.com/) . Questions[](https://lunarclient.dev/apollo/acceptable-use#questions) --------------------------------------------------------------------- If you have further questions about acceptable use, you can join the [Lunar Client Developers Discord (opens in a new tab)](https://lunarclient.dev/discord) . _Disclaimer_: Our acceptable-use polices may be updated at any time to reflect changes in technology or legal requirements. Modules and features, both current and future, may require approval by Moonsworth, LLC for any reason. [License](https://lunarclient.dev/apollo/license "License") [Protocol Buffers](https://lunarclient.dev/apollo/internals/protocol-buffers "Protocol Buffers") --- # License Information | Lunar Client Developers Apollo License License Information =================== You can view the Apollo license inside the Apollo [GitHub repository (opens in a new tab)](https://github.com/LunarClient/Apollo) under the [license page (opens in a new tab)](https://github.com/LunarClient/Apollo/blob/master/license.txt) . If you have further questions about the licensing, you can join the [Apollo discord (opens in a new tab)](https://lunarclient.dev/discord) . [FAQ](https://lunarclient.dev/apollo/server-owners/faq "FAQ") [Acceptable Use](https://lunarclient.dev/apollo/acceptable-use "Acceptable Use") --- # Damage Tint | Lunar Client Developers Apollo Developers Mods DamageTint Damage Tint =========== Adds a tint to the screen when you are low on health. Integration[](https://lunarclient.dev/apollo/developers/mods/damagetint#integration) ------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/damagetint#how-to-toggle-the-mod) public void toggleDamageTintExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModDamageTint.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/damagetint#available-options) ------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`VIGNETTE_COLOR`** * Config Key: `vignette-color` * Values * Type: `String` * Default: `#FFFF0000` * **`VIGNETTE_INTENSITY`** * Intensity of the tint. * Config Key: `vignette-intensity` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.0F` * Maximum: `1.0F` * **`SHOW_VIGNETTE_BELOW`** * Show the tint when you have less than this amount of health as a percentage. * Config Key: `show-vignette-below` * Values * Type: `Integer` * Default: `100` * Minimum: `0` * Maximum: `100` * **`HEARTBEAT_AUDIO`** * Plays a heartbeat, becoming faster the lower your health. * Config Key: `heartbeat-audio` * Values * Type: `Boolean` * Default: `false` [Crosshair](https://lunarclient.dev/apollo/developers/mods/crosshair "Crosshair") [DayCounter](https://lunarclient.dev/apollo/developers/mods/daycounter "DayCounter") --- # CPS | Lunar Client Developers Apollo Developers Mods Cps CPS === Displays your clicking speed on the HUD. Integration[](https://lunarclient.dev/apollo/developers/mods/cps#integration) ------------------------------------------------------------------------------ ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/cps#how-to-toggle-the-mod) public void toggleCPSExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModCps.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/cps#available-options) ------------------------------------------------------------------------------------------ * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`SCALE`** * Config Key: `scale` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.5F` * Maximum: `1.5F` * **`TEXT_SHADOW`** * Config Key: `text-shadow` * Values * Type: `Boolean` * Default: `true` * **`BRACKETS`** * Config Key: `brackets` * Values * Type: `Boolean` * Default: `true` * **`BRACKET_COLOR`** * Config Key: `bracket-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`BACKGROUND`** * Config Key: `background` * Values * Type: `Boolean` * Default: `true` * **`STATIC_BACKGROUND_WIDTH`** * If this is disabled the background will change size with the text. * Config Key: `static-background-width` * Values * Type: `Boolean` * Default: `true` * **`STATIC_BACKGROUND_HEIGHT`** * If this is disabled the background will change size with the text. * Config Key: `static-background-height` * Values * Type: `Boolean` * Default: `true` * **`BACKGROUND_WIDTH`** * Config Key: `background-width` * Values * Type: `Integer` * Default: `56` * Minimum: `40` * Maximum: `62` * **`BACKGROUND_HEIGHT`** * Config Key: `background-height` * Values * Type: `Integer` * Default: `18` * Minimum: `10` * Maximum: `22` * **`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` * **`BACKGROUND_COLOR`** * Config Key: `background-color` * Values * Type: `String` * Default: `#6F000000` * **`TEXT_COLOR`** * Config Key: `text-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`RIGHT_CLICK`** * Config Key: `right-click` * Values * Type: `Boolean` * Default: `false` * **`LINE_COLOR`** * Config Key: `line-color` * Values * Type: `String` * Default: `#FF202020` * **`SHOW_CPSTEXT`** * Config Key: `show-c-p-s-text` * Values * Type: `Boolean` * Default: `true` * **`REVERSE_TEXT`** * Config Key: `reverse-text` * Values * Type: `Boolean` * Default: `false` * **`IGNORE_CANCELLED_CLICKS`** * Config Key: `ignore-cancelled-clicks` * Values * Type: `Boolean` * Default: `false` [Coordinates](https://lunarclient.dev/apollo/developers/mods/coordinates "Coordinates") [Crosshair](https://lunarclient.dev/apollo/developers/mods/crosshair "Crosshair") --- # Glint Colorizer | Lunar Client Developers Apollo Developers Mods GlintColorizer Glint Colorizer =============== Customize the color of enchantment glints Integration[](https://lunarclient.dev/apollo/developers/mods/glintcolorizer#integration) ----------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/glintcolorizer#how-to-toggle-the-mod) public void toggleGlintColorizerExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModGlintColorizer.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/glintcolorizer#available-options) ----------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`SHOW_GLINT`** * Config Key: `show-glint` * Values * Type: `Boolean` * Default: `true` * **`USE_LUNAR_EQUATION`** * Use a custom blending algorithm which supports darker colours * Config Key: `use-lunar-equation` * Values * Type: `Boolean` * Default: `true` * **`OVERRIDE_ITEM_GLINT`** * Recolor the glints of items * Config Key: `override-item-glint` * Values * Type: `Boolean` * Default: `true` * **`ITEM_GLINT_LUNAR_COLOR`** * Config Key: `item-glint-lunar-color` * Values * Type: `String` * Default: `#CC6419FF` * **`ITEM_GLINT_VANILLA_COLOR`** * Config Key: `item-glint-vanilla-color` * Values * Type: `String` * Default: `#FF8040CC` * **`OVERRIDE_ARMOR_GLINT`** * Recolor the glints of worn armor * Config Key: `override-armor-glint` * Values * Type: `Boolean` * Default: `true` * **`ARMOR_GLINT_LUNAR`** * Config Key: `armor-glint-lunar` * Values * Type: `String` * Default: `#CC6419FF` * **`ARMOR_GLINT_VANILLA`** * Config Key: `armor-glint-vanilla` * Values * Type: `String` * Default: `#FF8040CC` * **`GLINT_COLOR`** * Config Key: `glint-color` * Values * Type: `String` * Default: `#FF8040CC` [Freelook](https://lunarclient.dev/apollo/developers/mods/freelook "Freelook") [Hitbox](https://lunarclient.dev/apollo/developers/mods/hitbox "Hitbox") --- # FOV Changer | Lunar Client Developers Apollo Developers Mods Fov FOV Changer =========== Allows you to customize your field of view for different potion or speed states. Integration[](https://lunarclient.dev/apollo/developers/mods/fov#integration) ------------------------------------------------------------------------------ ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/fov#how-to-toggle-the-mod) public void toggleFOVChangerExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModFov.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/fov#available-options) ------------------------------------------------------------------------------------------ * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`STATIC_FOV`** * Determines if your FOV changes as you move. * Config Key: `static-f-o-v` * Values * Type: `Boolean` * Default: `false` * **`DEFAULT_FOV`** * Config Key: `default-fov` * Values * Type: `Integer` * Default: `70` * Minimum: `30` * Maximum: `110` * **`AIMING_MODIFIER`** * Config Key: `aiming-modifier` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.0F` * Maximum: `5.0F` * **`AIMING_MIN`** * Config Key: `aiming-min` * Values * Type: `Float` * Default: `-10.0F` * Minimum: `-200.0F` * Maximum: `200.0F` * **`AIMING_MAX`** * Config Key: `aiming-max` * Values * Type: `Float` * Default: `10.0F` * Minimum: `-200.0F` * Maximum: `200.0F` * **`SPEED_FOV`** * Config Key: `speed-f-o-v` * Values * Type: `Integer` * Default: `70` * Minimum: `30` * Maximum: `110` * **`SPEED_TWO_FOV`** * Config Key: `speed-two-f-o-v` * Values * Type: `Integer` * Default: `70` * Minimum: `30` * Maximum: `110` * **`SLOWNESS_FOV`** * Config Key: `slowness-f-o-v` * Values * Type: `Integer` * Default: `70` * Minimum: `30` * Maximum: `110` * **`MOVEMENT_MODIFIER`** * Config Key: `movement-modifier` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.0F` * Maximum: `5.0F` * **`MOVEMENT_MIN`** * Config Key: `movement-min` * Values * Type: `Float` * Default: `-10.0F` * Minimum: `-200.0F` * Maximum: `200.0F` * **`MOVEMENT_MAX`** * Config Key: `movement-max` * Values * Type: `Float` * Default: `10.0F` * Minimum: `-200.0F` * Maximum: `200.0F` * **`SPRINTING_FOV`** * Config Key: `sprinting-f-o-v` * Values * Type: `Integer` * Default: `70` * Minimum: `30` * Maximum: `110` * **`SPRINT_MODIFIER`** * Config Key: `sprint-modifier` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.0F` * Maximum: `5.0F` * **`SPRINT_MIN`** * Config Key: `sprint-min` * Values * Type: `Float` * Default: `-10.0F` * Minimum: `-200.0F` * Maximum: `200.0F` * **`SPRINT_MAX`** * Config Key: `sprint-max` * Values * Type: `Float` * Default: `10.0F` * Minimum: `-200.0F` * Maximum: `200.0F` * **`FLYING_FOV`** * Config Key: `flying-fov` * Values * Type: `Integer` * Default: `70` * Minimum: `30` * Maximum: `110` * **`FLYING_MODIFIER`** * Config Key: `flying-modifier` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.0F` * Maximum: `5.0F` * **`FLYING_MIN`** * Config Key: `flying-min` * Values * Type: `Float` * Default: `-10.0F` * Minimum: `-200.0F` * Maximum: `200.0F` * **`FLYING_MAX`** * Config Key: `flying-max` * Values * Type: `Float` * Default: `10.0F` * Minimum: `-200.0F` * Maximum: `200.0F` [Fog](https://lunarclient.dev/apollo/developers/mods/fog "Fog") [Fps](https://lunarclient.dev/apollo/developers/mods/fps "Fps") --- # Menu Blur | Lunar Client Developers Apollo Developers Mods MenuBlur Menu Blur ========= Blurs the background behind menus. Integration[](https://lunarclient.dev/apollo/developers/mods/menublur#integration) ----------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/menublur#how-to-toggle-the-mod) public void toggleMenuBlurExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModMenuBlur.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/menublur#available-options) ----------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` * **`BLUR_STRENGTH`** * Config Key: `blur-strength` * Values * Type: `Integer` * Default: `4` * Minimum: `0` * Maximum: `20` * **`BLUR_LUNAR_TOGGLE`** * Config Key: `blur-lunar-toggle` * Values * Type: `Boolean` * Default: `true` * **`BLUR_LUNAR_BACKGROUND`** * Config Key: `blur-lunar-background` * Values * Type: `String` * Default: `#0` * **`BLUR_INVENTORY_TOGGLE`** * Config Key: `blur-inventory-toggle` * Values * Type: `Boolean` * Default: `true` * **`BLUR_INVENTORY_BACKGROUND`** * Config Key: `blur-inventory-background` * Values * Type: `String` * Default: `#6F000000` * **`BLUR_PAUSE_TOGGLE`** * Config Key: `blur-pause-toggle` * Values * Type: `Boolean` * Default: `true` * **`BLUR_PAUSE_BACKGROUND`** * Config Key: `blur-pause-background` * Values * Type: `String` * Default: `#6F000000` [Memory](https://lunarclient.dev/apollo/developers/mods/memory "Memory") [Minimap](https://lunarclient.dev/apollo/developers/mods/minimap "Minimap") --- # Minimap | Lunar Client Developers Apollo Developers Mods Minimap Minimap ======= Display a miniature map of the world on your HUD. Integration[](https://lunarclient.dev/apollo/developers/mods/minimap#integration) ---------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/minimap#how-to-toggle-the-mod) public void toggleMinimapExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModMinimap.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/minimap#available-options) ---------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`SCALE`** * Config Key: `scale` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.5F` * Maximum: `1.5F` * **`MAP_WIDTH`** * Config Key: `map-width` * Values * Type: `Integer` * Default: `8` * Minimum: `1` * Maximum: `16` * **`MAP_HEIGHT`** * Config Key: `map-height` * Values * Type: `Integer` * Default: `8` * Minimum: `1` * Maximum: `16` * **`MAP_ZOOM`** * Config Key: `map-zoom` * Values * Type: `Float` * Default: `1.0F` * Minimum: `1.0F` * Maximum: `2.0F` * **`ROTATE_WITH_PLAYER`** * Config Key: `rotate-with-player` * Values * Type: `Boolean` * Default: `true` * **`BORDER`** * Config Key: `border` * Values * Type: `Boolean` * Default: `true` * **`BORDER_COLOR`** * Config Key: `border-color` * Values * Type: `String` * Default: `#9F000000` * **`BORDER_THICKNESS`** * Config Key: `border-thickness` * Values * Type: `Float` * Default: `1.0F` * Minimum: `1.0F` * Maximum: `5.0F` * **`COMPASS`** * Config Key: `compass` * Values * Type: `Boolean` * Default: `true` * **`COMPASS_COLOR`** * Config Key: `compass-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`COMPASS_SHADOW`** * Config Key: `compass-shadow` * Values * Type: `Boolean` * Default: `true` * **`PLAYER_MARKER_COLOR`** * Config Key: `player-marker-color` * Values * Type: `String` * Default: `#FF0000FF` * **`PLAYER_MARKER_SIZE`** * Config Key: `player-marker-size` * Values * Type: `Float` * Default: `5.0F` * Minimum: `1.0F` * Maximum: `10.0F` * **`ENTITY_MARKER_OPACITY`** * Config Key: `entity-marker-opacity` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.0F` * Maximum: `1.0F` * **`ENTITY_MARKER_SIZE`** * Config Key: `entity-marker-size` * Values * Type: `Float` * Default: `1.0F` * Minimum: `1.0F` * Maximum: `10.0F` * **`ENTITY_MARKER_SHADOW`** * Config Key: `entity-marker-shadow` * Values * Type: `Boolean` * Default: `true` * **`SHOW_COORDINATES`** * Config Key: `show-coordinates` * Values * Type: `Boolean` * Default: `true` * **`SHOW_DISTANT_WAYPOINTS`** * Config Key: `show-distant-waypoints` * Values * Type: `Boolean` * Default: `true` [MenuBlur](https://lunarclient.dev/apollo/developers/mods/menublur "MenuBlur") [Momentum](https://lunarclient.dev/apollo/developers/mods/momentum "Momentum") --- # Hitbox | Lunar Client Developers Apollo Developers Mods Hitbox Hitbox ====== Customize the hitbox displayed in F3+B Integration[](https://lunarclient.dev/apollo/developers/mods/hitbox#integration) --------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/hitbox#how-to-toggle-the-mod) public void toggleHitboxExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModHitbox.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/hitbox#available-options) --------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`HITBOX_PLAYER_LINE_WIDTH`** * Config Key: `hitbox-player-line-width` * Values * Type: `Float` * Default: `1.0F` * Minimum: `1.0F` * Maximum: `5.0F` * **`HITBOX_PLAYER_LINE_COLOR`** * Config Key: `hitbox-player-line-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`HITBOX_PLAYER_LOOK_VECTOR`** * Config Key: `hitbox-player-look-vector` * Values * Type: `Boolean` * Default: `false` * **`HITBOX_PLAYER_SHOW`** * Config Key: `hitbox-player-show` * Values * Type: `Boolean` * Default: `true` * **`HITBOX_ITEM_LINE_WIDTH`** * Config Key: `hitbox-item-line-width` * Values * Type: `Float` * Default: `1.0F` * Minimum: `1.0F` * Maximum: `5.0F` * **`HITBOX_ITEM_LINE_COLOR`** * Config Key: `hitbox-item-line-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`HITBOX_ITEM_LOOK_VECTOR`** * Config Key: `hitbox-item-look-vector` * Values * Type: `Boolean` * Default: `false` * **`HITBOX_ITEM_SHOW`** * Config Key: `hitbox-item-show` * Values * Type: `Boolean` * Default: `true` * **`HITBOX_PROJECTILE_LINE_WIDTH`** * Config Key: `hitbox-projectile-line-width` * Values * Type: `Float` * Default: `1.0F` * Minimum: `1.0F` * Maximum: `5.0F` * **`HITBOX_PROJECTILE_LINE_COLOR`** * Config Key: `hitbox-projectile-line-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`HITBOX_PROJECTILE_LOOK_VECTOR`** * Config Key: `hitbox-projectile-look-vector` * Values * Type: `Boolean` * Default: `false` * **`HITBOX_PROJECTILE_SHOW`** * Config Key: `hitbox-projectile-show` * Values * Type: `Boolean` * Default: `true` * **`HITBOX_MOB_LINE_WIDTH`** * Config Key: `hitbox-mob-line-width` * Values * Type: `Float` * Default: `1.0F` * Minimum: `1.0F` * Maximum: `5.0F` * **`HITBOX_MOB_LINE_COLOR`** * Config Key: `hitbox-mob-line-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`HITBOX_MOB_LOOK_VECTOR`** * Config Key: `hitbox-mob-look-vector` * Values * Type: `Boolean` * Default: `false` * **`HITBOX_MOB_SHOW`** * Config Key: `hitbox-mob-show` * Values * Type: `Boolean` * Default: `true` * **`HITBOX_EXP_ORB_LINE_WIDTH`** * Config Key: `hitbox-exp-orb-line-width` * Values * Type: `Float` * Default: `1.0F` * Minimum: `1.0F` * Maximum: `5.0F` * **`HITBOX_EXP_ORB_LINE_COLOR`** * Config Key: `hitbox-exp-orb-line-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`HITBOX_EXP_ORB_LOOK_VECTOR`** * Config Key: `hitbox-exp-orb-look-vector` * Values * Type: `Boolean` * Default: `false` * **`HITBOX_EXP_ORB_SHOW`** * Config Key: `hitbox-exp-orb-show` * Values * Type: `Boolean` * Default: `true` [GlintColorizer](https://lunarclient.dev/apollo/developers/mods/glintcolorizer "GlintColorizer") [HitColor](https://lunarclient.dev/apollo/developers/mods/hitcolor "HitColor") --- # Time Changer | Lunar Client Developers Apollo Developers Mods TimeChanger Time Changer ============ Customize the current time of day to a fixed position. Integration[](https://lunarclient.dev/apollo/developers/mods/timechanger#integration) -------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/timechanger#how-to-toggle-the-mod) public void toggleTimeChangerExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModTimeChanger.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/timechanger#available-options) -------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`TIME_CHANGER_TIME`** * Config Key: `time-changer-time` * Values * Type: `Integer` * Default: `12000` * Minimum: `0` * Maximum: `24000` * **`HORIZON_YLEVEL`** * Config Key: `horizon-y-level` * Values * Type: `Integer` * Default: `63` * Minimum: `0` * Maximum: `63` * **`USE_REAL_TIME`** * Config Key: `use-real-time` * Values * Type: `Boolean` * Default: `false` * **`TIME_PASSAGE`** * Config Key: `time-passage` * Values * Type: `Boolean` * Default: `false` * **`SPEED`** * Config Key: `speed` * Values * Type: `Integer` * Default: `1` * Minimum: `0` * Maximum: `20` [TeamView](https://lunarclient.dev/apollo/developers/mods/teamview "TeamView") [Titles](https://lunarclient.dev/apollo/developers/mods/titles "Titles") --- # WAILA | Lunar Client Developers Apollo Developers Mods Waila WAILA ===== What am I looking at? Integration[](https://lunarclient.dev/apollo/developers/mods/waila#integration) -------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/waila#how-to-toggle-the-mod) public void toggleWAILAExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModWaila.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/waila#available-options) -------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`SCALE`** * Config Key: `scale` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.5F` * Maximum: `1.5F` * **`SHOW_ENTITIES`** * Config Key: `show-entities` * Values * Type: `Boolean` * Default: `true` * **`SHOW_COSMETICS`** * Config Key: `show-cosmetics` * Values * Type: `Boolean` * Default: `true` * **`TEXT_SHADOW`** * Config Key: `text-shadow` * Values * Type: `Boolean` * Default: `true` * **`BACKGROUND`** * Config Key: `background` * Values * Type: `Boolean` * Default: `true` * **`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` * **`TEXT_COLOR`** * Config Key: `text-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`BACKGROUND_COLOR`** * Config Key: `background-color` * Values * Type: `String` * Default: `#80000000` * **`BORDER_COLOR`** * Config Key: `border-color` * Values * Type: `String` * Default: `#9F000000` * **`VERTICAL_SPACING`** * Config Key: `vertical-spacing` * Values * Type: `Integer` * Default: `3` * Minimum: `1` * Maximum: `10` * **`HORIZONTAL_SPACING`** * Config Key: `horizontal-spacing` * Values * Type: `Integer` * Default: `3` * Minimum: `1` * Maximum: `10` [UhcOverlay](https://lunarclient.dev/apollo/developers/mods/uhcoverlay "UhcOverlay") [Waypoints](https://lunarclient.dev/apollo/developers/mods/waypoints "Waypoints") --- # Zoom | Lunar Client Developers Apollo Developers Mods Zoom Zoom ==== Allows you to smoothly zoom in and out. Integration[](https://lunarclient.dev/apollo/developers/mods/zoom#integration) ------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/zoom#how-to-toggle-the-mod) public void toggleZoomExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModZoom.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/zoom#available-options) ------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` * **`TOGGLE_KEY_ZOOM`** * Quickly pressing and releasing the key will toggle zoom * Config Key: `toggle-key-zoom` * Values * Type: `Boolean` * Default: `false` * **`SMOOTH_CAMERA`** * When zoomed in the camera movement will move smoothly (cinematic camera) * Config Key: `smooth-camera` * Values * Type: `Boolean` * Default: `true` * **`SMOOTH_ZOOM`** * Add a transition when zooming in and out. * Config Key: `smooth-zoom` * Values * Type: `Boolean` * Default: `true` * **`VARIABLE_ZOOM`** * Adjust the zoom depth using Mouse Scroll Wheel * Config Key: `variable-zoom` * Values * Type: `Boolean` * Default: `false` * **`ZOOM_DIVISOR`** * Change the initial zoom depth. * Config Key: `zoom-divisor` * Values * Type: `Integer` * Default: `4` * Minimum: `2` * Maximum: `10` * **`CAMERA_SENSITIVITY`** * Change the camera sensitivity when zoomed in. * Config Key: `camera-sensitivity` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.1F` * Maximum: `2.0F` [WorldeditCui](https://lunarclient.dev/apollo/developers/mods/worldeditcui "WorldeditCui") [Colors](https://lunarclient.dev/apollo/developers/utilities/colors "Colors") --- # Momentum Mod | Lunar Client Developers Apollo Developers Mods Momentum Momentum Mod ============ Shows your current velocity Integration[](https://lunarclient.dev/apollo/developers/mods/momentum#integration) ----------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/momentum#how-to-toggle-the-mod) public void toggleMomentumModExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModMomentum.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/momentum#available-options) ----------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`SCALE`** * Config Key: `scale` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.5F` * Maximum: `1.5F` * **`TEXT_SHADOW`** * Config Key: `text-shadow` * Values * Type: `Boolean` * Default: `true` * **`BRACKETS`** * Config Key: `brackets` * Values * Type: `Boolean` * Default: `true` * **`BRACKET_COLOR`** * Config Key: `bracket-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`BACKGROUND`** * Config Key: `background` * Values * Type: `Boolean` * Default: `true` * **`STATIC_BACKGROUND_WIDTH`** * If this is disabled the background will change size with the text. * Config Key: `static-background-width` * Values * Type: `Boolean` * Default: `true` * **`STATIC_BACKGROUND_HEIGHT`** * If this is disabled the background will change size with the text. * Config Key: `static-background-height` * Values * Type: `Boolean` * Default: `true` * **`BACKGROUND_WIDTH`** * Config Key: `background-width` * Values * Type: `Integer` * Default: `56` * Minimum: `50` * Maximum: `62` * **`BACKGROUND_HEIGHT`** * Config Key: `background-height` * Values * Type: `Integer` * Default: `18` * Minimum: `10` * Maximum: `22` * **`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` * **`BACKGROUND_COLOR`** * Config Key: `background-color` * Values * Type: `String` * Default: `#6F000000` * **`TEXT_COLOR`** * Config Key: `text-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`USE_GROUND_SPEED`** * If enabled then Y velocity is not used in the final speed. * Config Key: `use-ground-speed` * Values * Type: `Boolean` * Default: `false` * **`USE_AVERAGE_VELOCITY`** * If this is disabled then instant velocity is used * Config Key: `use-average-velocity` * Values * Type: `Boolean` * Default: `false` * **`AVERAGING_PERIOD`** * Determines how many times a second velocity is calculated. Lower values will show a smoother velocity * Config Key: `averaging-period` * Values * Type: `Integer` * Default: `8` * Minimum: `1` * Maximum: `50` [Minimap](https://lunarclient.dev/apollo/developers/mods/minimap "Minimap") [MotionBlur](https://lunarclient.dev/apollo/developers/mods/motionblur "MotionBlur") --- # Particle Changer | Lunar Client Developers Apollo Developers Mods ParticleChanger Particle Changer ================ Change how particles look and work. Integration[](https://lunarclient.dev/apollo/developers/mods/particlechanger#integration) ------------------------------------------------------------------------------------------ ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/particlechanger#how-to-toggle-the-mod) public void toggleParticleChangerExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModParticleChanger.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/particlechanger#available-options) ------------------------------------------------------------------------------------------------------ * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`ALWAYS_ENCHANT_STRIKES`** * Config Key: `always-enchant-strikes` * Values * Type: `Boolean` * Default: `false` * **`AFFECT_ENCHANTED_WEAPONS`** * Config Key: `affect-enchanted-weapons` * Values * Type: `Boolean` * Default: `true` * **`HIDE_FIRST_PERSON_PARTICLES`** * Hide your players potion effect particles when you're in first person * Config Key: `hide-first-person-particles` * Values * Type: `Boolean` * Default: `false` * **`COLOR`** * Config Key: `color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`SCALE`** * Config Key: `scale` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.5F` * Maximum: `2.0F` * **`PARTICLE_MULTIPLIER`** * Config Key: `particle-multiplier` * Values * Type: `Integer` * Default: `1` * Minimum: `1` * Maximum: `10` * **`HIDE_PARTICLE`** * Config Key: `hide-particle` * Values * Type: `Boolean` * Default: `false` * **`OVERLAY_COLOR`** * Config Key: `overlay-color` * Values * Type: `Boolean` * Default: `false` [PackOrganizer](https://lunarclient.dev/apollo/developers/mods/packorganizer "PackOrganizer") [Ping](https://lunarclient.dev/apollo/developers/mods/ping "Ping") --- # NameTags | Lunar Client Developers Apollo Developers Mods Nametag NameTags ======== A mod that allows you to modify nametags. Integration[](https://lunarclient.dev/apollo/developers/mods/nametag#integration) ---------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/nametag#how-to-toggle-the-mod) public void toggleNameTagsExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModNametag.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/nametag#available-options) ---------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` * **`NAMETAG_SHADOW`** * Config Key: `nametag-shadow` * Values * Type: `Boolean` * Default: `false` * **`NAMETAG`** * An option to see your own nametag in third person * Config Key: `nametag` * Values * Type: `Boolean` * Default: `true` * **`TOGGLE_NAMETAGS`** * Determines if we should send the message when nametags are toggled. * Config Key: `toggle-nametags` * Values * Type: `Boolean` * Default: `true` * **`NAMETAG_BACKGROUND_OPACITY`** * Config Key: `nametag-background-opacity` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.0F` * Maximum: `1.0F` [MumbleLink](https://lunarclient.dev/apollo/developers/mods/mumblelink "MumbleLink") [Neu](https://lunarclient.dev/apollo/developers/mods/neu "Neu") --- # Toggle Sneak/Sprint | Lunar Client Developers Apollo Developers Mods ToggleSneak Toggle Sneak/Sprint =================== Make the sprinting and sneaking keys toggleable instead of needing to be held down. Integration[](https://lunarclient.dev/apollo/developers/mods/togglesneak#integration) -------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/togglesneak#how-to-toggle-the-mod) public void toggleToggleSneakSprintExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModToggleSneak.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/togglesneak#available-options) -------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` * **`TOGGLE_SPRINT`** * Config Key: `toggle-sprint` * Values * Type: `Boolean` * Default: `true` * **`TOGGLE_SNEAK`** * Config Key: `toggle-sneak` * Values * Type: `Boolean` * Default: `false` * **`TOGGLE_SNEAK_CONTAINER`** * Config Key: `toggle-sneak-container` * Values * Type: `Boolean` * Default: `false` * **`DOUBLE_TAP`** * Config Key: `double-tap` * Values * Type: `Boolean` * Default: `true` * **`FLY_BOOST`** * Config Key: `fly-boost` * Values * Type: `Boolean` * Default: `true` * **`FLY_BOOST_AMOUNT`** * Config Key: `fly-boost-amount` * Values * Type: `Integer` * Default: `4` * Minimum: `2` * Maximum: `8` [TntCountdown](https://lunarclient.dev/apollo/developers/mods/tntcountdown "TntCountdown") [UhcOverlay](https://lunarclient.dev/apollo/developers/mods/uhcoverlay "UhcOverlay") --- # Pack Organizer | Lunar Client Developers Apollo Developers Mods PackOrganizer Pack Organizer ============== Allows you to organize your resource packs into folders Integration[](https://lunarclient.dev/apollo/developers/mods/packorganizer#integration) ---------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/packorganizer#how-to-toggle-the-mod) public void togglePackOrganizerExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModPackOrganizer.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/packorganizer#available-options) ---------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` * **`SHOW_INCOMPATIBLE`** * Config Key: `show-incompatible` * Values * Type: `Boolean` * Default: `true` [PackDisplay](https://lunarclient.dev/apollo/developers/mods/packdisplay "PackDisplay") [ParticleChanger](https://lunarclient.dev/apollo/developers/mods/particlechanger "ParticleChanger") --- # Scrollable Tooltips | Lunar Client Developers Apollo Developers Mods ScrollableTooltips Scrollable Tooltips =================== Use your scroll wheel to read overly long item descriptions. Integration[](https://lunarclient.dev/apollo/developers/mods/scrollabletooltips#integration) --------------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/scrollabletooltips#how-to-toggle-the-mod) public void toggleScrollableTooltipsExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModScrollableTooltips.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/scrollabletooltips#available-options) --------------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` * **`START_AT_TOP`** * Config Key: `start-at-top` * Values * Type: `Boolean` * Default: `true` * **`VERTICAL_KEYBIND`** * Config Key: `vertical-keybind` * Values * Type: `Boolean` * Default: `false` * **`TEXT_SHADOW`** * Config Key: `text-shadow` * Values * Type: `Boolean` * Default: `true` * **`WRAP_TEXT`** * Config Key: `wrap-text` * Values * Type: `Boolean` * Default: `false` [Screenshot](https://lunarclient.dev/apollo/developers/mods/screenshot "Screenshot") [ServerAddress](https://lunarclient.dev/apollo/developers/mods/serveraddress "ServerAddress") --- # Screenshot Uploader | Lunar Client Developers Apollo Developers Mods Screenshot Screenshot Uploader =================== Updates the screenshot behaviour allowing you to instantly open, upload or tweet the image. Integration[](https://lunarclient.dev/apollo/developers/mods/screenshot#integration) ------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/screenshot#how-to-toggle-the-mod) public void toggleScreenshotUploaderExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModScreenshot.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/screenshot#available-options) ------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` * **`COPY_AUTOMATICALLY`** * Config Key: `copy-automatically` * Values * Type: `Boolean` * Default: `false` * **`UPLOAD_OPTION`** * Config Key: `upload-option` * Values * Type: `Boolean` * Default: `true` * **`TWEET_OPTION`** * Config Key: `tweet-option` * Values * Type: `Boolean` * Default: `true` * **`COPY_OPTION`** * Config Key: `copy-option` * Values * Type: `Boolean` * Default: `true` [Scoreboard](https://lunarclient.dev/apollo/developers/mods/scoreboard "Scoreboard") [ScrollableTooltips](https://lunarclient.dev/apollo/developers/mods/scrollabletooltips "ScrollableTooltips") --- # Day Counter | Lunar Client Developers Apollo Developers Mods DayCounter Day Counter =========== View the number of Minecraft Days you have played in a world. Integration[](https://lunarclient.dev/apollo/developers/mods/daycounter#integration) ------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/daycounter#how-to-toggle-the-mod) public void toggleDayCounterExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModDayCounter.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/daycounter#available-options) ------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`SCALE`** * Config Key: `scale` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.5F` * Maximum: `1.5F` * **`TEXT_SHADOW`** * Config Key: `text-shadow` * Values * Type: `Boolean` * Default: `true` * **`BRACKETS`** * Config Key: `brackets` * Values * Type: `Boolean` * Default: `true` * **`BRACKET_COLOR`** * Config Key: `bracket-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`BACKGROUND`** * Config Key: `background` * Values * Type: `Boolean` * Default: `true` * **`STATIC_BACKGROUND_WIDTH`** * If this is disabled the background will change size with the text. * Config Key: `static-background-width` * Values * Type: `Boolean` * Default: `true` * **`STATIC_BACKGROUND_HEIGHT`** * If this is disabled the background will change size with the text. * Config Key: `static-background-height` * Values * Type: `Boolean` * Default: `true` * **`BACKGROUND_WIDTH`** * Config Key: `background-width` * Values * Type: `Integer` * Default: `56` * Minimum: `46` * Maximum: `62` * **`BACKGROUND_HEIGHT`** * Config Key: `background-height` * Values * Type: `Integer` * Default: `18` * Minimum: `10` * Maximum: `22` * **`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` * **`BACKGROUND_COLOR`** * Config Key: `background-color` * Values * Type: `String` * Default: `#6F000000` * **`TEXT_COLOR`** * Config Key: `text-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`USE_WORLD_TYPE`** * If enabled, this will show the day of the world. If disabled, it will display your playtime in that world. * Config Key: `use-world-type` * Values * Type: `Boolean` * Default: `false` [DamageTint](https://lunarclient.dev/apollo/developers/mods/damagetint "DamageTint") [DirectionHud](https://lunarclient.dev/apollo/developers/mods/directionhud "DirectionHud") --- # Hypixel Mods | Lunar Client Developers Apollo Developers Mods HypixelMod Hypixel Mods ============ A collection of mods that directly integrate with the Hypixel server network. Integration[](https://lunarclient.dev/apollo/developers/mods/hypixelmod#integration) ------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/hypixelmod#how-to-toggle-the-mod) public void toggleHypixelModsExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModHypixelMod.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/hypixelmod#available-options) ------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` * **`REMOVE_GUILD_ON_TAB`** * Config Key: `remove-guild-on-tab` * Values * Type: `Boolean` * Default: `true` * **`REMOVE_GUILD_MOTD`** * Config Key: `remove-guild-motd` * Values * Type: `Boolean` * Default: `true` * **`SHORT_CHANNEL_NAMES`** * Config Key: `short-channel-names` * Values * Type: `Boolean` * Default: `false` * **`AUTO_FRIEND`** * Config Key: `auto-friend` * Values * Type: `Boolean` * Default: `false` * **`AUTO_TIP`** * Config Key: `auto-tip` * Values * Type: `Boolean` * Default: `false` * **`AUTO_GG`** * Config Key: `auto-g-g` * Values * Type: `Boolean` * Default: `false` * **`ANTI_GG`** * Config Key: `anti-g-g` * Values * Type: `Boolean` * Default: `false` * **`AUTO_WHO`** * Config Key: `auto-who` * Values * Type: `Boolean` * Default: `false` * **`LEVEL_HEAD`** * Config Key: `level-head` * Values * Type: `Boolean` * Default: `false` * **`HYPIXEL_AUTOCOMPLETE`** * Config Key: `hypixel-autocomplete` * Values * Type: `Boolean` * Default: `true` * **`LEVEL_COLOR`** * Config Key: `level-color` * Values * Type: `String` * Default: `#FFFFFF55` * **`LEVEL_HEAD_NUMBER_COLOR`** * Config Key: `level-head-number-color` * Values * Type: `String` * Default: `#FF55FFFF` * **`LEVEL_ABOVE`** * Config Key: `level-above` * Values * Type: `Boolean` * Default: `false` * **`USE_BEDWARS_LEVELS_FORMAT`** * Config Key: `use-bedwars-levels-format` * Values * Type: `Boolean` * Default: `true` * **`HIDE_PRIVATE_MESSAGES`** * Config Key: `hide-private-messages` * Values * Type: `Boolean` * Default: `false` * **`HIDE_TEAM_CHAT`** * Config Key: `hide-team-chat` * Values * Type: `Boolean` * Default: `false` * **`HIDE_PARTY_CHAT`** * Config Key: `hide-party-chat` * Values * Type: `Boolean` * Default: `false` * **`HIDE_GUILD_CHAT`** * Config Key: `hide-guild-chat` * Values * Type: `Boolean` * Default: `false` * **`HIDE_SHOUT`** * Config Key: `hide-shout` * Values * Type: `Boolean` * Default: `false` * **`HIDE_SPECTATOR_CHAT`** * Config Key: `hide-spectator-chat` * Values * Type: `Boolean` * Default: `false` * **`REMOVE_LOBBY_STATUSES`** * Config Key: `remove-lobby-statuses` * Values * Type: `Boolean` * Default: `false` * **`HIDE_JOIN_MESSAGES`** * Config Key: `hide-join-messages` * Values * Type: `Boolean` * Default: `false` * **`HIDE_LEAVE_MESSAGES`** * Config Key: `hide-leave-messages` * Values * Type: `Boolean` * Default: `false` * **`HIDE_SOUL_WELL_ANNOUNCEMENTS`** * Config Key: `hide-soul-well-announcements` * Values * Type: `Boolean` * Default: `false` * **`HIDE_MYSTERY_BOX_ANNOUNCEMENTS`** * Config Key: `hide-mystery-box-announcements` * Values * Type: `Boolean` * Default: `false` [HypixelBedwars](https://lunarclient.dev/apollo/developers/mods/hypixelbedwars "HypixelBedwars") [ItemCounter](https://lunarclient.dev/apollo/developers/mods/itemcounter "ItemCounter") --- # Snaplook | Lunar Client Developers Apollo Developers Mods Snaplook Snaplook ======== When activated, allows you to change your camera perspective while a button is pressed. Integration[](https://lunarclient.dev/apollo/developers/mods/snaplook#integration) ----------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/snaplook#how-to-toggle-the-mod) public void toggleSnaplookExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModSnaplook.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/snaplook#available-options) ----------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`SMOOTH_CAMERA`** * When zoomed in the camera movement will move smoothly (cinematic camera) * Config Key: `smooth-camera` * Values * Type: `Boolean` * Default: `true` * **`SNAPLOOK_TOGGLE_MODE`** * This feature uses press and hold by default. Useful if you want to bypass a certain camera orientation. * Config Key: `snaplook-toggle-mode` * Values * Type: `Boolean` * Default: `false` [Skyblock](https://lunarclient.dev/apollo/developers/mods/skyblock "Skyblock") [SoundChanger](https://lunarclient.dev/apollo/developers/mods/soundchanger "SoundChanger") --- # Player Detection | Lunar Client Developers Apollo Developers Lightweight Protobuf Player Detection Player Detection ================ Overview[](https://lunarclient.dev/apollo/developers/lightweight/protobuf/player-detection#overview) ----------------------------------------------------------------------------------------------------- This example demonstrates how to detect whether a player is using Lunar Client by listening for the `PlayerRegisterChannelEvent` on the `lunar:apollo` channel. Additionally, it showcases how to enable Apollo Modules using utility methods from [ProtobufPacketUtil](https://lunarclient.dev/apollo/developers/lightweight/protobuf/packet-util) Integration[](https://lunarclient.dev/apollo/developers/lightweight/protobuf/player-detection#integration) ----------------------------------------------------------------------------------------------------------- public class ApolloPlayerProtoListener implements Listener { private final Set playersRunningApollo = new HashSet<>(); public ApolloPlayerProtoListener(ApolloExamplePlugin plugin) { Bukkit.getServer().getMessenger().registerOutgoingPluginChannel(plugin, "lunar:apollo"); Bukkit.getServer().getMessenger().registerIncomingPluginChannel(plugin, "lunar:apollo", (s, player, bytes) -> { }); Bukkit.getPluginManager().registerEvents(this, plugin); } private boolean isPlayerRunningApollo(Player player) { return this.playersRunningApollo.contains(player.getUniqueId()); } @EventHandler private void onRegisterChannel(PlayerRegisterChannelEvent event) { if (!event.getChannel().equalsIgnoreCase("lunar:apollo")) { return; } Player player = event.getPlayer(); ProtobufPacketUtil.enableModules(player); // Sending the player's world name to the client is required for some modules ProtobufPacketUtil.sendPacket(player, this.createUpdatePlayerWorldMessage(player)); this.playersRunningApollo.add(player.getUniqueId()); player.sendMessage("You are using LunarClient!"); } @EventHandler private void onPlayerChangedWorld(PlayerChangedWorldEvent event) { Player player = event.getPlayer(); // Sending the player's world name to the client is required for some modules ProtobufPacketUtil.sendPacket(player, this.createUpdatePlayerWorldMessage(player)); } private UpdatePlayerWorldMessage createUpdatePlayerWorldMessage(Player player) { return UpdatePlayerWorldMessage.newBuilder() .setWorld(player.getWorld().getName()) .build(); } } [Getting Started](https://lunarclient.dev/apollo/developers/lightweight/protobuf/getting-started "Getting Started") [Serverbound Packets](https://lunarclient.dev/apollo/developers/lightweight/protobuf/serverbound-packets "Serverbound Packets") --- # WorldEdit CUI | Lunar Client Developers Apollo Developers Mods WorldeditCui WorldEdit CUI ============= A client-side user interface for the WorldEdit plugin allowing you to see your selected region in-game in real time. Integration[](https://lunarclient.dev/apollo/developers/mods/worldeditcui#integration) --------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/worldeditcui#how-to-toggle-the-mod) public void toggleWorldEditCUIExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModWorldeditCui.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/worldeditcui#available-options) --------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`POSITION_ONE_COLOR`** * Config Key: `position-one-color` * Values * Type: `String` * Default: `#FF0000FF` * **`POSITION_TWO_COLOR`** * Config Key: `position-two-color` * Values * Type: `String` * Default: `#FFFF0000` * **`OUTLINE_COLOR`** * Config Key: `outline-color` * Values * Type: `String` * Default: `#FF00FF00` [WeatherChanger](https://lunarclient.dev/apollo/developers/mods/weatherchanger "WeatherChanger") [Zoom](https://lunarclient.dev/apollo/developers/mods/zoom "Zoom") --- # Scoreboard | Lunar Client Developers Apollo Developers Mods Scoreboard Scoreboard ========== Allows you to hide, move, or customize the Minecraft scoreboard. Integration[](https://lunarclient.dev/apollo/developers/mods/scoreboard#integration) ------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/scoreboard#how-to-toggle-the-mod) public void toggleScoreboardExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModScoreboard.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/scoreboard#available-options) ------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` * **`SCALE`** * Config Key: `scale` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.5F` * Maximum: `1.5F` * **`NUMBERS`** * Config Key: `numbers` * Values * Type: `Boolean` * Default: `false` * **`HIDE_SCOREBOARD`** * Config Key: `hide-scoreboard` * Values * Type: `Boolean` * Default: `false` * **`TEXT_SHADOW`** * Config Key: `text-shadow` * Values * Type: `Boolean` * Default: `false` * **`BORDER_THICKNESS`** * Config Key: `border-thickness` * Values * Type: `Float` * Default: `0.5F` * Minimum: `0.5F` * Maximum: `3.0F` * **`BORDER`** * Config Key: `border` * Values * Type: `Boolean` * Default: `false` * **`BACKGROUND_COLOR`** * Config Key: `background-color` * Values * Type: `String` * Default: `#50000000` * **`BORDER_COLOR`** * Config Key: `border-color` * Values * Type: `String` * Default: `#9F000000` [Sba](https://lunarclient.dev/apollo/developers/mods/sba "Sba") [Screenshot](https://lunarclient.dev/apollo/developers/mods/screenshot "Screenshot") --- # Ping | Lunar Client Developers Apollo Developers Mods Ping Ping ==== Displays server latency on a nametag or HUD. Integration[](https://lunarclient.dev/apollo/developers/mods/ping#integration) ------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/ping#how-to-toggle-the-mod) public void togglePingExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModPing.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/ping#available-options) ------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`UPDATE_INTERVAL_SEC`** * Faster updates may impact performance * Config Key: `update-interval-sec` * Values * Type: `Integer` * Default: `15` * Minimum: `1` * Maximum: `30` * **`ENABLE_PING_NAMETAG`** * Config Key: `enable-ping-nametag` * Values * Type: `Boolean` * Default: `false` * **`PING_ABOVE`** * Config Key: `ping-above` * Values * Type: `Boolean` * Default: `true` * **`PING_SHOW_MS`** * Config Key: `ping-show-ms` * Values * Type: `Boolean` * Default: `true` * **`PING_PREFIX_COLOR`** * Config Key: `ping-prefix-color` * Values * Type: `String` * Default: `#55555555` * **`DYNAMIC_PING_COLOR`** * Config Key: `dynamic-ping-color` * Values * Type: `Boolean` * Default: `true` * **`PING_NUMBER_COLOR`** * Config Key: `ping-number-color` * Values * Type: `String` * Default: `#FFFFFF55` * **`LOW_PING_NUMBER_COLOR`** * Config Key: `low-ping-number-color` * Values * Type: `String` * Default: `#FF55FF55` * **`MEDIUM_PING_NUMBER_COLOR`** * Config Key: `medium-ping-number-color` * Values * Type: `String` * Default: `#FFFFFF55` * **`HIGH_PING_NUMBER_COLOR`** * Config Key: `high-ping-number-color` * Values * Type: `String` * Default: `#FFFF5555` * **`EXTREME_PING_NUMBER_COLOR`** * Config Key: `extreme-ping-number-color` * Values * Type: `String` * Default: `#FFAA0000` [ParticleChanger](https://lunarclient.dev/apollo/developers/mods/particlechanger "ParticleChanger") [Playtime](https://lunarclient.dev/apollo/developers/mods/playtime "Playtime") --- # Pack Display | Lunar Client Developers Apollo Developers Mods PackDisplay Pack Display ============ Shows the currently active Resource Pack on the HUD. Integration[](https://lunarclient.dev/apollo/developers/mods/packdisplay#integration) -------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/packdisplay#how-to-toggle-the-mod) public void togglePackDisplayExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModPackDisplay.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/packdisplay#available-options) -------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`SCALE`** * Config Key: `scale` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.5F` * Maximum: `1.5F` * **`TEXT_SHADOW`** * Config Key: `text-shadow` * Values * Type: `Boolean` * Default: `true` * **`BRACKETS`** * Config Key: `brackets` * Values * Type: `Boolean` * Default: `true` * **`BRACKET_COLOR`** * Config Key: `bracket-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`BACKGROUND`** * Config Key: `background` * Values * Type: `Boolean` * Default: `true` * **`STATIC_BACKGROUND_WIDTH`** * If this is disabled the background will change size with the text. * Config Key: `static-background-width` * Values * Type: `Boolean` * Default: `true` * **`STATIC_BACKGROUND_HEIGHT`** * If this is disabled the background will change size with the text. * Config Key: `static-background-height` * Values * Type: `Boolean` * Default: `true` * **`BACKGROUND_WIDTH`** * Config Key: `background-width` * Values * Type: `Integer` * Default: `100` * Minimum: `60` * Maximum: `300` * **`BACKGROUND_HEIGHT`** * Config Key: `background-height` * Values * Type: `Integer` * Default: `24` * Minimum: `12` * Maximum: `64` * **`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` * **`BACKGROUND_COLOR`** * Config Key: `background-color` * Values * Type: `String` * Default: `#6F000000` * **`TEXT_COLOR`** * Config Key: `text-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`PACK_ICON`** * Config Key: `pack-icon` * Values * Type: `Boolean` * Default: `true` * **`PACK_DESCRIPTION`** * Config Key: `pack-description` * Values * Type: `Boolean` * Default: `false` [OneSevenVisuals](https://lunarclient.dev/apollo/developers/mods/onesevenvisuals "OneSevenVisuals") [PackOrganizer](https://lunarclient.dev/apollo/developers/mods/packorganizer "PackOrganizer") --- # Serverbound Packets | Lunar Client Developers Apollo Developers Lightweight Protobuf Serverbound Packets Serverbound Packets =================== Overview[](https://lunarclient.dev/apollo/developers/lightweight/protobuf/serverbound-packets#overview) -------------------------------------------------------------------------------------------------------- Players using Lunar Client may send packets to the server for specific Apollo modules, such as the `PacketEnrichment Module` and/or when the player is joining the server. This example demonstrates how to handle packets sent from the client that are related to Apollo. Additionally, the `Transfer Module` expects a response packet from the client after the server sends a request. For an example of how to handle roundtrip packets, visit [Packet Roundtrip Example](https://lunarclient.dev/apollo/developers/lightweight/protobuf/roundtrip-packets) Integration[](https://lunarclient.dev/apollo/developers/lightweight/protobuf/serverbound-packets#integration) -------------------------------------------------------------------------------------------------------------- public class ApolloPacketReceiveProtoListener implements PluginMessageListener { public ApolloPacketReceiveProtoListener(ApolloExamplePlugin plugin) { Bukkit.getServer().getMessenger().registerIncomingPluginChannel(plugin, "lunar:apollo", this); } @Override public void onPluginMessageReceived(String s, Player player, byte[] bytes) { try { Any any = Any.parseFrom(bytes); if (any.is(PlayerHandshakeMessage.class)) { this.onPlayerHandshake(any.unpack(PlayerHandshakeMessage.class)); } // Packet Enrichment Module if (any.is(PlayerAttackMessage.class)) { this.onPlayerAttack(any.unpack(PlayerAttackMessage.class)); } else if (any.is(PlayerChatOpenMessage.class)) { this.onPlayerChatOpen(any.unpack(PlayerChatOpenMessage.class)); } else if (any.is(PlayerChatCloseMessage.class)) { this.onPlayerChatClose(any.unpack(PlayerChatCloseMessage.class)); } else if (any.is(PlayerUseItemMessage.class)) { this.onPlayerUseItem(any.unpack(PlayerUseItemMessage.class)); } } catch (InvalidProtocolBufferException e) { throw new RuntimeException(e); } } private void onPlayerHandshake(PlayerHandshakeMessage message) { MinecraftVersion minecraftVersion = message.getMinecraftVersion(); LunarClientVersion lunarClientVersion = message.getLunarClientVersion(); String gitBranch = lunarClientVersion.getGitBranch(); String gitCommit = lunarClientVersion.getGitCommit(); String semVer = lunarClientVersion.getSemver(); List installedMods = message.getInstalledModsList(); for (ModMessage mod : installedMods) { String modId = mod.getId(); String displayName = mod.getName(); String version = mod.getVersion(); ModMessage.Type type = mod.getType(); } } private void onPlayerAttack(PlayerAttackMessage message) { long instantiationTimeMs = ProtobufUtil.toJavaTimestamp(message.getPacketInfo().getInstantiationTime()); PlayerInfo targetInfo = message.getTargetInfo(); PlayerInfo attackerInfo = message.getAttackerInfo(); this.onPlayerInfo(targetInfo); this.onPlayerInfo(attackerInfo); } private void onPlayerChatOpen(PlayerChatOpenMessage message) { long instantiationTimeMs = ProtobufUtil.toJavaTimestamp(message.getPacketInfo().getInstantiationTime()); PlayerInfo playerInfo = message.getPlayerInfo(); this.onPlayerInfo(playerInfo); } private void onPlayerChatClose(PlayerChatCloseMessage message) { long instantiationTimeMs = ProtobufUtil.toJavaTimestamp(message.getPacketInfo().getInstantiationTime()); PlayerInfo playerInfo = message.getPlayerInfo(); this.onPlayerInfo(playerInfo); } private void onPlayerUseItem(PlayerUseItemMessage message) { long instantiationTimeMs = ProtobufUtil.toJavaTimestamp(message.getPacketInfo().getInstantiationTime()); PlayerInfo playerInfo = message.getPlayerInfo(); this.onPlayerInfo(playerInfo); boolean mainHand = message.getMainHand(); } private void onPlayerInfo(PlayerInfo info) { UUID uuid = ProtobufUtil.toJavaUuid(info.getPlayerUuid()); Location location = ProtobufUtil.toBukkitLocation(info.getLocation()); boolean sneaking = info.getSneaking(); boolean sprinting = info.getSprinting(); boolean jumping = info.getJumping(); float forwardSpeed = info.getForwardSpeed(); float strafeSpeed = info.getStrafeSpeed(); } } [Player Detection](https://lunarclient.dev/apollo/developers/lightweight/protobuf/player-detection "Player Detection") [Roundtrip Packets](https://lunarclient.dev/apollo/developers/lightweight/protobuf/roundtrip-packets "Roundtrip Packets") --- # Tab Editor | Lunar Client Developers Apollo Developers Mods Tab Tab Editor ========== Allows you to customize the in-game tab. Integration[](https://lunarclient.dev/apollo/developers/mods/tab#integration) ------------------------------------------------------------------------------ ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/tab#how-to-toggle-the-mod) public void toggleTabEditorExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModTab.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/tab#available-options) ------------------------------------------------------------------------------------------ * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` * **`TOGGLE_KEY_TAB`** * Quickly pressing and releasing the key will toggle tab * Config Key: `toggle-key-tab` * Values * Type: `Boolean` * Default: `false` * **`HEADER_COLOR`** * Config Key: `header-color` * Values * Type: `String` * Default: `#80000000` * **`FOOTER_COLOR`** * Config Key: `footer-color` * Values * Type: `String` * Default: `#80000000` * **`BACKGROUND_COLOR`** * Config Key: `background-color` * Values * Type: `String` * Default: `#80000000` * **`PING_ROW`** * Config Key: `ping-row` * Values * Type: `Boolean` * Default: `false` * **`ROWS_COLOR`** * Config Key: `rows-color` * Values * Type: `String` * Default: `#20000000` * **`DISABLE_HEADER`** * Config Key: `disable-header` * Values * Type: `Boolean` * Default: `false` * **`DISPLAY_PLAYER_HEAD`** * Config Key: `display-player-head` * Values * Type: `Boolean` * Default: `true` * **`DISABLE_FOOTER`** * Config Key: `disable-footer` * Values * Type: `Boolean` * Default: `false` * **`HIDE_NPC`** * Hide Hypixel NPC on tab * Config Key: `hide-n-p-c` * Values * Type: `Boolean` * Default: `false` * **`SHOW_LUNAR_ICONS_ON_RIGHT`** * Config Key: `show-lunar-icons-on-right` * Values * Type: `Boolean` * Default: `false` * **`HIGHLIGHT_OWN_NAME`** * Config Key: `highlight-own-name` * Values * Type: `Boolean` * Default: `false` * **`NAME_COLOR`** * Config Key: `name-color` * Values * Type: `String` * Default: `#FFFF0000` * **`NAME_SHADOW`** * Config Key: `name-shadow` * Values * Type: `Boolean` * Default: `true` * **`HIDE_PING`** * Config Key: `hide-ping` * Values * Type: `Boolean` * Default: `false` * **`HIDE_PING_IF_OVER_500`** * Config Key: `hide-ping-if-over500` * Values * Type: `Boolean` * Default: `true` * **`DISPLAY_PING_AS_NUMBER`** * Config Key: `display-ping-as-number` * Values * Type: `Boolean` * Default: `false` * **`PING_NUMBER_SHADOW`** * Config Key: `ping-number-shadow` * Values * Type: `Boolean` * Default: `false` * **`DYNAMIC_PING_COLOR`** * Config Key: `dynamic-ping-color` * Values * Type: `Boolean` * Default: `false` * **`LOW_PING_NUMBER_COLOR`** * Config Key: `low-ping-number-color` * Values * Type: `String` * Default: `#FF55FF55` * **`MEDIUM_PING_NUMBER_COLOR`** * Config Key: `medium-ping-number-color` * Values * Type: `String` * Default: `#FFFFFF55` * **`HIGH_PING_NUMBER_COLOR`** * Config Key: `high-ping-number-color` * Values * Type: `String` * Default: `#FFFF5555` * **`EXTREME_PING_NUMBER_COLOR`** * Config Key: `extreme-ping-number-color` * Values * Type: `String` * Default: `#FFAA0000` * **`PING_NUMBER_COLOR`** * Config Key: `ping-number-color` * Values * Type: `String` * Default: `#FFFFFF55` [Stopwatch](https://lunarclient.dev/apollo/developers/mods/stopwatch "Stopwatch") [TeamView](https://lunarclient.dev/apollo/developers/mods/teamview "TeamView") --- # Cuboids | Lunar Client Developers Apollo Developers Utilities Cuboids Cuboids ======= Overview[](https://lunarclient.dev/apollo/developers/utilities/cuboids#overview) --------------------------------------------------------------------------------- Apollo uses cuboids to define regions of 2D and 3D space. These are primarily used to define the region surrounded by a Border. `Cuboid2D` Builder[](https://lunarclient.dev/apollo/developers/utilities/cuboids#cuboid2d-builder) --------------------------------------------------------------------------------------------------- public class Cuboid2D { /** * Returns the cuboid {@link Double} start x. * * @return the cuboid start x * @since 1.0.0 */ double minX; /** * Returns the cuboid {@link Double} start z. * * @return the cuboid start z * @since 1.0.0 */ double minZ; /** * Returns the cuboid {@link Double} end x. * * @return the cuboid end x * @since 1.0.0 */ double maxX; /** * Returns the cuboid {@link Double} end z. * * @return the cuboid end z * @since 1.0.0 */ double maxZ; } ### Sample Code[](https://lunarclient.dev/apollo/developers/utilities/cuboids#sample-code) public static Cuboid2D createCuboid2DExample() { return Cuboid2D.builder() .minX(-50) .minZ(-50) .maxX(50) .maxZ(50) .build(); } `Cuboid3D` Builder[](https://lunarclient.dev/apollo/developers/utilities/cuboids#cuboid3d-builder) --------------------------------------------------------------------------------------------------- public class Cuboid3D { /** * Returns the cuboid {@link Double} start x. * * @return the cuboid start x * @since 1.0.0 */ double minX; /** * Returns the cuboid {@link Double} start y. * * @return the cuboid start y * @since 1.0.0 */ double minY; /** * Returns the cuboid {@link Double} start z. * * @return the cuboid start z * @since 1.0.0 */ double minZ; /** * Returns the cuboid {@link Double} end x. * * @return the cuboid end x * @since 1.0.0 */ double maxX; /** * Returns the cuboid {@link Double} end y. * * @return the cuboid end y * @since 1.0.0 */ double maxY; /** * Returns the cuboid {@link Double} end z. * * @return the cuboid end z * @since 1.0.0 */ double maxZ; } ### Sample Code[](https://lunarclient.dev/apollo/developers/utilities/cuboids#sample-code-1) public static Cuboid3D createCuboid3DExample() { return Cuboid3D.builder() .minX(-50) .minY(0) .minZ(-50) .maxX(50) .maxY(256) .maxZ(50) .build(); } [Colors](https://lunarclient.dev/apollo/developers/utilities/colors "Colors") [Icons](https://lunarclient.dev/apollo/developers/utilities/icons "Icons") --- # Server Address | Lunar Client Developers Apollo Developers Mods ServerAddress Server Address ============== Displays the server you are currently connected to on the HUD. Integration[](https://lunarclient.dev/apollo/developers/mods/serveraddress#integration) ---------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/serveraddress#how-to-toggle-the-mod) public void toggleServerAddressExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModServerAddress.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/serveraddress#available-options) ---------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`SCALE`** * Config Key: `scale` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.5F` * Maximum: `1.5F` * **`TEXT_SHADOW`** * Config Key: `text-shadow` * Values * Type: `Boolean` * Default: `true` * **`BRACKETS`** * Config Key: `brackets` * Values * Type: `Boolean` * Default: `true` * **`BRACKET_COLOR`** * Config Key: `bracket-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`BACKGROUND`** * Config Key: `background` * Values * Type: `Boolean` * Default: `true` * **`STATIC_BACKGROUND_WIDTH`** * If this is disabled the background will change size with the text. * Config Key: `static-background-width` * Values * Type: `Boolean` * Default: `true` * **`STATIC_BACKGROUND_HEIGHT`** * If this is disabled the background will change size with the text. * Config Key: `static-background-height` * Values * Type: `Boolean` * Default: `true` * **`BACKGROUND_WIDTH`** * Config Key: `background-width` * Values * Type: `Integer` * Default: `56` * Minimum: `40` * Maximum: `62` * **`BACKGROUND_HEIGHT`** * Config Key: `background-height` * Values * Type: `Integer` * Default: `18` * Minimum: `10` * Maximum: `22` * **`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` * **`BACKGROUND_COLOR`** * Config Key: `background-color` * Values * Type: `String` * Default: `#6F000000` * **`TEXT_COLOR`** * Config Key: `text-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`SERVER_ICON`** * Config Key: `server-icon` * Values * Type: `Boolean` * Default: `true` [ScrollableTooltips](https://lunarclient.dev/apollo/developers/mods/scrollabletooltips "ScrollableTooltips") [ShinyPots](https://lunarclient.dev/apollo/developers/mods/shinypots "ShinyPots") --- # Weather Changer | Lunar Client Developers Apollo Developers Mods WeatherChanger Weather Changer =============== Customize the current weather. Integration[](https://lunarclient.dev/apollo/developers/mods/weatherchanger#integration) ----------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/weatherchanger#how-to-toggle-the-mod) public void toggleWeatherChangerExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModWeatherChanger.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/weatherchanger#available-options) ----------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`RAIN_STRENGTH`** * Config Key: `rain-strength` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.0F` * Maximum: `1.0F` * **`RAIN_COLOR`** * Augment the rain/snow color * Config Key: `rain-color` * Values * Type: `String` * Default: `#FFFFFFFF` [Waypoints](https://lunarclient.dev/apollo/developers/mods/waypoints "Waypoints") [WorldeditCui](https://lunarclient.dev/apollo/developers/mods/worldeditcui "WorldeditCui") --- # Key Strokes | Lunar Client Developers Apollo Developers Mods Keystrokes Key Strokes =========== Displays when your movement, mouse or space bar is pressed. Integration[](https://lunarclient.dev/apollo/developers/mods/keystrokes#integration) ------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/keystrokes#how-to-toggle-the-mod) public void toggleKeyStrokesExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModKeystrokes.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/keystrokes#available-options) ------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`SCALE`** * Config Key: `scale` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.5F` * Maximum: `1.5F` * **`KEY_STROKES_CLICKS`** * Config Key: `key-strokes-clicks` * Values * Type: `Boolean` * Default: `true` * **`LEFT_CPS`** * Config Key: `left-c-p-s` * Values * Type: `Boolean` * Default: `false` * **`RIGHT_CPS`** * Config Key: `right-c-p-s` * Values * Type: `Boolean` * Default: `false` * **`KEY_STROKES_MOVEMENT`** * Config Key: `key-strokes-movement` * Values * Type: `Boolean` * Default: `true` * **`KEY_STROKES_SPACEBAR`** * Config Key: `key-strokes-spacebar` * Values * Type: `Boolean` * Default: `false` * **`USE_ARROWS`** * Config Key: `use-arrows` * Values * Type: `Boolean` * Default: `false` * **`TEXT_SHADOW`** * Config Key: `text-shadow` * Values * Type: `Boolean` * Default: `false` * **`BORDER`** * Config Key: `border` * Values * Type: `Boolean` * Default: `false` * **`INNER_BORDER`** * Config Key: `inner-border` * Values * Type: `Boolean` * Default: `false` * **`BORDER_THICKNESS`** * Config Key: `border-thickness` * Values * Type: `Float` * Default: `0.5F` * Minimum: `0.5F` * Maximum: `3.0F` * **`BOX_SIZE`** * Config Key: `box-size` * Values * Type: `Float` * Default: `18.0F` * Minimum: `10.0F` * Maximum: `32.0F` * **`BORDER_COLOR`** * Config Key: `border-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`TEXT_COLOR`** * Config Key: `text-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`TEXT_PRESSED_COLOR`** * Config Key: `text-pressed-color` * Values * Type: `String` * Default: `#FF000000` * **`BACKGROUND_COLOR`** * Config Key: `background-color` * Values * Type: `String` * Default: `#6F000000` * **`BACKGROUND_PRESSED_COLOR`** * Config Key: `background-pressed-color` * Values * Type: `String` * Default: `#6FFFFFFF` * **`KEY_FADE_DELAY`** * Config Key: `key-fade-delay` * Values * Type: `Long` * Default: `75L` * Minimum: `0L` * Maximum: `500L` [ItemTracker](https://lunarclient.dev/apollo/developers/mods/itemtracker "ItemTracker") [Lighting](https://lunarclient.dev/apollo/developers/mods/lighting "Lighting") --- # Reach Display | Lunar Client Developers Apollo Developers Mods ReachDisplay Reach Display ============= Display how far away you attacked another player from. Integration[](https://lunarclient.dev/apollo/developers/mods/reachdisplay#integration) --------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/reachdisplay#how-to-toggle-the-mod) public void toggleReachDisplayExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModReachDisplay.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/reachdisplay#available-options) --------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`SCALE`** * Config Key: `scale` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.5F` * Maximum: `1.5F` * **`TEXT_SHADOW`** * Config Key: `text-shadow` * Values * Type: `Boolean` * Default: `true` * **`BRACKETS`** * Config Key: `brackets` * Values * Type: `Boolean` * Default: `true` * **`BRACKET_COLOR`** * Config Key: `bracket-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`BACKGROUND`** * Config Key: `background` * Values * Type: `Boolean` * Default: `true` * **`STATIC_BACKGROUND_WIDTH`** * If this is disabled the background will change size with the text. * Config Key: `static-background-width` * Values * Type: `Boolean` * Default: `true` * **`STATIC_BACKGROUND_HEIGHT`** * If this is disabled the background will change size with the text. * Config Key: `static-background-height` * Values * Type: `Boolean` * Default: `true` * **`BACKGROUND_WIDTH`** * Config Key: `background-width` * Values * Type: `Integer` * Default: `65` * Minimum: `40` * Maximum: `72` * **`BACKGROUND_HEIGHT`** * Config Key: `background-height` * Values * Type: `Integer` * Default: `18` * Minimum: `10` * Maximum: `22` * **`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` * **`BACKGROUND_COLOR`** * Config Key: `background-color` * Values * Type: `String` * Default: `#6F000000` * **`TEXT_COLOR`** * Config Key: `text-color` * Values * Type: `String` * Default: `#FFFFFFFF` [Radio](https://lunarclient.dev/apollo/developers/mods/radio "Radio") [Replaymod](https://lunarclient.dev/apollo/developers/mods/replaymod "Replaymod") --- # Radio | Lunar Client Developers Apollo Developers Mods Radio Radio ===== Enjoy some of your favorite songs provided by Styngr. Integration[](https://lunarclient.dev/apollo/developers/mods/radio#integration) -------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/radio#how-to-toggle-the-mod) public void toggleRadioExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModRadio.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/radio#available-options) -------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` * **`SCALE`** * Config Key: `scale` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.5F` * Maximum: `1.5F` * **`VOLUME`** * Config Key: `volume` * Values * Type: `Integer` * Default: `50` * Minimum: `0` * Maximum: `100` * **`MUTE_RADIO`** * Config Key: `mute-radio` * Values * Type: `Boolean` * Default: `false` * **`BACKGROUND`** * Config Key: `background` * Values * Type: `Boolean` * Default: `true` * **`STATIC_BACKGROUND_WIDTH`** * If this is disabled the background will change size with the text. * Config Key: `static-background-width` * Values * Type: `Boolean` * Default: `true` * **`STATIC_BACKGROUND_HEIGHT`** * If this is disabled the background will change size with the text. * Config Key: `static-background-height` * Values * Type: `Boolean` * Default: `true` * **`BACKGROUND_WIDTH`** * Config Key: `background-width` * Values * Type: `Integer` * Default: `140` * Minimum: `60` * Maximum: `300` * **`BACKGROUND_HEIGHT`** * Config Key: `background-height` * Values * Type: `Integer` * Default: `24` * Minimum: `22` * Maximum: `64` * **`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` * **`BACKGROUND_COLOR`** * Config Key: `background-color` * Values * Type: `String` * Default: `#6F000000` * **`SHOW_COVER_ART`** * Config Key: `show-cover-art` * Values * Type: `Boolean` * Default: `true` * **`SHOW_PROGRESS`** * Config Key: `show-progress` * Values * Type: `Boolean` * Default: `true` * **`SONG_SCROLL_ANIMATION`** * Config Key: `song-scroll-animation` * Values * Type: `Boolean` * Default: `true` * **`SHOW_WHEN_NOTHING_PLAYING`** * Config Key: `show-when-nothing-playing` * Values * Type: `Boolean` * Default: `false` * **`BOLD_ARIST_NAME`** * Config Key: `bold-arist-name` * Values * Type: `Boolean` * Default: `false` * **`BOLD_SONG_NAME`** * Config Key: `bold-song-name` * Values * Type: `Boolean` * Default: `true` * **`SHOW_DURATION`** * Config Key: `show-duration` * Values * Type: `Boolean` * Default: `true` * **`SHOW_PLAY_BUTTON`** * Config Key: `show-play-button` * Values * Type: `Boolean` * Default: `true` * **`SONG_NAME_TEXT_COLOR`** * Config Key: `song-name-text-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`ARTIST_NAME_TEXT_COLOR`** * Config Key: `artist-name-text-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`RADIO_PROGRESS_BAR_COLOR`** * Config Key: `radio-progress-bar-color` * Values * Type: `String` * Default: `#FF4F94FC` [Quickplay](https://lunarclient.dev/apollo/developers/mods/quickplay "Quickplay") [ReachDisplay](https://lunarclient.dev/apollo/developers/mods/reachdisplay "ReachDisplay") --- # Playtime | Lunar Client Developers Apollo Developers Mods Playtime Playtime ======== Track how long you are playing on Lunar Client! Integration[](https://lunarclient.dev/apollo/developers/mods/playtime#integration) ----------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/playtime#how-to-toggle-the-mod) public void togglePlaytimeExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModPlaytime.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/playtime#available-options) ----------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`SCALE`** * Config Key: `scale` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.5F` * Maximum: `1.5F` * **`TEXT_SHADOW`** * Config Key: `text-shadow` * Values * Type: `Boolean` * Default: `true` * **`BRACKETS`** * Config Key: `brackets` * Values * Type: `Boolean` * Default: `true` * **`BRACKET_COLOR`** * Config Key: `bracket-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`BACKGROUND`** * Config Key: `background` * Values * Type: `Boolean` * Default: `true` * **`STATIC_BACKGROUND_WIDTH`** * If this is disabled the background will change size with the text. * Config Key: `static-background-width` * Values * Type: `Boolean` * Default: `true` * **`STATIC_BACKGROUND_HEIGHT`** * If this is disabled the background will change size with the text. * Config Key: `static-background-height` * Values * Type: `Boolean` * Default: `true` * **`BACKGROUND_WIDTH`** * Config Key: `background-width` * Values * Type: `Integer` * Default: `80` * Minimum: `60` * Maximum: `120` * **`BACKGROUND_HEIGHT`** * Config Key: `background-height` * Values * Type: `Integer` * Default: `18` * Minimum: `10` * Maximum: `22` * **`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` * **`BACKGROUND_COLOR`** * Config Key: `background-color` * Values * Type: `String` * Default: `#6F000000` * **`TEXT_COLOR`** * Config Key: `text-color` * Values * Type: `String` * Default: `#FFFFFFFF` [Ping](https://lunarclient.dev/apollo/developers/mods/ping "Ping") [PotionEffects](https://lunarclient.dev/apollo/developers/mods/potioneffects "PotionEffects") --- # Titles | Lunar Client Developers Apollo Developers Mods Titles Titles ====== Adjust the minecraft title and subtitle scale and location. Integration[](https://lunarclient.dev/apollo/developers/mods/titles#integration) --------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/titles#how-to-toggle-the-mod) public void toggleTitlesExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModTitles.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/titles#available-options) --------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` * **`SCALE`** * Config Key: `scale` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.5F` * Maximum: `1.5F` * **`SHOW_IN_HUD_EDITOR`** * Config Key: `show-in-hud-editor` * Values * Type: `Boolean` * Default: `false` * **`TITLE_COLOR`** * Config Key: `title-color` * Values * Type: `String` * Default: `#FFFF5555` * **`SUBTITLE_COLOR`** * Config Key: `subtitle-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`USE_MINECRAFT_GUISCALE`** * Config Key: `use-minecraft-g-u-i-scale` * Values * Type: `Boolean` * Default: `true` * **`KEEP_TITLE_CENTERED`** * Keep the title centered around the center of the mod on-screen * Config Key: `keep-title-centered` * Values * Type: `Boolean` * Default: `true` * **`SHOW_TITLE`** * Show title of height limit display * Config Key: `show-title` * Values * Type: `Boolean` * Default: `true` * **`SHOW_SUBTITLE`** * Config Key: `show-subtitle` * Values * Type: `Boolean` * Default: `true` [TimeChanger](https://lunarclient.dev/apollo/developers/mods/timechanger "TimeChanger") [TntCountdown](https://lunarclient.dev/apollo/developers/mods/tntcountdown "TntCountdown") --- # Stopwatch | Lunar Client Developers Apollo Developers Mods Stopwatch Stopwatch ========= Adds a stopwatch to the HUD. Integration[](https://lunarclient.dev/apollo/developers/mods/stopwatch#integration) ------------------------------------------------------------------------------------ ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/stopwatch#how-to-toggle-the-mod) public void toggleStopwatchExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModStopwatch.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/stopwatch#available-options) ------------------------------------------------------------------------------------------------ * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`SCALE`** * Config Key: `scale` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.5F` * Maximum: `1.5F` * **`TEXT_SHADOW`** * Config Key: `text-shadow` * Values * Type: `Boolean` * Default: `true` * **`BRACKETS`** * Config Key: `brackets` * Values * Type: `Boolean` * Default: `true` * **`BRACKET_COLOR`** * Config Key: `bracket-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`BACKGROUND`** * Config Key: `background` * Values * Type: `Boolean` * Default: `true` * **`STATIC_BACKGROUND_WIDTH`** * If this is disabled the background will change size with the text. * Config Key: `static-background-width` * Values * Type: `Boolean` * Default: `true` * **`STATIC_BACKGROUND_HEIGHT`** * If this is disabled the background will change size with the text. * Config Key: `static-background-height` * Values * Type: `Boolean` * Default: `true` * **`BACKGROUND_WIDTH`** * Config Key: `background-width` * Values * Type: `Integer` * Default: `56` * Minimum: `44` * Maximum: `120` * **`BACKGROUND_HEIGHT`** * Config Key: `background-height` * Values * Type: `Integer` * Default: `18` * Minimum: `10` * Maximum: `22` * **`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` * **`BACKGROUND_COLOR`** * Config Key: `background-color` * Values * Type: `String` * Default: `#6F000000` * **`TEXT_COLOR`** * Config Key: `text-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`RESET_EVERY_START`** * Config Key: `reset-every-start` * Values * Type: `Boolean` * Default: `true` [SoundChanger](https://lunarclient.dev/apollo/developers/mods/soundchanger "SoundChanger") [Tab](https://lunarclient.dev/apollo/developers/mods/tab "Tab") --- # FAQs | Lunar Client Developers Apollo Server Owners FAQ FAQs ==== What is the difference between the legacy Lunar Client API and Apollo API? The legacy API was hastily created specifically for features Lunar Network needed. Whereas, Apollo was created with the intention to add more general functionality for all types of servers and gamemodes. Can I continue to use the legacy Lunar Client API? Yes, as of now you're able to keep using the legacy Lunar Client API. However, we no longer recommend the legacy API, and you won't be able to use the newest features added to Apollo. We will eventually discontinue support for the legacy API, so it's highly recommended updating to use Apollo. Why should I use Apollo? What benefits does Apollo have for my server? Apollo offers you the chance to implement features that aren't possible in your current version of Minecraft and provide quality of life features to your players. In addition, we have plans to add multiple server-sided improvements such as chuck caching, client-side rendering, and much more. What Minecraft Versions does Apollo support? Apollo is currently set up to work with all versions that Lunar Client supports, with a single installation. Where can I download a compiled version of Apollo? You can download a compiled version of Apollo and the official Apollo implementation plugin on the [downloads page (opens in a new tab)](https://www.lunarclient.dev/apollo/downloads) . Can I use Apollo without any programming knowledge? Yes! You can [download (opens in a new tab)](https://www.lunarclient.dev/apollo/downloads) the Apollo implementation plugin, and drop it into your plugins' folder. The Apollo implementation plugin has a prebuilt configuration file, which can be edited very easily. Can I use Apollo for free? Yes! Lunar Client has no intentions of ever charging for usage of Apollo. How can I get my server name to appear on the Lunar Client friend menu, launcher and other places? As of now, you can submit your server to the [Lunar Client ServerMappings (opens in a new tab)](https://github.com/LunarClient/ServerMappings) repository on GitHub, where you'll need to provide information and branding around your server. [Commands](https://lunarclient.dev/apollo/server-owners/commands "Commands") [License](https://lunarclient.dev/apollo/license "License") --- # Hypixel Skyblock | Lunar Client Developers Apollo Developers Mods Skyblock Hypixel Skyblock ================ Various features to help in Hypixel Skyblock. Integration[](https://lunarclient.dev/apollo/developers/mods/skyblock#integration) ----------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/skyblock#how-to-toggle-the-mod) public void toggleHypixelSkyblockExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModSkyblock.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/skyblock#available-options) ----------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`SKYBLOCK_ALERT_SCALE`** * Config Key: `skyblock-alert-scale` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.2F` * Maximum: `2.5F` * **`SKYBLOCK_HIDE_HUNGER`** * Config Key: `skyblock-hide-hunger` * Values * Type: `Boolean` * Default: `true` * **`SKYBLOCK_HIDE_ARMOR`** * Config Key: `skyblock-hide-armor` * Values * Type: `Boolean` * Default: `true` * **`SKYBLOCK_HIDE_HEARTS`** * Config Key: `skyblock-hide-hearts` * Values * Type: `Boolean` * Default: `false` * **`SKYBLOCK_HIDE_ABSORB`** * Config Key: `skyblock-hide-absorb` * Values * Type: `Boolean` * Default: `false` * **`HIDE_MIDAS_STAFF`** * Config Key: `hide-midas-staff` * Values * Type: `Boolean` * Default: `false` * **`HIDE_FALLING_BLOCKS`** * Config Key: `hide-falling-blocks` * Values * Type: `Boolean` * Default: `false` * **`AUTO_COPY_RARE_DROPS`** * Automatically copies rare drops and pet drops to the clipboard. * Config Key: `auto-copy-rare-drops` * Values * Type: `Boolean` * Default: `false` * **`ONLY_MOVERS_ON_SKYBLOCK`** * Hides the hud previews in the edit hud layout menu if you're not currently on SkyBlock. * Config Key: `only-movers-on-skyblock` * Values * Type: `Boolean` * Default: `false` * **`GRIFFIN_BURROW_ESTIMATES`** * Provides QOL for the Diana mayor that helps the user quickly locate burrows. * Config Key: `griffin-burrow-estimates` * Values * Type: `Boolean` * Default: `false` * **`SKY_BLOCK_CREATION_DATE`** * Shows the creation date of the item in the lore. * Config Key: `sky-block-creation-date` * Values * Type: `Boolean` * Default: `false` * **`SKY_BLOCK_ITEM_ID`** * Shows the item's SkyBlock ID in the lore. * Config Key: `sky-block-item-id` * Values * Type: `Boolean` * Default: `false` * **`HIGHLIGHT_END_NODES`** * Config Key: `highlight-end-nodes` * Values * Type: `Boolean` * Default: `false` * **`HIGHLIGHT_GLOWING_MUSHROOMS`** * Config Key: `highlight-glowing-mushrooms` * Values * Type: `Boolean` * Default: `false` * **`SHOW_GIANT_HPAT_FEET`** * Makes Giant HP more visible by showing their HP at their feet. * Config Key: `show-giant-h-p-at-feet` * Values * Type: `Boolean` * Default: `false` * **`DUNGEON_SECRETS_COLLECTED`** * Config Key: `dungeon-secrets-collected` * Values * Type: `Boolean` * Default: `false` * **`TALLER_CROPS`** * Changes crop hitboxes with their 1.12+ variant. Only enabled on Hypixel or singleplayer. * Config Key: `taller-crops` * Values * Type: `Boolean` * Default: `false` * **`SKY_BLOCK_WISHING_COMPASS`** * Config Key: `sky-block-wishing-compass` * Values * Type: `Boolean` * Default: `false` * **`SKY_BLOCK_METAL_DETECTOR`** * Config Key: `sky-block-metal-detector` * Values * Type: `Boolean` * Default: `false` * **`SKY_BLOCK_FINISHED_COMMISSIONS`** * Config Key: `sky-block-finished-commissions` * Values * Type: `Boolean` * Default: `false` * **`FIX_LAVA_BOBBER`** * Fixes your fishing bobber sinking in lava. * Config Key: `fix-lava-bobber` * Values * Type: `Boolean` * Default: `false` * **`REPLACE_LAVA_WITH_WATER_CRIMSON`** * Changes the texture of lava to water in the Crimson Isles and Kuudra. * Config Key: `replace-lava-with-water-crimson` * Values * Type: `Boolean` * Default: `false` * **`REPLACE_LAVA_WITH_WATER_EVERYWHERE`** * Changes the texture of lava to water everywhere in SkyBlock. * Config Key: `replace-lava-with-water-everywhere` * Values * Type: `Boolean` * Default: `false` * **`SLAYER_BOSS_TIMER`** * Provides a chat message on boss kill that tells you how long it took to kill! * Config Key: `slayer-boss-timer` * Values * Type: `Boolean` * Default: `false` * **`SLAYER_MINI_BOSS_ALERT`** * Config Key: `slayer-mini-boss-alert` * Values * Type: `Boolean` * Default: `false` * **`INACTIVE_EFFIGY_WAYPOINTS`** * Used in Stillgore of the Rift, this feature tells you where to go to refresh the duration of inactive Effigies. * Config Key: `inactive-effigy-waypoints` * Values * Type: `Boolean` * Default: `false` * **`VAMPIRE_STEAK_DISPLAY`** * Highlights a boss when it can be 1 tapped using steak stake. * Config Key: `vampire-steak-display` * Values * Type: `Boolean` * Default: `false` * **`VAMPIRE_ICHOR_DISPLAY`** * Highlights blood ichors present during T5 Bloodfiends * Config Key: `vampire-ichor-display` * Values * Type: `Boolean` * Default: `false` * **`GRAVITY_WELL_WAYPOINTS`** * Shows the positions where you can trap the gray blazes. * Config Key: `gravity-well-waypoints` * Values * Type: `Boolean` * Default: `false` * **`SHOW_KUUDRA_HEALTH`** * Config Key: `show-kuudra-health` * Values * Type: `Boolean` * Default: `false` * **`SKYBLOCK_LINE_THICKNESS`** * Provides a general line thickness option that applies to most features with box/line rendering. * Config Key: `skyblock-line-thickness` * Values * Type: `Float` * Default: `4.0F` * Minimum: `1.0F` * Maximum: `10.0F` [ShulkerPreview](https://lunarclient.dev/apollo/developers/mods/shulkerpreview "ShulkerPreview") [Snaplook](https://lunarclient.dev/apollo/developers/mods/snaplook "Snaplook") --- # Configuration | Lunar Client Developers Apollo Server Owners Config Configuration ============= The Apollo configurations are split into two parts: * General and module specific settings for Apollo are located in the `config.yml`. * Settings for Lunar Client mod options are located in the `mods.yml`. The settings for the `config.yml` are generated with examples and comments, which you can modify to your liking. The `mods.yml` is not generated with its settings or comments, which will require you to refer to each mods documentation ([example](https://lunarclient.dev/apollo/developers/mods/2ditems) ) for the keys and value(s) you can set. The settings in the `mods.yml` will override the mod options for players on Lunar Client while they are on your server and revert them back after they leave. Mod Configuration Example[](https://lunarclient.dev/apollo/server-owners/config#mod-configuration-example) ----------------------------------------------------------------------------------------------------------- ⚠️ The following example is not a complete list of mod settings or guaranteed to be up-to-date. You should refer to the mods documentation ([example](https://lunarclient.dev/apollo/developers/mods/2ditems) ) for the latest mod settings. mod_setting: # Set to 'true' to enable these mod overrides, otherwise set 'false'. enable: true zoom: # Set 'true' to enable the mod, otherwise set 'false'. enabled: true # Quickly pressing and releasing the key will toggle zoom. toggle-key-zoom: false # When zoomed in the camera movement will move smoothly (cinematic camera). smooth-camera: true # Add a transition when zooming in and out. smooth-zoom: true # Adjust the zoom depth using Mouse Scroll Wheel. variable-zoom: false # Change the initial zoom depth. zoom-divisor: 4 chat: # Set 'true' to enable the mod, otherwise set 'false'. enabled: true # Choose whether or not you want to increase the message history in chat. unlimited-chat: true # Choose whether or not you want to stack multiple of the same messages in chat. stack-messages: false # Moves the chat up 12 pixels so it doesn't block health bar. chat-height: false # Set the opacity of the chat background. chat-background-opacity: 1.0 # Show text shadow on chat lines. chat-shadow: true # Set whether the chat should be disabled. disable-chat: false nametag: # Set 'true' to enable the mod, otherwise set 'false'. enabled: true # Set whether the nametag should have a shadow. nametag-shadow: false # An option to see your own nametag in third person. nametag: true # An option to toggle LC logos in nametags. nametag-logo: true # Determines if we should send the message when nametags are toggled. toggle-nametags: true # Set the opacity of the nametag background. nametag-background-opacity: 1.0 bossbar: # Set 'true' to enable the mod, otherwise set 'false'. enabled: true # Sets the scale of the boss bar. scale: 1.0 # Sets whether to render the boss bar. render-bar: true # Sets whether to use the custom boss bar. custom-boss-bar: true # Set the boss bar color. bar-color: '#F249F2' freelook: # Set 'true' to enable the mod, otherwise set 'false'. enabled: false # Set whether to invert the pitch when using freelook. invert-pitch: false # Set whether to invert the yaw when using freelook. invert-yaw: false # Quickly pressing and releasing the key will toggle freelook. toggle-key-freelook: false # When zoomed in the camera movement will move smoothly (cinematic camera). smooth-camera: true lighting: # Set 'true' to enable the mod, otherwise set 'false'. enabled: true # Set whether or not to use full-bright. full-bright: true # Set the brightness boost. brightness-boost: 1.0 damage-tint: # Set 'true' to enable the mod, otherwise set 'false'. enabled: false # Set the color of the tint. vignette-color: '#000000' # Set the intensity of the tint. vignette-intensity: 1.0 # Show the tint when you have less than this amount of health as a percentage. show-vignette-below: 100 # Plays a heartbeat, becoming faster the lower your health. heartbeat-audio: false [Adventure Util](https://lunarclient.dev/apollo/developers/lightweight/json/adventure-util "Adventure Util") [Commands](https://lunarclient.dev/apollo/server-owners/commands "Commands") --- # Player Detection | Lunar Client Developers Apollo Developers Lightweight JSON Player Detection Player Detection ================ Overview[](https://lunarclient.dev/apollo/developers/lightweight/json/player-detection#overview) ------------------------------------------------------------------------------------------------- This example demonstrates how to detect whether a player is using Lunar Client by listening for the `PlayerRegisterChannelEvent` on the `lunar:apollo` channel. Additionally, it showcases how to enable Apollo Modules using utility methods from [JsonPacketUtil](https://lunarclient.dev/apollo/developers/lightweight/json/packet-util) Note that this method uses a different plugin channel for sending packets, which is `apollo:json`, while still using the `lunar:apollo` for player detection. Integration[](https://lunarclient.dev/apollo/developers/lightweight/json/player-detection#integration) ------------------------------------------------------------------------------------------------------- public class ApolloPlayerJsonListener implements Listener { private final Set playersRunningApollo = new HashSet<>(); public ApolloPlayerJsonListener(ApolloExamplePlugin plugin) { Messenger messenger = Bukkit.getServer().getMessenger(); messenger.registerIncomingPluginChannel(plugin, "lunar:apollo", (s, player, bytes) -> { }); messenger.registerIncomingPluginChannel(plugin, "apollo:json", (s, player, bytes) -> { }); messenger.registerOutgoingPluginChannel(plugin, "apollo:json"); Bukkit.getPluginManager().registerEvents(this, plugin); } private boolean isPlayerRunningApollo(Player player) { return this.playersRunningApollo.contains(player.getUniqueId()); } @EventHandler private void onRegisterChannel(PlayerRegisterChannelEvent event) { if (!event.getChannel().equalsIgnoreCase("lunar:apollo")) { return; } Player player = event.getPlayer(); JsonPacketUtil.enableModules(player); // Sending the player's world name to the client is required for some modules JsonPacketUtil.sendPacket(player, this.createUpdatePlayerWorldMessage(player)); this.playersRunningApollo.add(player.getUniqueId()); player.sendMessage("You are using LunarClient!"); } @EventHandler private void onPlayerChangedWorld(PlayerChangedWorldEvent event) { Player player = event.getPlayer(); // Sending the player's world name to the client is required for some modules JsonPacketUtil.sendPacket(player, this.createUpdatePlayerWorldMessage(player)); } private JsonObject createUpdatePlayerWorldMessage(Player player) { JsonObject message = new JsonObject(); message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.player.v1.UpdatePlayerWorldMessage"); message.addProperty("world", player.getWorld().getName()); return message; } } [Getting Started](https://lunarclient.dev/apollo/developers/lightweight/json/getting-started "Getting Started") [Packet Util](https://lunarclient.dev/apollo/developers/lightweight/json/packet-util "Packet Util") --- # ReplayMod | Lunar Client Developers Apollo Developers Mods Replaymod ReplayMod ========= Record your game sessions and replay them from any perspective. Integration[](https://lunarclient.dev/apollo/developers/mods/replaymod#integration) ------------------------------------------------------------------------------------ ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/replaymod#how-to-toggle-the-mod) public void toggleReplayModExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModReplaymod.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/replaymod#available-options) ------------------------------------------------------------------------------------------------ * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`INDICATOR`** * Config Key: `indicator` * Values * Type: `Boolean` * Default: `true` * **`AUTO_POST_PROCESS`** * Config Key: `auto-post-process` * Values * Type: `Boolean` * Default: `true` * **`SHOW_SERVER_IP`** * Config Key: `show-server-ip` * Values * Type: `Boolean` * Default: `true` * **`AUTO_SYNC`** * Config Key: `auto-sync` * Values * Type: `Boolean` * Default: `true` * **`TIMELINE_LENGTH`** * Config Key: `timeline-length` * Values * Type: `Integer` * Default: `1800` * Minimum: `1500` * Maximum: `2100` * **`ASK_FOR_OPEN_EYE`** * Config Key: `ask-for-open-eye` * Values * Type: `Boolean` * Default: `false` * **`SKIP_POST_RENDER_GUI`** * Config Key: `skip-post-render-gui` * Values * Type: `Boolean` * Default: `false` * **`SKIP_POST_SCREENSHOT_GUI`** * Config Key: `skip-post-screenshot-gui` * Values * Type: `Boolean` * Default: `false` * **`PATH_PREVIEW`** * Config Key: `path-preview` * Values * Type: `Boolean` * Default: `true` * **`LUNAR_UI`** * Config Key: `lunar-u-i` * Values * Type: `Boolean` * Default: `true` * **`NOTIFICATIONS`** * Config Key: `notifications` * Values * Type: `Boolean` * Default: `true` * **`RECORD_SINGLEPLAYER`** * Config Key: `record-singleplayer` * Values * Type: `Boolean` * Default: `true` * **`RECORD_SERVER`** * Config Key: `record-server` * Values * Type: `Boolean` * Default: `true` * **`AUTO_START_RECORDING`** * Config Key: `auto-start-recording` * Values * Type: `Boolean` * Default: `false` * **`RENAME_DIALOG`** * Config Key: `rename-dialog` * Values * Type: `Boolean` * Default: `true` * **`SHOW_CHAT`** * Config Key: `show-chat` * Values * Type: `Boolean` * Default: `true` [ReachDisplay](https://lunarclient.dev/apollo/developers/mods/reachdisplay "ReachDisplay") [Saturation](https://lunarclient.dev/apollo/developers/mods/saturation "Saturation") --- # Platform Utilities | Lunar Client Developers Apollo Developers Platform Utilities Platform Utilities ================== Platform utility classes provide helpful platform specific methods to improve your experience when creating an Apollo integration. The following utility classes are available for each respective platform: `BukkitApollo`, `FoliaApollo`, `BungeeApollo`, `VelocityApollo` 🚫 You must ensure these methods are only used on the platform they're intended for, otherwise you will encounter errors from missing platform specific dependencies. `runForPlayer` Method[](https://lunarclient.dev/apollo/developers/platform-utilities#runforplayer-method) ---------------------------------------------------------------------------------------------------------- The `runForPlayer` method is a shorthand for converting a player instance from the platform to an `ApolloPlayer` to run an operation in a `Consumer`. public void runPlayerExample(Player player) { BukkitApollo.runForPlayer(player, apolloPlayer -> { /* Operation goes here! */ }); } `getRecipientsFrom` Method[](https://lunarclient.dev/apollo/developers/platform-utilities#getrecipientsfrom-method) -------------------------------------------------------------------------------------------------------------------- The `getRecipientsFrom` method is a shorthand for converting a collection of player instances from the platform to a collection of `Recipients`. public void runRecipientsExample(Collection players, UUID burningPlayer) { Recipients recipients = BukkitApollo.getRecipientsFrom(players); this.coloredFireModule.overrideColoredFire(recipients, burningPlayer, Color.BLUE ); } `toApolloLocation` Method[](https://lunarclient.dev/apollo/developers/platform-utilities#toapollolocation-method) ------------------------------------------------------------------------------------------------------------------ The `toApolloLocation` method is a way of converting a `Location` to an `ApolloLocation`. public void runLocationExample(Location location) { ApolloLocation apolloLocation = BukkitApollo.toApolloLocation(location); this.hologramModule.displayHologram(Recipients.ofEveryone(), Hologram.builder() .id("welcome-hologram") .location(apolloLocation) .lines(Lists.newArrayList( Component.text() .content("Welcome to my server!") .color(NamedTextColor.RED) .decorate(TextDecoration.BOLD, TextDecoration.UNDERLINED) .build(), Component.text() .content("Type /help to get started!") .build() )) .showThroughWalls(true) .showShadow(false) .showBackground(true) .build() ); } `toApolloBlockLocation` Method[](https://lunarclient.dev/apollo/developers/platform-utilities#toapolloblocklocation-method) ---------------------------------------------------------------------------------------------------------------------------- The `toApolloBlockLocation` method is a way of converting a platform specific `Location` to an `ApolloBlockLocation`. public void runBlockLocationExample(ApolloPlayer apolloPlayer, Location location) { ApolloBlockLocation apolloLocation = BukkitApollo.toApolloBlockLocation(location); this.waypointModule.displayWaypoint(apolloPlayer, Waypoint.builder() .name("KoTH") .location(apolloLocation) .color(Color.ORANGE) .preventRemoval(false) // If the player can delete the waypoint .hidden(false) .build() ); } `toApolloEntity` Method[](https://lunarclient.dev/apollo/developers/platform-utilities#toapolloentity-method) -------------------------------------------------------------------------------------------------------------- The `toApolloEntity` method is a way of converting a Bukkit `Entity` to an `ApolloEntity`. public void runEntityExample(Player player, ApolloPlayer apolloPlayer) { List sheepEntities = player.getWorld().getEntitiesByClass(Sheep.class) .stream().map(BukkitApollo::toApolloEntity) .collect(Collectors.toList()); this.entityModule.overrideRainbowSheep(apolloPlayer, sheepEntities); } `toBukkitLocation` Method[](https://lunarclient.dev/apollo/developers/platform-utilities#tobukkitlocation-method) ------------------------------------------------------------------------------------------------------------------ The `toBukkitLocation` method is a way of converting an `ApolloLocation`, `ApolloBlockLocation` or `ApolloPlayerLocation` back to a platform specific `Location`. [Locations](https://lunarclient.dev/apollo/developers/utilities/locations "Locations") [Adventure](https://lunarclient.dev/apollo/developers/adventure "Adventure") --- # Colors | Lunar Client Developers Apollo Developers Utilities Colors Colors ====== Overview[](https://lunarclient.dev/apollo/developers/utilities/colors#overview) -------------------------------------------------------------------------------- Apollo exclusively uses `java.awt.Color` for all configurable colors. This page provides an outline of the most common ways to work with colors when using Apollo. `ApolloColors` Predefined[](https://lunarclient.dev/apollo/developers/utilities/colors#apollocolors-predefined) ---------------------------------------------------------------------------------------------------------------- The `ApolloColors` class statically exposes colors that correspond to Bukkit/Spigot's `ChatColor` enum. ### Available Colors[](https://lunarclient.dev/apollo/developers/utilities/colors#available-colors) * `BLACK` * `DARK_BLUE` * `DARK_GREEN` * `DARK_AQUA` * `DARK_RED` * `DARK_PURPLE` * `GOLD` * `GRAY` * `DARK_GRAY` * `BLUE` * `GREEN` * `AQUA` * `RED` * `LIGHT_PURPLE` * `YELLOW` * `WHITE` ### Sample Code[](https://lunarclient.dev/apollo/developers/utilities/colors#sample-code) Border yellowBorder = Border.builder().color(ApolloColors.YELLOW).build(); Beam purpleBeam = Beam.builder().color(ApolloColors.LIGHT_PURPLE).build(); `java.awt.Color` Predefined[](https://lunarclient.dev/apollo/developers/utilities/colors#javaawtcolor-predefined) ------------------------------------------------------------------------------------------------------------------ The `java.awt.Color` class statically exposes some colors, although they do not correspond to any existing colors used in Minecraft. ### Available Colors[](https://lunarclient.dev/apollo/developers/utilities/colors#available-colors-1) Please see the [java.awt.Color Javadocs (opens in a new tab)](https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html) for a comprehensive list. ### Sample Code[](https://lunarclient.dev/apollo/developers/utilities/colors#sample-code-1) Beam magentaBeam = Beam.builder().color(Color.MAGENTA).build(); Custom Colors[](https://lunarclient.dev/apollo/developers/utilities/colors#custom-colors) ------------------------------------------------------------------------------------------ Custom colors can be created from any RGB values using `new Color(int red, int green, int blue)`, or from any hex color using `Color.decode(String hex)` ### Sample Code[](https://lunarclient.dev/apollo/developers/utilities/colors#sample-code-2) Border customBorder = Border.builder().color(new Color(25, 43, 48)).build(); Beam customBeam = Beam.builder().color(Color.decode("#FF00FF")).build(); [Zoom](https://lunarclient.dev/apollo/developers/mods/zoom "Zoom") [Cuboids](https://lunarclient.dev/apollo/developers/utilities/cuboids "Cuboids") --- # Potion Effects | Lunar Client Developers Apollo Developers Mods PotionEffects Potion Effects ============== Display your currently active potion effects on the HUD. Integration[](https://lunarclient.dev/apollo/developers/mods/potioneffects#integration) ---------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/potioneffects#how-to-toggle-the-mod) public void togglePotionEffectsExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModPotionEffects.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/potioneffects#available-options) ---------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` * **`SCALE`** * Config Key: `scale` * Values * Type: `Float` * Default: `1.0F` * Minimum: `0.5F` * Maximum: `1.5F` * **`SHOW_IN_INVENTORY`** * Config Key: `show-in-inventory` * Values * Type: `Boolean` * Default: `true` * **`SHOW_WHILE_TYPING`** * Config Key: `show-while-typing` * Values * Type: `Boolean` * Default: `true` * **`EFFECT_NAME`** * Config Key: `effect-name` * Values * Type: `Boolean` * Default: `true` * **`TEXT_SHADOW`** * Config Key: `text-shadow` * Values * Type: `Boolean` * Default: `true` * **`HIDE_MODERN_ICONS`** * Config Key: `hide-modern-icons` * Values * Type: `Boolean` * Default: `true` * **`POTION_BLINK`** * Config Key: `potion-blink` * Values * Type: `Boolean` * Default: `true` * **`BLINK_DURATION`** * Config Key: `blink-duration` * Values * Type: `Integer` * Default: `10` * Minimum: `2` * Maximum: `20` * **`COLOR_NAME_BASED_ON_EFFECT`** * Config Key: `color-name-based-on-effect` * Values * Type: `Boolean` * Default: `false` * **`TEXT_COLOR`** * Config Key: `text-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`DURATION_COLOR`** * Config Key: `duration-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`EXCLUDE_PERM`** * Config Key: `exclude-perm` * Values * Type: `Boolean` * Default: `false` * **`EXCLUDE_ABSORPTION`** * Config Key: `exclude-absorption` * Values * Type: `Boolean` * Default: `false` * **`EXCLUDE_BLINDNESS`** * Config Key: `exclude-blindness` * Values * Type: `Boolean` * Default: `false` * **`EXCLUDE_FIRE_RES`** * Config Key: `exclude-fire-res` * Values * Type: `Boolean` * Default: `false` * **`EXCLUDE_HASTE`** * Config Key: `exclude-haste` * Values * Type: `Boolean` * Default: `false` * **`EXCLUDE_HEALTH_BOOST`** * Config Key: `exclude-health-boost` * Values * Type: `Boolean` * Default: `false` * **`EXCLUDE_HUNGER`** * Config Key: `exclude-hunger` * Values * Type: `Boolean` * Default: `false` * **`EXCLUDE_INSTANT_DAMAGE`** * Config Key: `exclude-instant-damage` * Values * Type: `Boolean` * Default: `false` * **`EXCLUDE_INSTANT_HEALTH`** * Config Key: `exclude-instant-health` * Values * Type: `Boolean` * Default: `false` * **`EXCLUDE_INVIS`** * Config Key: `exclude-invis` * Values * Type: `Boolean` * Default: `false` * **`EXCLUDE_JUMP_BOOST`** * Config Key: `exclude-jump-boost` * Values * Type: `Boolean` * Default: `false` * **`EXCLUDE_MINING_FATIGUE`** * Config Key: `exclude-mining-fatigue` * Values * Type: `Boolean` * Default: `false` * **`EXCLUDE_NAUSEA`** * Config Key: `exclude-nausea` * Values * Type: `Boolean` * Default: `false` * **`EXCLUDE_NIGHT_VISION`** * Config Key: `exclude-night-vision` * Values * Type: `Boolean` * Default: `false` * **`EXCLUDE_POISON`** * Config Key: `exclude-poison` * Values * Type: `Boolean` * Default: `false` * **`EXCLUDE_REGEN`** * Config Key: `exclude-regen` * Values * Type: `Boolean` * Default: `false` * **`EXCLUDE_RESISTANCE`** * Config Key: `exclude-resistance` * Values * Type: `Boolean` * Default: `false` * **`EXCLUDE_SATURATION`** * Config Key: `exclude-saturation` * Values * Type: `Boolean` * Default: `false` * **`EXCLUDE_SLOWNESS`** * Config Key: `exclude-slowness` * Values * Type: `Boolean` * Default: `false` * **`EXCLUDE_SPEED`** * Config Key: `exclude-speed` * Values * Type: `Boolean` * Default: `false` * **`EXCLUDE_STRENGTH`** * Config Key: `exclude-strength` * Values * Type: `Boolean` * Default: `false` * **`EXCLUDE_WATER_BREATHING`** * Config Key: `exclude-water-breathing` * Values * Type: `Boolean` * Default: `false` * **`EXCLUDE_WEAKNESS`** * Config Key: `exclude-weakness` * Values * Type: `Boolean` * Default: `false` * **`EXCLUDE_WITHER`** * Config Key: `exclude-wither` * Values * Type: `Boolean` * Default: `false` [Playtime](https://lunarclient.dev/apollo/developers/mods/playtime "Playtime") [PvpInfo](https://lunarclient.dev/apollo/developers/mods/pvpinfo "PvpInfo") --- # Icons | Lunar Client Developers Apollo Developers Utilities Icons Icons ===== Overview[](https://lunarclient.dev/apollo/developers/utilities/icons#overview) ------------------------------------------------------------------------------- Apollo adds three different icon builders, `ItemStackIcon`, `SimpleResourceLocation` and `AdvancedResourceLocationIcon` for creating various types of icon entries. `ItemStackIcon` Builder[](https://lunarclient.dev/apollo/developers/utilities/icons#itemstackicon-builder) ----------------------------------------------------------------------------------------------------------- The `ItemStackIcon` builder is used to assign an icon using a specified ItemStack name or ID. This will utilize the texture present in the player's resource pack as the icon. If you're using a custom resource pack and want to make the icon appear as a model, you can set the `customModelData` to the models data value. On versions below 1.13 `customModelData` sets the durability instead. 🚫 If your server accepts players on Minecraft versions higher than `1.8.8` then you need to use `itemName`. public final class ItemStackIcon extends Icon { /** * Returns the icon {@link String} item name. * * @return the icon item name * @since 1.0.0 */ String itemName; /** * Returns the icon {@link Integer} item id. * * @return the icon item id * @since 1.0.0 */ int itemId; /** * Returns the icon {@link Integer} custom model data. * * @return the icon custom model data * @since 1.0.7 */ int customModelData; } ### Sample Code[](https://lunarclient.dev/apollo/developers/utilities/icons#sample-code) public static ItemStackIcon itemStackIdIconExample() { return ItemStackIcon.builder() .itemId(Material.ENDER_PEARL.getId()) .build(); } public static ItemStackIcon itemStackNameIconExample() { return ItemStackIcon.builder() .itemName("ENDER_PEARL") .build(); } `SimpleResourceLocation` Builder[](https://lunarclient.dev/apollo/developers/utilities/icons#simpleresourcelocation-builder) ----------------------------------------------------------------------------------------------------------------------------- If you're using a custom resource pack and want to create an icon, you can use the `SimpleResourceLocation` builder. The supplied resource location should point to a texture in the resource pack, or the path to an `svg` file in the resource pack. public final class SimpleResourceLocationIcon extends Icon { /** * Returns the icon {@link String} resource location. * *

Represents a path to an icon that will appear for the player.

* * @return the icon resource location * @since 1.0.0 */ String resourceLocation; /** * Returns the icon {@link Integer} size. * *

Size of the image height and width (in pixels).

* * @return the icon size * @since 1.0.0 */ int size; } ### Sample Code[](https://lunarclient.dev/apollo/developers/utilities/icons#sample-code-1) public static SimpleResourceLocationIcon simpleResourceLocationIconExample() { return SimpleResourceLocationIcon.builder() .resourceLocation("icons/server-logo.png") // Resource path location .size(16) // Represents both height and width .build(); } `AdvancedResourceLocationIcon` Builder[](https://lunarclient.dev/apollo/developers/utilities/icons#advancedresourcelocationicon-builder) ----------------------------------------------------------------------------------------------------------------------------------------- If you have a [TextureAtlas (opens in a new tab)](https://en.wikipedia.org/wiki/Texture_atlas) , also known as sprite-sheet or image sprite, you can use the `AdvancedResourceLocationIcon` builder. public final class AdvancedResourceLocationIcon extends Icon { /** * Returns the icon {@link String} resource location. * *

Represents a path to an icon that will appear for the player.

* * @return the icon resource location * @since 1.0.0 */ String resourceLocation; /** * Returns the icon width {@link Float}. * *

Size of the image width (in pixels).

* * @return the icon width * @since 1.0.0 */ float width; /** * Returns the icon height {@link Float}. * *

Size of the image height (in pixels).

* * @return the icon height * @since 1.0.0 */ float height; /** * Returns the icon min u {@link Float}. * *

Range of 0-1 (the x location on a TextureAtlas).

* * @return the icon min u * @since 1.0.0 */ float minU; /** * Returns the icon max u {@link Float}. * *

Range of 0-1 (the x location on a TextureAtlas).

* * @return the icon max u * @since 1.0.0 */ float maxU; /** * Returns the icon min v {@link Float}. * *

Range of 0-1 (the y location on a TextureAtlas).

* * @return the icon min v * @since 1.0.0 */ float minV; /** * Returns the icon max v {@link Float}. * *

Range of 0-1 (the y location on a TextureAtlas).

* * @return the icon max v * @since 1.0.0 */ float maxV; } ### Sample Code[](https://lunarclient.dev/apollo/developers/utilities/icons#sample-code-2) public static AdvancedResourceLocationIcon advancedResourceLocationIconExample() { return AdvancedResourceLocationIcon.builder() .resourceLocation("icons/server-sprite.png") .width(512) .height(512) .minU(1) .maxU(1) .minV(1) .maxV(1) .build(); } [Cuboids](https://lunarclient.dev/apollo/developers/utilities/cuboids "Cuboids") [Locations](https://lunarclient.dev/apollo/developers/utilities/locations "Locations") --- # Protobuf Object Util | Lunar Client Developers Apollo Developers Lightweight Protobuf Object Util Protobuf Object Util ==================== Overview[](https://lunarclient.dev/apollo/developers/lightweight/protobuf/object-util#overview) ------------------------------------------------------------------------------------------------ These utilities facilitate the creation of Apollo objects, commonly used across various Apollo Modules. The utility methods are used for converting objects to and from their corresponding Protocol Buffers representations. Integration[](https://lunarclient.dev/apollo/developers/lightweight/protobuf/object-util#integration) ------------------------------------------------------------------------------------------------------ public static UUID toJavaUuid(Uuid message) { return new UUID(message.getHigh64(), message.getLow64()); } public static long toJavaTimestamp(Timestamp message) { return message.getSeconds() * 1000 + message.getNanos() / 1000000; } public static Uuid createUuidProto(UUID object) { return Uuid.newBuilder() .setHigh64(object.getMostSignificantBits()) .setLow64(object.getLeastSignificantBits()) .build(); } public static com.lunarclient.apollo.common.v1.Color createColorProto(Color object) { return com.lunarclient.apollo.common.v1.Color.newBuilder() .setColor(object.getRGB()) .build(); } public static com.google.protobuf.Duration createDurationProto(Duration object) { return com.google.protobuf.Duration.newBuilder() .setSeconds(object.getSeconds()) .setNanos(object.getNano()) .build(); } public static Cuboid2D createCuboid2DProto(double minX, double minZ, double maxX, double maxZ) { return Cuboid2D.newBuilder() .setMinX(minX) .setMinZ(minZ) .setMaxX(maxX) .setMaxZ(maxZ) .build(); } public static EntityId createEntityIdProto(int id, UUID uuid) { return EntityId.newBuilder() .setEntityId(id) .setEntityUuid(ProtobufUtil.createUuidProto(uuid)) .build(); } Location-related methods public static com.lunarclient.apollo.common.v1.Location createLocationProto(Location location) { return com.lunarclient.apollo.common.v1.Location.newBuilder() .setWorld(location.getWorld().getName()) .setX(location.getX()) .setY(location.getY()) .setZ(location.getZ()) .build(); } public static BlockLocation createBlockLocationProto(Location location) { return BlockLocation.newBuilder() .setWorld(location.getWorld().getName()) .setX(location.getBlockX()) .setY(location.getBlockY()) .setZ(location.getBlockZ()) .build(); } public static Location toBukkitLocation(com.lunarclient.apollo.common.v1.Location message) { return new Location(Bukkit.getWorld(message.getWorld()), message.getX(), message.getY(), message.getZ()); } public static Location toBukkitLocation(com.lunarclient.apollo.common.v1.PlayerLocation message) { Location location = ProtobufUtil.toBukkitLocation(message.getLocation()); location.setYaw(message.getYaw()); location.setPitch(message.getPitch()); return location; } Icon-related methods public static Icon createItemStackIconProto(@Nullable String itemName, int itemId, int customModelData) { ItemStackIcon.Builder iconBuilder = ItemStackIcon.newBuilder() .setItemId(itemId) .setCustomModelData(customModelData); if (itemName != null) { iconBuilder.setItemName(itemName); } return Icon.newBuilder().setItemStack(iconBuilder.build()).build(); } public static Icon createSimpleResourceLocationIconProto(String resourceLocation, int size) { SimpleResourceLocationIcon icon = SimpleResourceLocationIcon.newBuilder() .setResourceLocation(resourceLocation) .setSize(size) .build(); return Icon.newBuilder().setSimpleResourceLocation(icon).build(); } public static Icon createAdvancedResourceLocationIconProto(String resourceLocation, float width, float height, float minU, float maxU, float minV, float maxV) { AdvancedResourceLocationIcon icon = AdvancedResourceLocationIcon.newBuilder() .setResourceLocation(resourceLocation) .setWidth(width) .setHeight(height) .setMinU(minU) .setMaxU(maxU) .setMinV(minV) .setMaxV(maxV) .build(); return Icon.newBuilder().setAdvancedResourceLocation(icon).build(); } [Packet Util](https://lunarclient.dev/apollo/developers/lightweight/protobuf/packet-util "Packet Util") [Adventure Util](https://lunarclient.dev/apollo/developers/lightweight/protobuf/adventure-util "Adventure Util") --- # JSON Object Util | Lunar Client Developers Apollo Developers Lightweight JSON Object Util JSON Object Util ================ Overview[](https://lunarclient.dev/apollo/developers/lightweight/json/object-util#overview) -------------------------------------------------------------------------------------------- These utilities facilitate the creation of Apollo objects, commonly used across various Apollo Modules. The utility methods are used for converting objects to and from their corresponding Protocol Buffers represented as a JSON Object. Integration[](https://lunarclient.dev/apollo/developers/lightweight/json/object-util#integration) -------------------------------------------------------------------------------------------------- public static JsonObject createEnableModuleObjectWithType(@NotNull String module, Map properties) { JsonObject enableModuleObject = JsonPacketUtil.createEnableModuleObject(module, properties); enableModuleObject.addProperty("@type", "type.googleapis.com/lunarclient.apollo.configurable.v1.ConfigurableSettings"); return enableModuleObject; } public static JsonObject createUuidObject(@NotNull UUID uuid) { JsonObject uuidObject = new JsonObject(); uuidObject.addProperty("high64", Long.toUnsignedString(uuid.getMostSignificantBits())); uuidObject.addProperty("low64", Long.toUnsignedString(uuid.getLeastSignificantBits())); return uuidObject; } public static JsonObject createColorObject(@NotNull Color color) { JsonObject colorObject = new JsonObject(); colorObject.addProperty("color", color.getRGB()); return colorObject; } public static String createDurationObject(@NotNull Duration duration) { long seconds = duration.getSeconds(); int nanos = duration.getNano(); String durationString; if (nanos == 0) { durationString = seconds + "s"; } else { durationString = String.format("%d.%09ds", seconds, nanos) .replaceAll("0+$", "") .replaceAll("\\.$", ""); } return durationString; } public static JsonObject createCuboid2DObject(double minX, double minZ, double maxX, double maxZ) { JsonObject cuboid2DObject = new JsonObject(); cuboid2DObject.addProperty("min_x", minX); cuboid2DObject.addProperty("min_z", minZ); cuboid2DObject.addProperty("max_x", maxX); cuboid2DObject.addProperty("max_z", maxZ); return cuboid2DObject; } public static JsonObject createEntityIdObject(@NotNull Entity entity) { JsonObject entityIdObject = new JsonObject(); entityIdObject.addProperty("entity_id", entity.getEntityId()); entityIdObject.add("entity_uuid", JsonUtil.createUuidObject(entity.getUniqueId())); return entityIdObject; } Location-related methods public static JsonObject createLocationObject(@NotNull Location location) { JsonObject locationObject = new JsonObject(); locationObject.addProperty("world", location.getWorld().getName()); locationObject.addProperty("x", location.getX()); locationObject.addProperty("y", location.getY()); locationObject.addProperty("z", location.getZ()); return locationObject; } public static JsonObject createBlockLocationObject(@NotNull Location location) { JsonObject locationObject = new JsonObject(); locationObject.addProperty("world", location.getWorld().getName()); locationObject.addProperty("x", location.getBlockX()); locationObject.addProperty("y", location.getBlockY()); locationObject.addProperty("z", location.getBlockZ()); return locationObject; } Icon-related methods public static JsonObject createItemStackIconObject(@Nullable String itemName, int itemId, int customModelData) { JsonObject itemIconObject = new JsonObject(); if (itemName != null) { itemIconObject.addProperty("item_name", itemName); } else { itemIconObject.addProperty("item_id", itemId); } itemIconObject.addProperty("custom_model_data", customModelData); JsonObject iconObject = new JsonObject(); iconObject.add("item_stack", itemIconObject); return iconObject; } public static JsonObject createSimpleResourceLocationIconObject(@NotNull String resourceLocation, int size) { JsonObject simpleIconObject = new JsonObject(); simpleIconObject.addProperty("resource_location", resourceLocation); simpleIconObject.addProperty("size", size); JsonObject iconObject = new JsonObject(); iconObject.add("simple_resource_location", simpleIconObject); return iconObject; } public static JsonObject createAdvancedResourceLocationIconObject(@NotNull String resourceLocation, float width, float height, float minU, float maxU, float minV, float maxV) { JsonObject advancedIcon = new JsonObject(); advancedIcon.addProperty("resource_location", resourceLocation); advancedIcon.addProperty("width", width); advancedIcon.addProperty("height", height); advancedIcon.addProperty("min_u", minU); advancedIcon.addProperty("max_u", maxU); advancedIcon.addProperty("min_v", minV); advancedIcon.addProperty("max_v", maxV); JsonObject iconObject = new JsonObject(); iconObject.add("advanced_resource_location", advancedIcon); return iconObject; } [Packet Util](https://lunarclient.dev/apollo/developers/lightweight/json/packet-util "Packet Util") [Adventure Util](https://lunarclient.dev/apollo/developers/lightweight/json/adventure-util "Adventure Util") --- # Locations | Lunar Client Developers Apollo Developers Utilities Locations Locations ========= Overview[](https://lunarclient.dev/apollo/developers/utilities/locations#overview) ----------------------------------------------------------------------------------- Apollo adds user-friendly location builders that seamlessly integrate with all Apollo modules requiring location information. `ApolloLocation` Builder[](https://lunarclient.dev/apollo/developers/utilities/locations#apollolocation-builder) ----------------------------------------------------------------------------------------------------------------- For obtaining a highly accurate location with decimal point precision, it is recommended to utilize the `ApolloLocation` builder. public class ApolloLocation { /** * Returns the world name for this location. * * @return the world name * @since 1.0.0 */ String world; /** * Returns the {@code double} X coordinate for this location. * * @return the x coordinate * @since 1.0.0 */ double x; /** * Returns the {@code double} Y coordinate for this location. * * @return the y coordinate * @since 1.0.0 */ double y; /** * Returns the {@code double} Z coordinate for this location. * * @return the z coordinate * @since 1.0.0 */ double z; } ### Sample Code[](https://lunarclient.dev/apollo/developers/utilities/locations#sample-code) public static ApolloLocation locationExample() { return ApolloLocation.builder() .world("world") .x(50.5D) .y(100) .z(50.0D) .build(); } `ApolloBlockLocation` Builder[](https://lunarclient.dev/apollo/developers/utilities/locations#apolloblocklocation-builder) --------------------------------------------------------------------------------------------------------------------------- For obtaining the location of a specific block, despite any discrepancies in decimal points, it is recommended to utilize the `ApolloBlockLocation` builder. public class ApolloBlockLocation { /** * Returns the world name for this location. * * @return the world name * @since 1.0.0 */ String world; /** * Returns the {@code int} X coordinate for this location. * * @return the x coordinate * @since 1.0.0 */ int x; /** * Returns the {@code int} Y coordinate for this location. * * @return the y coordinate * @since 1.0.0 */ int y; /** * Returns the {@code int} Z coordinate for this location. * * @return the z coordinate * @since 1.0.0 */ int z; } ### Sample Code[](https://lunarclient.dev/apollo/developers/utilities/locations#sample-code-1) public static ApolloBlockLocation blockLocationExample() { return ApolloBlockLocation.builder() .world("world") .x(0) .y(100) .z(0) .build(); } `ApolloPlayerLocation` Builder[](https://lunarclient.dev/apollo/developers/utilities/locations#apolloplayerlocation-builder) ----------------------------------------------------------------------------------------------------------------------------- For obtaining a highly accurate player location with decimal point precision, it is recommended to utilize the `ApolloPlayerLocation` builder. public final class ApolloPlayerLocation { /** * Returns the {@link ApolloLocation} for this player. * * @return the apollo location * @since 1.0.7 */ ApolloLocation location; /** * Returns the {@code float} yaw for this player location. * * @return the yaw * @since 1.0.7 */ float yaw; /** * Returns the {@code float} pitch for this player location. * * @return the pitch * @since 1.0.7 */ float pitch; } ### Sample Code[](https://lunarclient.dev/apollo/developers/utilities/locations#sample-code-2) public static ApolloPlayerLocation playerLocationExample() { return ApolloPlayerLocation.builder() .location(ApolloLocation.builder() .world("world") .x(50.5D) .y(100) .z(50.0D) .build()) .yaw(180.0F) .pitch(90.0F) .build(); } [Icons](https://lunarclient.dev/apollo/developers/utilities/icons "Icons") [Platform Utilities](https://lunarclient.dev/apollo/developers/platform-utilities "Platform Utilities") --- # Protobuf Packet Util | Lunar Client Developers Apollo Developers Lightweight Protobuf Packet Util Protobuf Packet Util ==================== Overview[](https://lunarclient.dev/apollo/developers/lightweight/protobuf/packet-util#overview) ------------------------------------------------------------------------------------------------ These utilities are designed to handle packet transmission and creation for integrating and configuring Apollo modules with their respective properties. The utility class provides a list of most Apollo modules and their configuration options. The methods in this utility leverage the same plugin messaging channel as the Apollo API `lunar:apollo`. Integration[](https://lunarclient.dev/apollo/developers/lightweight/protobuf/packet-util#integration) ------------------------------------------------------------------------------------------------------ To utilize Apollo Modules, first define a list of the modules you want to use: private static final List APOLLO_MODULES = Arrays.asList("limb", "beam", "border", "chat", "colored_fire", "combat", "cooldown", "entity", "glow", "hologram", "mod_setting", "nametag", "nick_hider", "notification", "packet_enrichment", "rich_presence", "server_rule", "staff_mod", "stopwatch", "team", "title", "tnt_countdown", "transfer", "vignette", "waypoint" ); Next, specify the properties for these modules. These properties are included in the enable module packet. When using the Apollo plugin, this corresponds to modifying the `config.yml` ⚠️ The example below does not encompass all available options and may not be up-to-date. For the latest options, refer to the module documentation ([example](https://lunarclient.dev/apollo/developers/modules/serverrule#available-options) ). // Module Id -> Option key -> Value private static final Table CONFIG_MODULE_PROPERTIES = HashBasedTable.create(); static { CONFIG_MODULE_PROPERTIES.put("combat", "disable-miss-penalty", Value.newBuilder().setBoolValue(false).build()); CONFIG_MODULE_PROPERTIES.put("server_rule", "competitive-game", Value.newBuilder().setBoolValue(false).build()); CONFIG_MODULE_PROPERTIES.put("server_rule", "competitive-commands", Value.newBuilder().setListValue( ListValue.newBuilder().addAllValues(Arrays.asList( Value.newBuilder().setStringValue("/server").build(), Value.newBuilder().setStringValue("/servers").build(), Value.newBuilder().setStringValue("/hub").build())) .build() ).build()); CONFIG_MODULE_PROPERTIES.put("server_rule", "disable-shaders", Value.newBuilder().setBoolValue(false).build()); CONFIG_MODULE_PROPERTIES.put("server_rule", "disable-chunk-reloading", Value.newBuilder().setBoolValue(false).build()); CONFIG_MODULE_PROPERTIES.put("server_rule", "disable-broadcasting", Value.newBuilder().setBoolValue(false).build()); CONFIG_MODULE_PROPERTIES.put("server_rule", "anti-portal-traps", Value.newBuilder().setBoolValue(true).build()); CONFIG_MODULE_PROPERTIES.put("server_rule", "override-brightness", Value.newBuilder().setBoolValue(false).build()); CONFIG_MODULE_PROPERTIES.put("server_rule", "brightness", Value.newBuilder().setNumberValue(50).build()); CONFIG_MODULE_PROPERTIES.put("server_rule", "override-nametag-render-distance", Value.newBuilder().setBoolValue(false).build()); CONFIG_MODULE_PROPERTIES.put("server_rule", "nametag-render-distance", Value.newBuilder().setNumberValue(64).build()); CONFIG_MODULE_PROPERTIES.put("server_rule", "override-max-chat-length", Value.newBuilder().setBoolValue(false).build()); CONFIG_MODULE_PROPERTIES.put("server_rule", "max-chat-length", Value.newBuilder().setNumberValue(256).build()); CONFIG_MODULE_PROPERTIES.put("tnt_countdown", "tnt-ticks", Value.newBuilder().setNumberValue(80).build()); CONFIG_MODULE_PROPERTIES.put("waypoint", "server-handles-waypoints", Value.newBuilder().setBoolValue(false).build()); } Use the following methods to send packets either to a specific player or to all online players: public static void sendPacket(Player player, GeneratedMessageV3 message) { byte[] bytes = Any.pack(message).toByteArray(); player.sendPluginMessage(ApolloExamplePlugin.getInstance(), "lunar:apollo", bytes); } public static void broadcastPacket(GeneratedMessageV3 message) { byte[] bytes = Any.pack(message).toByteArray(); Bukkit.getOnlinePlayers().forEach(player -> player.sendPluginMessage(ApolloExamplePlugin.getInstance(), "lunar:apollo", bytes)); } To create a Module packet, which is used for enabling modules (with or without properties) and for dynamically updating Apollo Options for modules such as the `Mod Settings Module` and `Server Rule Module`, use the following method: public static ConfigurableSettings createModuleMessage(String module, Map properties) { ConfigurableSettings.Builder moduleBuilder = ConfigurableSettings.newBuilder() .setApolloModule(module) .setEnable(true); if (properties != null) { moduleBuilder.putAllProperties(properties); } return moduleBuilder.build(); } Enable modules using the methods and fields defined above: public static void enableModules(Player player) { List settings = APOLLO_MODULES.stream() .map(module -> createModuleMessage(module, CONFIG_MODULE_PROPERTIES.row(module))) .collect(Collectors.toList()); OverrideConfigurableSettingsMessage message = OverrideConfigurableSettingsMessage .newBuilder() .addAllConfigurableSettings(settings) .build(); ProtobufPacketUtil.sendPacket(player, message); } [Roundtrip Packets](https://lunarclient.dev/apollo/developers/lightweight/protobuf/roundtrip-packets "Roundtrip Packets") [Object Util](https://lunarclient.dev/apollo/developers/lightweight/protobuf/object-util "Object Util") --- # Roundtrip Packets | Lunar Client Developers Apollo Developers Lightweight Protobuf Roundtrip Packets Roundtrip Packets ================= Overview[](https://lunarclient.dev/apollo/developers/lightweight/protobuf/roundtrip-packets#overview) ------------------------------------------------------------------------------------------------------ This example demonstrates how to handle roundtrip packets between the server and the Lunar Client. These packets are sent from the server, expecting a corresponding response from the client. The example utilizes a map to track the requests and their corresponding responses. For instance, this pattern is common in modules like `TransferModule` where a request packet is sent and a response is awaited. Integration[](https://lunarclient.dev/apollo/developers/lightweight/protobuf/roundtrip-packets#integration) ------------------------------------------------------------------------------------------------------------ public class ApolloRoundtripProtoListener implements PluginMessageListener { @Getter private static ApolloRoundtripProtoListener instance; private final Map>> roundTripPacketFutures = new ConcurrentHashMap<>(); private final ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1); public ApolloRoundtripProtoListener(ApolloExamplePlugin plugin) { instance = this; Bukkit.getServer().getMessenger().registerIncomingPluginChannel(plugin, "lunar:apollo", this); } @Override public void onPluginMessageReceived(String s, Player player, byte[] bytes) { try { Any any = Any.parseFrom(bytes); if (any.is(PingResponse.class)) { PingResponse message = any.unpack(PingResponse.class); UUID requestId = UUID.fromString(message.getRequestId().toStringUtf8()); this.handleResponse(player, requestId, message); } else if (any.is(TransferResponse.class)) { TransferResponse message = any.unpack(TransferResponse.class); UUID requestId = UUID.fromString(message.getRequestId().toStringUtf8()); this.handleResponse(player, requestId, message); } } catch (InvalidProtocolBufferException e) { throw new RuntimeException(e); } } public CompletableFuture sendRequest(Player player, UUID requestId, GeneratedMessageV3 request, Class responseType) { ProtobufPacketUtil.sendPacket(player, request); CompletableFuture future = new CompletableFuture<>(); this.roundTripPacketFutures .computeIfAbsent(player.getUniqueId(), k -> new ConcurrentHashMap<>()) .put(requestId, (CompletableFuture) future); ScheduledFuture timeoutTask = this.executorService.schedule(() -> future.completeExceptionally(new TimeoutException("Response timed out")), 10, TimeUnit.SECONDS ); future.whenComplete((result, throwable) -> timeoutTask.cancel(false)); return future; } private void handleResponse(Player player, UUID requestId, T message) { Map> futures = this.roundTripPacketFutures.get(player.getUniqueId()); if (futures == null) { return; } CompletableFuture future = futures.remove(requestId); if (future != null) { future.complete(message); } } } Here's an example demonstrating how to use the code to handle a server-to-client `TransferModule` transfer, where the client responds with a status (`accepted` or `rejected`). public void transferExample(Player player) { UUID requestId = UUID.randomUUID(); TransferRequest transferRequestMessage = TransferRequest.newBuilder() .setRequestId(ByteString.copyFromUtf8(requestId.toString())) .setServerIp("mc.hypixel.net") .build(); ApolloRoundtripProtoListener.getInstance() .sendRequest(player, requestId, transferRequestMessage, TransferResponse.class) .thenAccept(response -> { String message = ""; switch (response.getStatus()) { case STATUS_ACCEPTED: { message = "Transfer accepted! Goodbye!"; break; } case STATUS_REJECTED: { message = "Transfer rejected by client!"; break; } } player.sendMessage(message); }).exceptionally(throwable -> { player.sendMessage("Failed to receive a response in time."); return null; }); } [Serverbound Packets](https://lunarclient.dev/apollo/developers/lightweight/protobuf/serverbound-packets "Serverbound Packets") [Packet Util](https://lunarclient.dev/apollo/developers/lightweight/protobuf/packet-util "Packet Util") --- # JSON Packet Util | Lunar Client Developers Apollo Developers Lightweight JSON Packet Util JSON Packet Util ================ Overview[](https://lunarclient.dev/apollo/developers/lightweight/json/packet-util#overview) -------------------------------------------------------------------------------------------- These utilities are designed to handle packet transmission and creation for integrating and configuring Apollo modules with their respective properties. The utility class provides a list of most Apollo modules and their configuration options. The methods in this utility leverage the same plugin messaging channel as the Apollo API `lunar:apollo`. Integration[](https://lunarclient.dev/apollo/developers/lightweight/json/packet-util#integration) -------------------------------------------------------------------------------------------------- To utilize Apollo Modules, first define a list of the modules you want to use: private static final List APOLLO_MODULES = Arrays.asList("limb", "beam", "border", "chat", "colored_fire", "combat", "cooldown", "entity", "glow", "hologram", "mod_setting", "nametag", "nick_hider", "notification", "packet_enrichment", "rich_presence", "server_rule", "staff_mod", "stopwatch", "team", "title", "tnt_countdown", "transfer", "vignette", "waypoint" ); Next, specify the properties for these modules. These properties are included in the enable module packet. When using the Apollo plugin, this corresponds to modifying the `config.yml` ⚠️ The example below does not encompass all available options and may not be up-to-date. For the latest options, refer to the module documentation ([example](https://lunarclient.dev/apollo/developers/modules/serverrule#available-options) ). // Module Id -> Option key -> Object private static final Table CONFIG_MODULE_PROPERTIES = HashBasedTable.create(); static { // Module Options that the client needs to notified about, these properties are sent with the enable module packet // While using the Apollo plugin this would be equivalent to modifying the config.yml CONFIG_MODULE_PROPERTIES.put("combat", "disable-miss-penalty", false); CONFIG_MODULE_PROPERTIES.put("server_rule", "competitive-game", false); CONFIG_MODULE_PROPERTIES.put("server_rule", "competitive-commands", Arrays.asList("/server", "/servers", "/hub")); CONFIG_MODULE_PROPERTIES.put("server_rule", "disable-shaders", false); CONFIG_MODULE_PROPERTIES.put("server_rule", "disable-chunk-reloading", false); CONFIG_MODULE_PROPERTIES.put("server_rule", "disable-broadcasting", false); CONFIG_MODULE_PROPERTIES.put("server_rule", "anti-portal-traps", true); CONFIG_MODULE_PROPERTIES.put("server_rule", "override-brightness", false); CONFIG_MODULE_PROPERTIES.put("server_rule", "brightness", 50); CONFIG_MODULE_PROPERTIES.put("server_rule", "override-nametag-render-distance", false); CONFIG_MODULE_PROPERTIES.put("server_rule", "nametag-render-distance", 64); CONFIG_MODULE_PROPERTIES.put("server_rule", "override-max-chat-length", false); CONFIG_MODULE_PROPERTIES.put("server_rule", "max-chat-length", 256); CONFIG_MODULE_PROPERTIES.put("tnt_countdown", "tnt-ticks", 80); CONFIG_MODULE_PROPERTIES.put("waypoint", "server-handles-waypoints", false); } Use the following methods to send packets either to a specific player or to all online players: public static void sendPacket(Player player, JsonObject message) { player.sendPluginMessage(ApolloExamplePlugin.getInstance(), "apollo:json", message.toString().getBytes()); } public static void broadcastPacket(JsonObject message) { byte[] data = message.toString().getBytes(); Bukkit.getOnlinePlayers().forEach(player -> player.sendPluginMessage(ApolloExamplePlugin.getInstance(), "apollo:json", data)); } To create a Module packet, which is used for enabling modules (with or without properties) and for dynamically updating Apollo Options for modules such as the `Mod Settings Module` and `Server Rule Module`, use the following method: public static JsonObject createEnableModuleObject(@NotNull String module, Map properties) { JsonObject enableModuleObject = new JsonObject(); enableModuleObject.addProperty("apollo_module", module); enableModuleObject.addProperty("enable", true); if (properties != null) { JsonObject propertiesObject = new JsonObject(); for (Map.Entry entry : properties.entrySet()) { propertiesObject.add(entry.getKey(), JsonPacketUtil.convertToJsonElement(entry.getValue())); } enableModuleObject.add("properties", propertiesObject); } return enableModuleObject; } private static JsonElement convertToJsonElement(Object value) { if (value == null) { return JsonNull.INSTANCE; } else if (value instanceof String) { return new JsonPrimitive((String) value); } else if (value instanceof Number) { return new JsonPrimitive((Number) value); } else if (value instanceof Boolean) { return new JsonPrimitive((Boolean) value); } else if (value instanceof List) { JsonArray jsonArray = new JsonArray(); for (Object item : (List) value) { jsonArray.add(JsonPacketUtil.convertToJsonElement(item)); } return jsonArray; } throw new RuntimeException("Unable to wrap value of type '" + value.getClass().getSimpleName() + "'!"); } Enable modules using the methods and fields defined above: public static void enableModules(Player player) { JsonArray settings = APOLLO_MODULES.stream() .map(module -> JsonPacketUtil.createEnableModuleObject(module, CONFIG_MODULE_PROPERTIES.row(module))) .collect(JsonArray::new, JsonArray::add, JsonArray::addAll); JsonObject message = new JsonObject(); message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.configurable.v1.OverrideConfigurableSettingsMessage"); message.add("configurable_settings", settings); JsonPacketUtil.sendPacket(player, message); } [Player Detection](https://lunarclient.dev/apollo/developers/lightweight/json/player-detection "Player Detection") [Object Util](https://lunarclient.dev/apollo/developers/lightweight/json/object-util "Object Util") --- # SkyblockAddons | Lunar Client Developers Apollo Developers Mods Sba SkyblockAddons ============== A mod created for Hypixel Skyblock with over 50 features that will enhance your skyblock experience (version: DEBUG). Integration[](https://lunarclient.dev/apollo/developers/mods/sba#integration) ------------------------------------------------------------------------------ ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/sba#how-to-toggle-the-mod) public void toggleSkyblockAddonsExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModSba.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/sba#available-options) ------------------------------------------------------------------------------------------ * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`HIDE_HEALTH_BAR`** * Config Key: `hide-health-bar` * Values * Type: `Boolean` * Default: `true` * **`HIDE_FOOD_BAR`** * Config Key: `hide-food-bar` * Values * Type: `Boolean` * Default: `true` * **`HIDE_PET_HEALTH_BAR`** * Config Key: `hide-pet-health-bar` * Values * Type: `Boolean` * Default: `true` * **`SKELETON_HELMET_BARS`** * Config Key: `skeleton-helmet-bars` * Values * Type: `Boolean` * Default: `true` * **`COOLDOWN_PREDICTION`** * Config Key: `cooldown-prediction` * Values * Type: `Boolean` * Default: `true` * **`LEG_MONKEY_LVL_100`** * Config Key: `leg-monkey-lvl100` * Values * Type: `Boolean` * Default: `false` * **`COMPACT_TAB_LIST`** * Config Key: `compact-tab-list` * Values * Type: `Boolean` * Default: `true` * **`SHOW_ITEM_COOLDOWNS`** * Config Key: `show-item-cooldowns` * Values * Type: `Boolean` * Default: `true` * **`USE_LUNAR_COOLDOWNS`** * Config Key: `use-lunar-cooldowns` * Values * Type: `Boolean` * Default: `true` * **`HIDE_TRUE_DEFENSE`** * Config Key: `hide-true-defense` * Values * Type: `Boolean` * Default: `true` * **`SPECIAL_ZEALOT_ALERT`** * Config Key: `special-zealot-alert` * Values * Type: `Boolean` * Default: `true` * **`ZEALOT_COUNTER_EXPLOSIVE_BOW_SUPPORT`** * Config Key: `zealot-counter-explosive-bow-support` * Values * Type: `Boolean` * Default: `false` * **`ZEALOT_COLOR_BOOLEAN`** * Config Key: `zealot-color-boolean` * Values * Type: `Boolean` * Default: `false` * **`ZEALOT_COLOR`** * Config Key: `zealot-color` * Values * Type: `String` * Default: `#FF202020` * **`LOCK_SLOTS`** * Config Key: `lock-slots` * Values * Type: `Boolean` * Default: `true` * **`STOP_DROPPING_SELLING_RARE_ITEMS`** * Config Key: `stop-dropping-selling-rare-items` * Values * Type: `Boolean` * Default: `true` * **`AVOID_BLINKING_NIGHT_VISION`** * Config Key: `avoid-blinking-night-vision` * Values * Type: `Boolean` * Default: `true` * **`MAKE_BACKPACK_INVENTORIES_COLORED`** * Config Key: `make-backpack-inventories-colored` * Values * Type: `Boolean` * Default: `true` * **`FISHING_SOUND_INDICATOR`** * Config Key: `fishing-sound-indicator` * Values * Type: `Boolean` * Default: `true` * **`CHANGE_BAR_COLOR_FOR_POTIONS`** * Config Key: `change-bar-color-for-potions` * Values * Type: `Boolean` * Default: `false` * **`COLOR_ENDER_CHEST_IN_END`** * Config Key: `color-ender-chest-in-end` * Values * Type: `Boolean` * Default: `true` * **`END_ENDER_CHEST_COLOR`** * Config Key: `end-ender-chest-color` * Values * Type: `String` * Default: `#FF202020` * **`OUTBID_ALERT_SOUND`** * Config Key: `outbid-alert-sound` * Values * Type: `Boolean` * Default: `false` * **`OUTBID_ALERT_SOUND_IN_OTHER_GAMES`** * Config Key: `outbid-alert-sound-in-other-games` * Values * Type: `Boolean` * Default: `true` * **`HIDE_OTHER_PLAYER_PRESENTS`** * Config Key: `hide-other-player-presents` * Values * Type: `Boolean` * Default: `true` * **`ENTITY_GLOW`** * Β§cRequires Fast Render to be OFF. * Config Key: `entity-glow` * Values * Type: `Boolean` * Default: `true` * **`DROPPED_ITEMS_GLOW`** * Config Key: `dropped-items-glow` * Values * Type: `Boolean` * Default: `true` * **`DROPPED_ITEMS_GLOW_ON_ISLAND`** * Config Key: `dropped-items-glow-on-island` * Values * Type: `Boolean` * Default: `true` * **`HIDE_SVEN_PUP_NAMETAGS`** * Config Key: `hide-sven-pup-nametags` * Values * Type: `Boolean` * Default: `false` * **`HIDE_PLAYERS_IN_LOBBY`** * Config Key: `hide-players-in-lobby` * Values * Type: `Boolean` * Default: `false` * **`HIDE_SPAWN_POINT_PLAYERS`** * Config Key: `hide-spawn-point-players` * Values * Type: `Boolean` * Default: `false` * **`HIDE_BONES`** * Config Key: `hide-bones` * Values * Type: `Boolean` * Default: `true` * **`BIGGER_FISHING_WAKE`** * Config Key: `bigger-fishing-wake` * Values * Type: `Boolean` * Default: `true` * **`STOP_RAT_SOUNDS`** * Config Key: `stop-rat-sounds` * Values * Type: `Boolean` * Default: `false` * **`STOP_ONLY_RAT_SQUEAK`** * Config Key: `stop-only-rat-squeak` * Values * Type: `Boolean` * Default: `false` * **`FISHING_PARTICLE_OVERLAY`** * Config Key: `fishing-particle-overlay` * Values * Type: `Boolean` * Default: `true` * **`FISHING_PARTICLE_OVERLAY_COLOR`** * Config Key: `fishing-particle-overlay-color` * Values * Type: `String` * Default: `#FFFFFFFF` * **`DUNGEON_TEAMMATES_GLOW`** * Config Key: `dungeon-teammates-glow` * Values * Type: `Boolean` * Default: `true` * **`CRITICAL_HEALTH_DUNGEON_TEAMMATE_WARNING`** * Config Key: `critical-health-dungeon-teammate-warning` * Values * Type: `Boolean` * Default: `true` * **`SHOW_DUNGEON_TEAMMATE_NAME_OVERLAY`** * Config Key: `show-dungeon-teammate-name-overlay` * Values * Type: `Boolean` * Default: `true` * **`SHOW_HEALING_CIRCLE_WALL`** * Config Key: `show-healing-circle-wall` * Values * Type: `Boolean` * Default: `true` * **`HEALING_CIRCLE_OPACITY`** * Config Key: `healing-circle-opacity` * Values * Type: `Float` * Default: `0.4F` * Minimum: `0.1F` * Maximum: `1.0F` * **`STOP_BONZO_STAFF_SOUNDS`** * Config Key: `stop-bonzo-staff-sounds` * Values * Type: `Boolean` * Default: `false` * **`SHOW_SALVAGE_ESSENCES_COUNTER`** * Config Key: `show-salvage-essences-counter` * Values * Type: `Boolean` * Default: `true` * **`RESET_SALVAGED_ESSENCES_AFTER_LEAVING_MENU`** * Config Key: `reset-salvaged-essences-after-leaving-menu` * Values * Type: `Boolean` * Default: `true` * **`CHANGE_DUNGEON_MAP_ZOOM_WITH_KEYBOARD`** * Config Key: `change-dungeon-map-zoom-with-keyboard` * Values * Type: `Boolean` * Default: `true` * **`HIDE_ENCHANT_DESCRIPTION`** * Config Key: `hide-enchant-description` * Values * Type: `Boolean` * Default: `false` * **`ENABLE_MESSAGE_WHEN_BREAKING_PARK`** * Config Key: `enable-message-when-breaking-park` * Values * Type: `Boolean` * Default: `true` * **`SHOW_BACKPACK_PREVIEW`** * Config Key: `show-backpack-preview` * Values * Type: `Boolean` * Default: `true` * **`SHOW_BACKPACK_HOLDING_SHIFT`** * Config Key: `show-backpack-holding-shift` * Values * Type: `Boolean` * Default: `false` * **`BACKPACK_PREVIEW_AH`** * Config Key: `backpack-preview-ah` * Values * Type: `Boolean` * Default: `false` * **`CAKE_BAG_PREVIEW`** * Config Key: `cake-bag-preview` * Values * Type: `Boolean` * Default: `false` * **`BACKPACK_OPENING_SOUND`** * Config Key: `backpack-opening-sound` * Values * Type: `Boolean` * Default: `true` * **`FANCY_WARP_MENU`** * Config Key: `fancy-warp-menu` * Values * Type: `Boolean` * Default: `true` * **`WARP_ADVANCED_MODE`** * Config Key: `warp-advanced-mode` * Values * Type: `Boolean` * Default: `false` * **`DISABLE_ENDERMAN_TELEPORTION_EFFECT`** * Config Key: `disable-enderman-teleportion-effect` * Values * Type: `Boolean` * Default: `false` * **`HIDE_GREY_ENCHANTS`** * Config Key: `hide-grey-enchants` * Values * Type: `Boolean` * Default: `true` * **`SHOW_ITEM_ANVIL_USES`** * Config Key: `show-item-anvil-uses` * Values * Type: `Boolean` * Default: `true` * **`REPLACE_ROMAN_NUMERALS_WITH_NUMBERS`** * Config Key: `replace-roman-numerals-with-numbers` * Values * Type: `Boolean` * Default: `false` * **`DONT_REPLACE_ROMAN_NUMERALS_IN_ITEM_NAME`** * Config Key: `dont-replace-roman-numerals-in-item-name` * Values * Type: `Boolean` * Default: `false` * **`SHOW_ENCHANTMENTS_REFORGES`** * Config Key: `show-enchantments-reforges` * Values * Type: `Boolean` * Default: `true` * **`SHOW_BROKEN_FRAGMENTS`** * Config Key: `show-broken-fragments` * Values * Type: `Boolean` * Default: `true` * **`SHOW_BASE_STAT_BOOST_PERCENTAGE`** * Config Key: `show-base-stat-boost-percentage` * Values * Type: `Boolean` * Default: `true` * **`BASE_STAT_BOOST_COLOR_BY_RARITY`** * Config Key: `base-stat-boost-color-by-rarity` * Values * Type: `Boolean` * Default: `false` * **`SHOW_ITEM_DUNGEON_FLOOR`** * Config Key: `show-item-dungeon-floor` * Values * Type: `Boolean` * Default: `true` * **`SHOW_RARITY_UPGRADED`** * Config Key: `show-rarity-upgraded` * Values * Type: `Boolean` * Default: `true` * **`SHOW_STACKING_ENCHANT_PROGRESS`** * Config Key: `show-stacking-enchant-progress` * Values * Type: `Boolean` * Default: `true` * **`SHOW_SWORD_KILLS`** * Shows the kills for swords that give stats reflecting the enemies killed with said sword (ex. Fels Sword) * Config Key: `show-sword-kills` * Values * Type: `Boolean` * Default: `true` * **`ENCHANTMENT_LORE_PARSING`** * Config Key: `enchantment-lore-parsing` * Values * Type: `Boolean` * Default: `true` * **`HIGHLIGHT_SPECIAL_ENCHANTMENTS`** * Config Key: `highlight-special-enchantments` * Values * Type: `Boolean` * Default: `true` * **`SHOW_EXPERIMENTATION_TABLE_TOOLTIPS`** * Config Key: `show-experimentation-table-tooltips` * Values * Type: `Boolean` * Default: `true` * **`DEVELOPER_MODE`** * Config Key: `developer-mode` * Values * Type: `Boolean` * Default: `false` * **`SHOW_SKY_BLOCK_ITEM_ID`** * Config Key: `show-sky-block-item-i-d` * Values * Type: `Boolean` * Default: `false` * **`DONT_RESET_CURSOR_INVENTORY`** * Config Key: `dont-reset-cursor-inventory` * Values * Type: `Boolean` * Default: `true` * **`SHOW_PERSONAL_COMPACTOR_PREVIEW`** * Config Key: `show-personal-compactor-preview` * Values * Type: `Boolean` * Default: `true` * **`REFORGE_FILTER`** * Config Key: `reforge-filter` * Values * Type: `Boolean` * Default: `true` * **`SHOW_ENDER_CHEST_PREVIEW`** * Config Key: `show-ender-chest-preview` * Values * Type: `Boolean` * Default: `true` * **`DISABLE_EMPTY_GLASS_PANES`** * Config Key: `disable-empty-glass-panes` * Values * Type: `Boolean` * Default: `true` * **`DISABLE_TELEPORT_PAD_MESSAGES`** * Config Key: `disable-teleport-pad-messages` * Values * Type: `Boolean` * Default: `true` * **`DISABLE_MAGICAL_SOUP_MESSAGES`** * Config Key: `disable-magical-soup-messages` * Values * Type: `Boolean` * Default: `false` * **`DISABLE_MORT_MESSAGES`** * Config Key: `disable-mort-messages` * Values * Type: `Boolean` * Default: `false` * **`DISABLE_BOSS_MESSAGES`** * Config Key: `disable-boss-messages` * Values * Type: `Boolean` * Default: `false` * **`DISABLE_SPIRIT_SCEPTRE_MESSAGES`** * Config Key: `disable-spirit-sceptre-messages` * Values * Type: `Boolean` * Default: `true` * **`PLAYER_SYMBOLS_IN_CHAT`** * Config Key: `player-symbols-in-chat` * Values * Type: `Boolean` * Default: `true` * **`SHOW_PROFILE_TYPE`** * Config Key: `show-profile-type` * Values * Type: `Boolean` * Default: `true` * **`SHOW_NETHER_FACTION`** * Config Key: `show-nether-faction` * Values * Type: `Boolean` * Default: `true` * **`TREVOR_THE_TRAPPER_FEATURES`** * Config Key: `trevor-the-trapper-features` * Values * Type: `Boolean` * Default: `true` * **`TREVOR_HIGHLIGHT_TRACKED_ENTITY`** * Config Key: `trevor-highlight-tracked-entity` * Values * Type: `Boolean` * Default: `true` * **`TREVOR_SHOW_QUEST_COOLDOWN`** * Config Key: `trevor-show-quest-cooldown` * Values * Type: `Boolean` * Default: `true` [Saturation](https://lunarclient.dev/apollo/developers/mods/saturation "Saturation") [Scoreboard](https://lunarclient.dev/apollo/developers/mods/scoreboard "Scoreboard") --- # Lighting | Lunar Client Developers Apollo Developers Mods Lighting Lighting ======== Allows you to configure or disable lighting effects, which can increase FPS. Integration[](https://lunarclient.dev/apollo/developers/mods/lighting#integration) ----------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/lighting#how-to-toggle-the-mod) public void toggleLightingExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModLighting.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/lighting#available-options) ----------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` * **`FULL_BRIGHT`** * Config Key: `full-bright` * Values * Type: `Boolean` * Default: `true` * **`BRIGHTNESS_BOOST`** * Config Key: `brightness-boost` * Values * Type: `Float` * Default: `1.0F` * Minimum: `1.0F` * Maximum: `10.0F` [Keystrokes](https://lunarclient.dev/apollo/developers/mods/keystrokes "Keystrokes") [Memory](https://lunarclient.dev/apollo/developers/mods/memory "Memory") --- # Motion Blur | Lunar Client Developers Apollo Developers Mods MotionBlur Motion Blur =========== Blur your surroundings when moving. Integration[](https://lunarclient.dev/apollo/developers/mods/motionblur#integration) ------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/motionblur#how-to-toggle-the-mod) public void toggleMotionBlurExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModMotionBlur.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/motionblur#available-options) ------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`VALUE`** * Config Key: `value` * Values * Type: `Integer` * Default: `5` * Minimum: `1` * Maximum: `10` [Momentum](https://lunarclient.dev/apollo/developers/mods/momentum "Momentum") [MumbleLink](https://lunarclient.dev/apollo/developers/mods/mumblelink "MumbleLink") --- # Adventure | Lunar Client Developers Apollo Developers Adventure Adventure ========= Adventure is used throughout Apollo to send text from various modules to the client and more. Refer to the official [Adventure documentation (opens in a new tab)](https://docs.advntr.dev/) for further information on how to use it. Integration[](https://lunarclient.dev/apollo/developers/adventure#integration) ------------------------------------------------------------------------------- The Adventure platform is added dynamically to the server if it doesn't exist already. You do not need to shade in Adventure yourself. You may wish to depend on the [Apollo Adventure artifact](https://lunarclient.dev/maven-repository#apollo-dependencies) to target the exact version of Adventure it is using. [Platform Utilities](https://lunarclient.dev/apollo/developers/platform-utilities "Platform Utilities") [Introduction](https://lunarclient.dev/apollo/developers/lightweight/introduction "Introduction") --- # Team View | Lunar Client Developers Apollo Developers Mods TeamView Team View ========= Shows you where your teammates are on the HUD. Integration[](https://lunarclient.dev/apollo/developers/mods/teamview#integration) ----------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/teamview#how-to-toggle-the-mod) public void toggleTeamViewExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModTeamView.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/teamview#available-options) ----------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` [Tab](https://lunarclient.dev/apollo/developers/mods/tab "Tab") [TimeChanger](https://lunarclient.dev/apollo/developers/mods/timechanger "TimeChanger") --- # Hypixel Quickplay | Lunar Client Developers Apollo Developers Mods Quickplay Hypixel Quickplay ================= Quickly join games on the Hypixel network Integration[](https://lunarclient.dev/apollo/developers/mods/quickplay#integration) ------------------------------------------------------------------------------------ ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/quickplay#how-to-toggle-the-mod) public void toggleHypixelQuickplayExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModQuickplay.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/quickplay#available-options) ------------------------------------------------------------------------------------------------ * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` [PvpInfo](https://lunarclient.dev/apollo/developers/mods/pvpinfo "PvpInfo") [Radio](https://lunarclient.dev/apollo/developers/mods/radio "Radio") --- # 1.7 Visuals | Lunar Client Developers Apollo Developers Mods OneSevenVisuals 1.7 Visuals =========== Revert certain visuals and animations to how they behaved on 1.7. Integration[](https://lunarclient.dev/apollo/developers/mods/onesevenvisuals#integration) ------------------------------------------------------------------------------------------ ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/onesevenvisuals#how-to-toggle-the-mod) public void toggle17VisualsExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModOneSevenVisuals.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/onesevenvisuals#available-options) ------------------------------------------------------------------------------------------------------ * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` * **`ALWAYS_SWING`** * Provides better visual feedback when attacking while keeping vanilla behavior * Config Key: `always-swing` * Values * Type: `Boolean` * Default: `true` [NickHider](https://lunarclient.dev/apollo/developers/mods/nickhider "NickHider") [PackDisplay](https://lunarclient.dev/apollo/developers/mods/packdisplay "PackDisplay") --- # Mumble Link | Lunar Client Developers Apollo Developers Mods MumbleLink Mumble Link =========== Uses mumble to create positional audio in the Minecraft world. Integration[](https://lunarclient.dev/apollo/developers/mods/mumblelink#integration) ------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/mumblelink#how-to-toggle-the-mod) public void toggleMumbleLinkExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModMumbleLink.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/mumblelink#available-options) ------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` [MotionBlur](https://lunarclient.dev/apollo/developers/mods/motionblur "MotionBlur") [Nametag](https://lunarclient.dev/apollo/developers/mods/nametag "Nametag") --- # Not Enough Updates | Lunar Client Developers Apollo Developers Mods Neu Not Enough Updates ================== Skyblock Mod made by Moulberry Integration[](https://lunarclient.dev/apollo/developers/mods/neu#integration) ------------------------------------------------------------------------------ ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/neu#how-to-toggle-the-mod) public void toggleNotEnoughUpdatesExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModNeu.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/neu#available-options) ------------------------------------------------------------------------------------------ * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `true` [Nametag](https://lunarclient.dev/apollo/developers/mods/nametag "Nametag") [NickHider](https://lunarclient.dev/apollo/developers/mods/nickhider "NickHider") --- # TNT Countdown | Lunar Client Developers Apollo Developers Mods TntCountdown TNT Countdown ============= Displays the fuse countdown above TNT. Integration[](https://lunarclient.dev/apollo/developers/mods/tntcountdown#integration) --------------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/tntcountdown#how-to-toggle-the-mod) public void toggleTNTCountdownExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModTntCountdown.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/tntcountdown#available-options) --------------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`ADJUST_FUSE_TIME`** * Offset the default tnt delay in ticks. 1 second is 20 ticks * Config Key: `adjust-fuse-time` * Values * Type: `Integer` * Default: `0` * Minimum: `-80` * Maximum: `80` * **`BACKGROUND`** * Config Key: `background` * Values * Type: `Boolean` * Default: `true` * **`TEXT_SHADOW`** * Config Key: `text-shadow` * Values * Type: `Boolean` * Default: `false` * **`STATIC_COUNTDOWN_COLOR`** * Should the color stay the same the entire time. * Config Key: `static-countdown-color` * Values * Type: `Boolean` * Default: `false` * **`COLOR`** * Config Key: `color` * Values * Type: `String` * Default: `#FF00FF00` * **`PREFIX_COLOR`** * Config Key: `prefix-color` * Values * Type: `String` * Default: `#FFFFFFFF` [Titles](https://lunarclient.dev/apollo/developers/mods/titles "Titles") [ToggleSneak](https://lunarclient.dev/apollo/developers/mods/togglesneak "ToggleSneak") --- # PvP Info | Lunar Client Developers Apollo Developers Mods PvpInfo PvP Info ======== Displays various PvP statistics Integration[](https://lunarclient.dev/apollo/developers/mods/pvpinfo#integration) ---------------------------------------------------------------------------------- ### How to toggle the mod[](https://lunarclient.dev/apollo/developers/mods/pvpinfo#how-to-toggle-the-mod) public void togglePvPInfoExample(Player viewer, boolean value) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); apolloPlayerOpt.ifPresent(apolloPlayer -> this.modSettingModule.getOptions().set(apolloPlayer, ModPvpInfo.ENABLED, value)); } Available options[](https://lunarclient.dev/apollo/developers/mods/pvpinfo#available-options) ---------------------------------------------------------------------------------------------- * **`ENABLED`** * Config Key: `enabled` * Values * Type: `Boolean` * Default: `false` * **`RESET_ON_WORLD_CHANGE`** * Config Key: `reset-on-world-change` * Values * Type: `Boolean` * Default: `false` [PotionEffects](https://lunarclient.dev/apollo/developers/mods/potioneffects "PotionEffects") [Quickplay](https://lunarclient.dev/apollo/developers/mods/quickplay "Quickplay") --- # Lightweight | Lunar Client Developers Apollo Developers Lightweight Introduction Lightweight =========== Our lightweight integration allows for Apollo features to be used, without the need for running the entire Apollo plugin. We will introduce you to two different methods that achieve the same goal, while utilizing separate approaches. Each method offers different trade-offs between complexity, flexibility, and performance. Choose the method that best fits your use case and environment. Message format[](https://lunarclient.dev/apollo/developers/lightweight/introduction#message-format) ---------------------------------------------------------------------------------------------------- The message format used to communicate, follows a loosely structured JSON schema. The schema is defined using Protocol Buffers (protobuf) and includes various fields to achieve the end result, in this example-case displaying a waypoint. While the fields will change depending on the feature you're trying to implement, the `@type` will also remain. It should always be at the top, as shown. You can locate all the `@type` protos from this page: [https://buf.build/lunarclient/apollo (opens in a new tab)](https://buf.build/lunarclient/apollo) . { "@type": "type.googleapis.com/lunarclient.apollo.waypoint.v1.DisplayWaypointMessage", // The protobuf message type "name": "KoTH", "location": { "world": "world", "x": 150, "y": 100, "z": -150 }, "color": { "color": 255 }, "preventRemoval": true } ### Usage Methods[](https://lunarclient.dev/apollo/developers/lightweight/introduction#usage-methods) πŸ”— [Protobuf](https://lunarclient.dev/apollo/developers/lightweight/protobuf/getting-started) πŸ”— [JSON](https://lunarclient.dev/apollo/developers/lightweight/json/getting-started) [Adventure](https://lunarclient.dev/apollo/developers/adventure "Adventure") [Getting Started](https://lunarclient.dev/apollo/developers/lightweight/protobuf/getting-started "Getting Started") ---