# Phoenix Lobby documentation > Premium all-in-one lobby and hub plugin for single servers and BungeeCord or Velocity networks: server selector, join items, NPCs, scoreboards, queues, parkour and world protection in one plugin. Docs: https://www.phoenixplugins.com/docs/phoenix-lobby Supported Minecraft versions: 1.20.4 – 26.3 (Spigot, Paper, Folia (experimental), BungeeCord, Velocity) --- # 🌐 API ## API Build your own extensions for Phoenix Lobby with our public API. ## Maven Repository ```xml phoenixplugins https://repo.phoenixplugins.com/ ``` ## Dependency ```xml com.phoenixplugins.phoenixlobby api 1.0.0-SNAPSHOT ``` ## Getting started Add PhoenixLobby to your **plugin.yml** so your plugin loads after it. ```yaml depend: [PhoenixLobby] ``` Use `softdepend` instead if your plugin should still work when PhoenixLobby is not installed. In that case check `PhoenixLobbyAPI.isAvailable()` before calling anything. ## The API class `PhoenixLobbyAPI` answers questions about the lobby without going through placeholders. ```java if (!PhoenixLobbyAPI.isAvailable()) { return; } PhoenixLobbyAPI api = PhoenixLobbyAPI.get(); ``` | Method | Returns | | ------------------------------------------ | ---------------------------------------------------------- | | `getVersion()` | The version of PhoenixLobby that is running | | `getNpcTypes()` | Every NPC configured on this server | | `getNpcType(String identifier)` | One NPC by its identifier, as an `Optional` | | `isLobbyWorld(String worldName)` | Whether the plugin treats that world as a lobby | | `isInPvpMode(Player player)` | Whether the player is in [PvP mode](../modules/lobby-pvp.md) | | `getPlayingParkour(Player player)` | The parkour the player is running, as an `Optional` | | `getParkourHighScore(Player, String)` | That player's best score on a parkour | ```java PhoenixLobbyAPI.get().getPlayingParkour(player).ifPresent(parkour -> { player.sendMessage("You are running " + parkour + "."); }); ``` An `NpcType` gives you `isEnabled()`, `getIdentifier()`, `getDisplayName()` and `getEngineData()`, which in turn reports the [engine](../featues/npcs/npc-engines/) that NPC is drawn with. > **Warning:** `PhoenixLobbyAPI.get()` throws if the plugin has not finished loading. Call it from inside your own `onEnable` or later, never from a static initialiser, and guard it with `isAvailable()` when PhoenixLobby is only a soft dependency. ## Everything else Anything not documented here is internal and can change between versions. For values rather than behaviour, the [placeholders](../plugin-information/placeholders.md) are the stable route and cover far more of the plugin than the API does. ## Events Four events are fired, and all of them are ordinary Bukkit events, so a normal listener picks them up. They live in `com.phoenixplugins.phoenixlobby.api.events`. | Event | Fired when | | ------------------------- | ------------------------------------------------ | | `PlayerDoubleJumpEvent` | A player uses the [double jump](../modules/double-jump.md) | | `PlayerParkourStartEvent` | A player starts a [parkour](../modules/parkour/) run | | `PlayerParkourJumpEvent` | A player lands on the next parkour block | | `PlayerParkourEndEvent` | A parkour run ends | ### What each one carries | Event | Available on the event | Cancellable | | ------------------------- | ------------------------------------------------------------ | ----------- | | `PlayerDoubleJumpEvent` | `getPlayer()` | Yes | | `PlayerParkourStartEvent` | `getPlayer()`, `getParkourIdentifier()` | Yes | | `PlayerParkourJumpEvent` | `getPlayer()`, `getParkourIdentifier()`, `getScore()` | No | | `PlayerParkourEndEvent` | `getPlayer()`, `getParkourIdentifier()`, `getScore()`, `getElapsedSeconds()`, `isNewRecord()` | No | Cancelling `PlayerDoubleJumpEvent` stops the launch, and cancelling `PlayerParkourStartEvent` stops the run before it begins β€” which is how another plugin blocks either one in its own regions or during its own events. ```java @EventHandler public void onDoubleJump(PlayerDoubleJumpEvent event) { if (isInMyArena(event.getPlayer())) { event.setCancelled(true); } } ``` ```java public class ParkourListener implements Listener { @EventHandler public void onParkourEnd(PlayerParkourEndEvent event) { if (!event.isNewRecord()) { return; } Bukkit.broadcastMessage(event.getPlayer().getName() + " set a new record on " + event.getParkourIdentifier() + " with " + event.getScore() + " points."); } } ``` > **Info:** The parkour identifier is the one you gave the parkour in the editor, the same string the [parkour placeholders](../modules/parkour/README.md#placeholders) take. Setting your listener up, and the rest of what the plugin exposes, is covered above. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/api --- # πŸ“‘ Events ## Events Four events are fired, and all of them are ordinary Bukkit events, so a normal listener picks them up. They live in `com.phoenixplugins.phoenixlobby.api.events`. | Event | Fired when | | ------------------------- | ------------------------------------------------ | | `PlayerDoubleJumpEvent` | A player uses the [double jump](../modules/double-jump.md) | | `PlayerParkourStartEvent` | A player starts a [parkour](../modules/parkour/) run | | `PlayerParkourJumpEvent` | A player lands on the next parkour block | | `PlayerParkourEndEvent` | A parkour run ends | ## What each one carries | Event | Available on the event | Cancellable | | ------------------------- | ------------------------------------------------------------ | ----------- | | `PlayerDoubleJumpEvent` | `getPlayer()` | Yes | | `PlayerParkourStartEvent` | `getPlayer()`, `getParkourIdentifier()` | Yes | | `PlayerParkourJumpEvent` | `getPlayer()`, `getParkourIdentifier()`, `getScore()` | No | | `PlayerParkourEndEvent` | `getPlayer()`, `getParkourIdentifier()`, `getScore()`, `getElapsedSeconds()`, `isNewRecord()` | No | Cancelling `PlayerDoubleJumpEvent` stops the launch, and cancelling `PlayerParkourStartEvent` stops the run before it begins β€” which is how another plugin blocks either one in its own regions or during its own events. ```java @EventHandler public void onDoubleJump(PlayerDoubleJumpEvent event) { if (isInMyArena(event.getPlayer())) { event.setCancelled(true); } } ``` ```java public class ParkourListener implements Listener { @EventHandler public void onParkourEnd(PlayerParkourEndEvent event) { if (!event.isNewRecord()) { return; } Bukkit.broadcastMessage(event.getPlayer().getName() + " set a new record on " + event.getParkourIdentifier() + " with " + event.getScore() + " points."); } } ``` > **Info:** The parkour identifier is the one you gave the parkour in the editor, the same string the [parkour placeholders](../modules/parkour/placeholders.md) take. Setting your listener up, and the rest of what the plugin exposes, is on the [API page](README.md). Source: https://www.phoenixplugins.com/docs/phoenix-lobby/api/events --- # πŸ› οΈ GeyserMC (Bedrock) > **Info:** These options are in the bedrock section of config.yml. They have no editor option. ## Overview Bedrock players joining through Geyser can use the lobby menus as native Bedrock forms instead of chest menus: a list of buttons for the selectors and a list of switches for the player settings. Forms need Floodgate or Geyser to be installed on the same server as the plugin. Without either, everyone gets the chest menus. **Please note:** This guide will not cover the installation process of Geyser itself. Refer to the Geyser wiki for comprehensive installation instructions: [Geyser Wiki Setup](https://wiki.geysermc.org/geyser/setup/) ```yaml bedrock: forms: true input-modes: [] allow-opt-out: true resize-chest-menus: true chest-only-menus: [] icons: enabled: true fallback-url: "" head-url: "https://mc-heads.net/head/%texture%" ``` ## How the Forms Work | Menu | Bedrock form | | --- | --- | | Server selector and custom menus | A button per item that has actions, in slot order. | | Lobby selector | A button per lobby with its player count, then the menu's other items. The lobby you are in and offline lobbies do nothing. | | Music | The menu's items, such as the stop button, then a button per disc. | | Player settings | A switch per setting, saved when the form is submitted. | Buttons use the display name of each item, with colors and placeholders kept and hex colors removed, since forms cannot show them. Items without actions, fillers and close buttons are left out. The text around them, such as the lobby player count, comes from the bedrock section of the translations file. The actions of an item and the open actions of a menu still run. Everything else about the chest menu layout does not apply to forms. If a form cannot be sent, the player gets the chest menu instead and the console says so. Admin menus such as the editor stay chest menus. A button with more than one click action asks the Bedrock player which one to run, and every text prompt opens as a form. ## Forms Turns Bedrock forms on or off for the whole server. When off, Bedrock players get the chest menus like everyone else. ## Input Modes Limits forms to Bedrock players on certain devices, by their input mode: `TOUCH`, `CONTROLLER`, `KEYBOARD_MOUSE` or `VR`. Players on any other input get chest menus. Leave the list empty to give forms to every Bedrock player. ```yaml bedrock: input-modes: - TOUCH - CONTROLLER ``` ## Allow Opt Out Lets Bedrock players choose chest menus for themselves. Every form gets a button, or a switch in the player settings, to change to chest menus, and `/plobby forms` switches between the two. The choice is remembered per player. When this is off, every Bedrock player gets forms and the command is refused. ## Resize Chest Menus Bedrock only draws chest menus of 3 or 6 rows cleanly. With this on, a menu of 1 or 2 rows is opened with 3 rows and a menu of 4 or 5 rows with 6, for Bedrock players who get chest menus. Java players always see the rows the menu is set to. ## Chest Only Menus Menus that always open as chest menus, by file name without `.yml`: `servers`, `lobbies`, `music`, `player-settings` or one of your own. Use it for a menu that shows information rather than buttons, since a form only shows the items that have actions. ```yaml bedrock: chest-only-menus: - profile ``` ## Icons Adds an icon to form buttons. * **enabled** - Turns icons on or off. * **fallback-url** - An image URL for materials the built-in icon table does not know. `%material%` is replaced by the material name in lower case. Leave it empty for no icon. * **head-url** - An image URL for player heads. `%texture%` is replaced by the head's texture id, or the owner's name when it has no texture. Leave it empty for no head icons. Vanilla items use the Bedrock texture of the same item, which every Bedrock client already has. Custom items, meaning items from another plugin, items with custom model data and items with an item model, get no icon, since their texture only exists in a resource pack. Player heads always use the head URL. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/configurations/geysermc-bedrock --- # 🎁 Item Options ## Item Options The plugin builds items in several places β€” the [hotbar items](../featues/hotbar-items.md), the entries of every [menu](../featues/menus.md), the two states of the PvP mode item and the teleport bow. They share most of their options, so what is on this page works in all of them unless a section says otherwise. ```yaml material: DIAMOND_SWORD amount: 1 custom-model-data: 0 item-model: '' glow: false hide-attributes: false display-name: '&bExample' lore: - '&7An example item.' ``` ## Where each option works Three groups of items exist, and the last two columns are the ones to check before writing an option that does nothing. | Option | Hotbar & custom items | Music & player settings menus | | --------------------- | --------------------- | ----------------------------- | | `material` | Yes | Yes | | `amount` | Yes | Yes | | `custom-model-data` | Yes | Yes | | `item-model` | Yes | Yes | | `tooltip-style` | Yes | Yes | | `glow` | Yes | Yes | | `hide-attributes` | Yes | Yes | | `display-name`, `lore`| Yes | Yes | | `enchantments` | Hotbar items only | No | | `hide-enchantments` | Hotbar items only | No | | The [extras](#extras) below | No | Yes | "Custom items" here means the entries of `servers.yml`, `lobbies.yml` and any [menu you create](../featues/menus.md#custom-menus). ### The two built-in items The [PvP mode item](../featues/hotbar-items.md#pvp-mode) and the [teleport bow](../featues/hotbar-items.md#teleport-bow) are written by hand rather than as normal entries, so they differ slightly: * The PvP mode item's two states take `material`, `custom-model-data`, `item-model`, `tooltip-style`, `display-name`, `lore`, `enchantments` and `hide-enchantments`. They have no `glow` or `amount`. * The teleport bow takes everything the hotbar items do. Its `glow` option changes nothing, because the bow always carries Infinity to fire without ammo being consumed, and that gives it the shimmer regardless. ## Material The material is the Minecraft item name, such as `DIAMOND_SWORD` or `LIME_DYE`. A material your server version does not have leaves the slot empty, so check the name against the version you run. Player heads have two forms of their own, covered under [Player Heads](../featues/hotbar-items.md#player-heads). ## Amount How many of the item are in the stack. Anything below 1 is treated as 1. ## Resource Pack Options Two options point an item at a custom model, and which one you use depends on your server version. | Option | Description | | ------------------- | ------------------------------------------------------------- | | `custom-model-data` | The number your resource pack predicate matches on. Leave it at 0 for none. | | `item-model` | The model to draw, as a namespaced key such as `mypack:ruby_sword` | | `tooltip-style` | The tooltip frame to draw behind the name and lore, as a namespaced key such as `mypack:legendary` | ```yaml material: DIAMOND_SWORD custom-model-data: 1001 ``` ```yaml material: DIAMOND_SWORD item-model: 'mypack:ruby_sword' ``` ```yaml material: DIAMOND_SWORD tooltip-style: 'mypack:legendary' ``` A key without a namespace is read as a vanilla one, so write the namespace your pack uses. A style your pack does not define leaves the item with the normal tooltip. > **Info:** `item-model` and `tooltip-style` need Minecraft 1.21.2 or above. On an older server they are ignored and the item keeps its normal look, so a pack that has to cover both versions uses `custom-model-data`. ## Enchantments Each entry is an enchantment and a level, separated by a colon. A level left out counts as 1. ```yaml enchantments: - 'SHARPNESS:5' - 'UNBREAKING:3' - 'MENDING' ``` An enchantment name your server does not recognise is skipped and the rest of the list still applies, so a typo costs you one enchantment rather than all of them. ## Hide Enchantments Whether the enchantment lines are printed under the name. It is on by default, which is what keeps a decorated item looking clean in the hotbar. > **Warning:** This option hides more than the enchantments. With it on the item carries every hide flag, so attack damage, armour values, unbreakable and the rest are hidden too. Turning it off reveals the enchantment lines only β€” the attribute lines stay hidden either way. ## Glow Gives the item the enchanted shimmer without an enchantment on it. It is applied by adding a hidden Unbreaking I, so an item that already carries `enchantments` of its own keeps those and ignores `glow`. ## Hide Attributes Hides the attribute lines a weapon or a piece of armour prints, so a sword in a menu shows only the name and lore you wrote. On a hotbar item this changes nothing, because `hide-enchantments` already hides those lines. ## Display Name and Lore The name and the lines under it. Both accept the usual & colour codes, [MiniMessage](languages.md#rich-text-minimessage) tags and [PlaceholderAPI](../plugin-information/placeholders.md) placeholders. Set `display-name` to `''` to leave the item with no name at all. ```yaml display-name: '&aGame Menu &7(Right Click)' lore: - '&7Click here to open the quick compass.' - '' - '&d%phoenixlobby_proxy_survival% &7currently playing!' ``` A lore line that reads a placeholder only updates when the item is rebuilt. In a menu that means turning on `refresh` in its [settings](../featues/menus.md#settings); in the hotbar it means the player rejoining or changing world. ## Extras The [music](../featues/music.md) and [player settings](../featues/player-settings.md) menus are built on the newer menu system, so their items take a few more options. These are ignored everywhere else. | Option | Description | | --------------------------- | -------------------------------------------------------------- | | `rgb` | Dyes leather armour, written as `255, 80, 0` | | `trim-material`, `trim-pattern` | Puts an armour trim on a piece of armour, both needed | | `banner-meta` | Banner patterns, each written as `COLOUR;PATTERN` | | `potion-effects` | Effects on a potion, each written as `effect;duration;amplifier` | | `enchantment-glint-override`| Forces the shimmer on or off, whatever the enchantments say | | `hide-tooltip` | Hides the tooltip of the item completely | ```yaml material: LEATHER_CHESTPLATE rgb: '255, 80, 0' trim-material: REDSTONE trim-pattern: SENTRY ``` ```yaml material: WHITE_BANNER banner-meta: - 'RED;STRIPE_SMALL' - 'BLACK;BORDER' ``` ```yaml material: POTION potion-effects: - 'speed;600;1' ``` > **Info:** A value these options cannot read β€” a trim material that does not exist, a malformed banner pattern β€” is skipped without an error, and the item is built without it. > **Warning:** `hide-tooltip` and `enchantment-glint-override` are Minecraft 1.21.2 features and do nothing on an older server. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/configurations/item-options --- # 🌍 Languages & Translations ## Translations Every line the plugin can print lives in one file: ``` PhoenixLobby/translations/translations.en.yml ``` Messages to players, command replies, the words the [placeholders](../plugin-information/placeholders.md) fall back on and the whole in-game editor are all in there. Edit it, run `/plobby reload`, and the new text is live. To stop a message from appearing at all, set it to `''` (empty quotes). > **Info:** Older versions kept this in **messages.yml**. On the first start after upgrading, the plugin moves your text across on its own and renames the old file to **old_messages.yml**. See [Where did my messages.yml go?](../plugin-information/questions-and-answers/README.md#where-did-my-messages-file-go) ## Prefix Most messages start with the plugin prefix rather than spelling it out, so it can be changed in one place. ```yaml en: plugin-prefix: 'ౌa9&lPhoenixLobby &8Β»&7' ``` Anywhere `%prefix%` appears in a message it is replaced with that value, which means renaming the plugin across every message is a single edit. ## Language The language the plugin loads is set in **config.yml**, or from **Editor > Settings > Language**. ```yaml language: EN_US ```

Settings (Language)

The picker lists every language the plugin knows about: | Code | Language | Code | Language | | ------- | ----------------------- | ------- | ------------------------ | | `EN_US` | English (United States) | `AR_SA` | Arabic | | `PT_BR` | Portuguese (Brazil) | `PT_PT` | Portuguese (Portugal) | | `ES_ES` | Spanish | `FR_FR` | French | | `DE_DE` | German | `IT_IT` | Italian | | `NL_NL` | Dutch | `SV_SE` | Swedish | | `PL_PL` | Polish | `CS_CZ` | Czech | | `RU_RU` | Russian | `TR_TR` | Turkish | | `EL_GR` | Greek | `HI_IN` | Hindi | | `ID_ID` | Indonesian | `VI_VN` | Vietnamese | | `JA_JP` | Japanese | `KO_KR` | Korean | | `ZH_CN` | Chinese (Simplified) | | | > **Warning:** Only the languages included in the build you are running can be picked. The rest are greyed out in the editor. At the moment the plugin ships with English, so the way to run it in another language is to translate the file yourself. ## Translating the plugin The file is one flat list of keys, and the value is either a line or a list of lines. Translate the right-hand side and leave the keys and the placeholders alone. ```yaml en: spawn-not-set: '%prefix% Spawn has not been set.' spawn-teleportation: '%prefix% You have been teleported to spawn.' ``` Everything sits under the language code at the top of the file, and a value can be a single line or a list of them. ```yaml en: error-processing: - '&cAn error occurred while processing this action (Check console):' - '&7%message%' ``` Anything wrapped in `%` is filled in by the plugin, so `%prefix%`, `%player%` and `%identifier%` have to survive the translation to keep working. Colour codes can be moved around freely. > **Info:** English is always loaded first, and the chosen language is laid over the top of it. A key you have not translated yet falls back to its English line rather than printing blank, so a file can be translated a piece at a time. > **Info:** Keep a copy of your translated file before updating the plugin. New keys are added to it automatically, but it is the file your work lives in. ## The editor is translated too Everything under the `menus.editor` keys is the text of the in-game editor β€” the name and description of every option. Translating those is optional, and skipping them leaves the editor in English while your players see your language. ## Rich Text (MiniMessage) Phoenix Lobby understands [MiniMessage](https://docs.advntr.dev/minimessage/format.html) tags, like ``, `` or ``, on top of the classic `&` colour codes. This lets you use gradients, hover text and clickable links, none of which `&` codes can do. ### Format | Example | Result | | -------------------------------------------------------- | -------------------------------------- | | `Hello` | Red text | | `<#ff8800>Hello` | Any hex colour | | `Phoenix Lobby` | Text fading from one colour to another | | `Warning` | Bold and underlined | | `Welcome back!` | Each letter a different colour | | `Hover` | Text with a tooltip | | `Our site` | Text that opens a link | A closing tag is optional. `Hello` colours the rest of the line, while `Hello there` colours only the first word. ### Where it works | Place | Notes | | ---------------------------------------------------- | -------------------------------------------- | | [Holograms](../featues/holograms/) | Including `` from a resource pack | | [Scoreboard](../modules/scoreboard.md) | Title and lines | | [MOTD](../modules/motd.md) | Message, and the player count on Paper | | [Tablist](../modules/tablist.md) | Header and footer | | [Join and quit messages](../modules/join-actions.md#join-and-quit-messages) | And the rest of the plugin's chat messages | | Menu titles, item names and lore | Anywhere the editor lets you write text | ### Where it doesn't work Nametag prefixes and suffixes are the exception. Minecraft draws those through the scoreboard team system, which only understands the old colour codes, so a tag there is reduced to the nearest legacy colour. ### Usage notes * Legacy `&` codes, including `&#RRGGBB` hex, keep working everywhere exactly as before. * In **chat messages**, use one style per line. A chat line is only sent as MiniMessage when it contains no legacy colour codes at all, so mixing `&c` and `` in the same line falls back to legacy and prints the tag. * Everywhere else the two can be mixed freely. A scoreboard line or a hologram is read as MiniMessage as soon as it contains a tag, and any `&` codes in it are converted along with it. * A tag the server does not recognise is left in the text as written rather than being dropped, which is what keeps resource pack glyph tags working. > **Warning:** MiniMessage needs [Paper](https://papermc.io/) or a fork of it. On plain Spigot the tags are printed exactly as you typed them, so stay on `&` codes there. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/configurations/languages --- # πŸ“ Main Configuration ## Database The plugin also supports databases. The available options are mysql and sqlite. ```yaml database: type: sqlite address: localhost name: phoenixlobby_db port: 3306 username: phoenixuser password: phoenixpassword table-prefix: pl hikari: maximumPoolSize: 20 minimumIdle: 5 idleTimeout: 600000 maxLifetime: 1800000 connectionTimeout: 30000 fetch-timeout: 5000 performance: internal-pool-size: 5 ``` Set a different **table-prefix** on every server that shares the same database, so their tables do not mix. The **hikari** block is the connection pool, and it only matters on MySQL. The defaults suit a normal lobby; raise `maximumPoolSize` only if you are running a very large network off one database. **performance.internal-pool-size** is separate from that β€” it is the number of threads the plugin uses for its own background work, such as saving player data and looking addresses up. Leave it alone unless support asks you to change it. ## General Options | Option | Description | | ---------------------- | ------------------------------------------------------------------ | | `product-license` | Your license key, written by the plugin, see [Licensing](../plugin-information/licensing.md) | | `notify-if-new-version` | Tells your admins when a new version is out | | `language` | The language the plugin speaks, see [Languages](languages.md) | | `debug` | Prints extra information in the console | | `bypass-required` | Requires `/plobby bypass` before an admin can build in the lobby | | `proxy.register-lobby` | Registers this server as a lobby on the proxy | | `npcs.render-radius` | The distance past which NPCs and their effects stop being drawn | | `npcs.engine` | `BUILT_IN` or `PHOENIX_NPCS`, see [NPC Engine](../featues/npcs/npc-engines/README.md#npc-engine) | | `holograms.engine` | `BUILT_IN` or `PHOENIX_HOLOGRAMS`, see [Hologram Engine](../featues/holograms/#hologram-engine) | ## Worlds This is the single most important option in the file. It decides which worlds the plugin treats as a lobby, and it covers every module at once β€” the scoreboard, the tablist, the hotbar items, the world protection and the inventory clearing. ```yaml worlds: should-use: DISABLED_WORLDS enabled: [] disabled: - world_nether ``` With DISABLED_WORLDS, every world is a lobby except the ones you list under `disabled`. With ENABLED_WORLDS, only the worlds under `enabled` are. > **Danger:** Out of the box the plugin treats every world as a lobby. A server that holds more than the lobby world should switch to `ENABLED_WORLDS` and name its lobby, which is [step one of the Multiverse setup](../set-up/setup-with-multiverse.md). > **Info:** The [hotbar items](../featues/hotbar-items.md#items-per-world) have a `worlds` block of their own in **lobby-items.yml**, which only decides where the items are handed out. That one is narrower and separate from this. ## Messages Configuration Every line the plugin can print lives in **translations/translations.en.yml** inside the PhoenixLobby folder β€” messages to players, command replies and the in-game editor alike. To prevent a message from appearing, set it to '' (empty quotes). > **Info:** Older versions kept this in **messages.yml**. On the first start after upgrading, your text is moved across on its own and the old file is renamed to **old_messages.yml**. See [Where did my messages.yml go?](../plugin-information/questions-and-answers/README.md#where-did-my-messages-file-go) ## MiniMessage On top of the usual & colour codes, text accepts MiniMessage tags for gradients, hover text and clickable links. See [Rich Text (MiniMessage)](languages.md#rich-text-minimessage). ## Translations The plugin can be run in another language, and the file above is the one you translate. How the language is picked, what falls back to English and how the `%prefix%` placeholder works are all on [Languages & Translations](languages.md). Source: https://www.phoenixplugins.com/docs/phoenix-lobby/configurations/main-configuration --- # 🎨 Rich Text (MiniMessage) ## Information Phoenix Lobby understands [MiniMessage](https://docs.advntr.dev/minimessage/format.html) tags, like ``, `` or ``, on top of the classic `&` colour codes. This lets you use gradients, hover text and clickable links, none of which `&` codes can do. ## Format | Example | Result | | -------------------------------------------------------- | -------------------------------------- | | `Hello` | Red text | | `<#ff8800>Hello` | Any hex colour | | `Phoenix Lobby` | Text fading from one colour to another | | `Warning` | Bold and underlined | | `Welcome back!` | Each letter a different colour | | `Hover` | Text with a tooltip | | `Our site` | Text that opens a link | A closing tag is optional. `Hello` colours the rest of the line, while `Hello there` colours only the first word. ## Where it works | Place | Notes | | ---------------------------------------------------- | -------------------------------------------- | | [Holograms](../featues/holograms/) | Including `` from a resource pack | | [Scoreboard](../modules/scoreboard.md) | Title and lines | | [MOTD](../modules/motd.md) | Message, and the player count on Paper | | [Tablist](../modules/tablist.md) | Header and footer | | [Join and quit messages](../modules/join-actions/join-quit-messages.md) | And the rest of the plugin's chat messages | | Menu titles, item names and lore | Anywhere the editor lets you write text | ## Where it doesn't work Nametag prefixes and suffixes are the exception. Minecraft draws those through the scoreboard team system, which only understands the old colour codes, so a tag there is reduced to the nearest legacy colour. ## Usage notes * Legacy `&` codes, including `&#RRGGBB` hex, keep working everywhere exactly as before. * In **chat messages**, use one style per line. A chat line is only sent as MiniMessage when it contains no legacy colour codes at all, so mixing `&c` and `` in the same line falls back to legacy and prints the tag. * Everywhere else the two can be mixed freely. A scoreboard line or a hologram is read as MiniMessage as soon as it contains a tag, and any `&` codes in it are converted along with it. * A tag the server does not recognise is left in the text as written rather than being dropped, which is what keeps resource pack glyph tags working. > **Warning:** MiniMessage needs [Paper](https://papermc.io/) or a fork of it. On plain Spigot the tags are printed exactly as you typed them, so stay on `&` codes there. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/configurations/rich-text --- # πŸ‘₯ Alt Protection ## Alt Protection Alt Protection counts the accounts connecting from the same address and kicks the ones over `max-accounts-per-address`. Only the accounts online at that moment are counted, unless `count-offline-accounts` is turned on, which counts every account ever seen on that address instead. This feature is part of the proxy plugin, so it needs PhoenixLobby installed on your BungeeCord or Velocity. Players with `phoenixlobby.alts.bypass` are never limited, administrators with `phoenixlobby.alts.notify` are told when a player is kicked or joins next to another account, and `phoenixlobby.alts` is needed to use the command. Addresses in `whitelisted-addresses` are never limited, which is what a shared connection such as a school or an internet cafe needs. Players in `exempt-players` are skipped as well, by name or by uuid. ### Commands | Command | Description | | ------------------------------------- | ------------------------------------------------------------- | | `/alts ` | Lists the accounts linked to a player | | `/alts ip ` | Shows the addresses of a player, or who used an address | | `/alts info ` | Shows a summary of a player | | `/alts geo ` | Shows where an address is located | | `/alts remove
` | Unlinks an address from a player | | `/alts reload` | Reloads the alt account settings | ### History Every address a player connects from is remembered, so the commands still answer for players that are offline. An address is forgotten once it has not been seen for `retention-days`. Turning the history off leaves only the players who are online right now. ### Geolocation `/alts geo` shows the country, region, city and internet provider of an address. The lookup is done with a free service by default. You can point `api-url` to any service that answers with the same fields, and `%ip%` is replaced with the address. The result is kept for `cache-minutes` so the same address is not looked up again.
Alt Protection config.yml ```yaml alts: enabled: false max-accounts-per-address: 2 count-offline-accounts: false bypass-permission: phoenixlobby.alts.bypass whitelisted-addresses: [] exempt-players: [] history: enabled: true retention-days: 90 save-interval-seconds: 300 alerts: enabled: true on-blocked: true on-join: true geolocation: enabled: true api-url: 'http://ip-api.com/json/%ip%?fields=status,message,country,regionName,city,isp' cache-minutes: 720 timeout-millis: 3000 ```
> **Info:** The addresses are saved in the **alt-history.json** file of the proxy, so they survive a restart. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/alt-protection --- # πŸ›‘οΈ Anti Bot > **Info:** This module is configured in **modules/anti-bot.yml** inside the PhoenixLobby folder. ## Anti Bot Anti Bot watches the connections reaching this server and locks the lobby down when they arrive faster than a real player rush would produce. On top of that it can limit how many accounts share an address, how fast an address may reconnect, and which usernames are accepted. Open it from **Editor > Settings > Anti Bot**. Every check runs before the player is fully connected, which is the only point where refusing a bot costs the server nothing. That also means none of these checks can be bypassed with a permission. ## Max Joins With this option, you can change how many connections are allowed inside the interval before the lockdown starts. A lower value reacts sooner, but it is also more likely to trigger on the rush that follows a restart or an announcement. ## Interval With this option, you can change the time window, in seconds, the connections are counted in. The counter restarts as soon as a window passes without the limit being reached, so a slow trickle of players never adds up to a lockdown. ## Lockdown Duration With this option, you can change how many seconds a lockdown lasts. While it is on, only players that have already joined this server before are let in, and every further connection above the rate pushes the end of the lockdown further away, so an attack that keeps going never gets a window. ## Max Accounts Per IP With this option, you can change how many accounts may be online from the same address at the same time. Reconnecting on an account that is already counted does not take a second slot. A value of 0 turns the limit off. ## Rejoin Delay With this option, you can change how many seconds an address has to wait between two connections. An address that stays quiet for 5 minutes is forgotten and starts fresh. A value of 0 turns the delay off. ## Nickname Check With this option, you can turn on the username filter, which denies every name that does not match the pattern below. It is off by default because it also denies Bedrock and cracked usernames, which do not follow the vanilla naming rules. ## Nickname Pattern With this option, you can change the regular expression every username has to match. The editor refuses a pattern it cannot compile. A broken pattern written straight into the file leaves the check off and is reported in the console instead. ## Notify Admins With this option, you can choose whether administrators with phoenixlobby.alert.antibot are told when a lockdown starts and when it ends. The start is written to the console either way. ## Feature State With this option, you can turn Anti Bot off completely without clearing the rest of the settings.
Anti Bot Config ```yaml enabled: true detection: max-joins: 8 interval-seconds: 3 lockdown-seconds: 30 connection: max-accounts-per-ip: 0 rejoin-delay-seconds: 0 nickname: check-enabled: false pattern: ^[a-zA-Z0-9_]{3,16}$ notify-admins: true ```
> **Warning:** **Max Accounts Per IP** and **Rejoin Delay** work with the address that reaches this server. Behind a proxy every connection carries the proxy address instead, so leave both at 0 until the real one is forwarded with `ip_forward` on BungeeCord, or `player-info-forwarding-mode` on Velocity. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/anti-bot --- # 🌐 Anti VPN > **Info:** This module is configured in **modules/anti-vpn.yml** inside the PhoenixLobby folder. ## Anti VPN Anti VPN looks up the address of every player that connects and denies the ones that come from a vpn, a proxy or a datacenter. The lookup happens before the player is fully connected, so a denied player never reaches the world. Open it from **Editor > Settings > Anti VPN**. Local and private addresses are never looked up, which is what a test server on the same machine needs. ## Api Url With this option, you can change the service the addresses are checked against. It has to contain %ip%, which is replaced with the address that is connecting, and it has to answer with the same `proxy` and `hosting` fields the default service does. The editor refuses a url without the placeholder. ## Block Proxies With this option, you can choose whether addresses the service flags as a vpn or a proxy are denied. ## Block Hosting With this option, you can choose whether addresses owned by a datacenter or a hosting provider are denied. It is off by default, since some mobile carriers and school networks answer from ranges that are flagged this way. ## Kick On Lookup Failure With this option, you can choose what happens when the service cannot be reached, answers with an error, or takes longer than the timeout. Off lets the player in, on denies them. The failure is written to the console either way. ## Cache Minutes With this option, you can change how long a result is kept before the same address is looked up again. A higher value spares the service on a busy lobby, at the cost of reacting later when an address changes owner. ## Timeout Millis With this option, you can change how long to wait for the service before giving up. A player whose address is not cached yet waits for this before being let in, so a high value slows the join down when the service is having a bad day. ## Whitelisted Addresses With this option, you can list the addresses that are never checked. Entries have to be the full address, ranges are not matched. ## Notify Admins With this option, you can choose whether administrators with phoenixlobby.alert.antivpn are told, with the name and the address, when someone is denied. ## Feature State With this option, you can turn Anti VPN off completely without clearing the rest of the settings.
Anti VPN Config ```yaml enabled: true api-url: http://ip-api.com/json/%ip%?fields=status,message,proxy,hosting block-proxies: true block-hosting: false kick-on-lookup-failure: false cache-minutes: 60 timeout-millis: 3000 notify-admins: true whitelisted-addresses: [] ```
> **Warning:** phoenixlobby.bypass.antivpn has to be read before the player is connected, which only [LuckPerms](https://luckperms.net/) can answer. Without it installed the permission is ignored and a warning is printed on startup, so use **Whitelisted Addresses** instead. > **Info:** Behind a proxy this only works when the real player address is forwarded, so make sure `ip_forward` is on with BungeeCord, or `player-info-forwarding-mode` with Velocity. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/anti-vpn --- # πŸ—ΊοΈ Anti WDL > **Info:** This module is configured in **modules/anti-wdl.yml** inside the PhoenixLobby folder. ## Anti WDL A world downloader mod announces itself to the server as soon as the player joins, and asks whether it is allowed to save the world. Anti WDL answers that it is not, which turns the mod off for that player. Open it from **Editor > Settings > Anti WDL**. Players with phoenixlobby.bypass.antiwdl are left alone, which is what a builder taking a copy of the lobby needs. Nothing is kicked or cancelled, so a player that ignores the answer with a patched mod is still caught and reported, but not stopped. ## Notify Admins With this option, you can choose whether administrators with phoenixlobby.alert.antiwdl are told which player joined with the mod. The attempt is also sent to the [logger](logger.md) either way. ## Feature State With this option, you can turn Anti WDL off completely.
Anti WDL Config ```yaml enabled: true notify-admins: true ```
Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/anti-wdl --- # 🚫 Command Blocker > **Info:** This module is configured in **modules/command-blocker.yml** inside the PhoenixLobby folder. ## Command Blocker The command blocker stops players from running the commands you list. It also hides them from the tab completion, so a blocked command is never suggested while typing and never completes its arguments either. Open it from **Editor > Settings > Command Blocker**. Players with phoenixlobby.bypass.commandblocker keep using every command. The blocker only applies inside the [lobby worlds](../modules/world-protection.md), so a player that walks into a world the plugin is not active in gets the commands back. ## Blocked Commands With this option, you can edit the list of blocked commands. Entries are matched against the command name only, so the arguments do not matter, and the case does not either. A `*` stands for anything, so `bukkit:*` blocks every command of that namespace and `world*` blocks `worldedit` along with `worldguard`. An entry without a namespace also catches the namespaced form of the same command, so `plugins` blocks `bukkit:plugins` too. The opposite is not true: `bukkit:plugins` leaves the plain `plugins` alone. ## Feature State With this option, you can turn the command blocker off completely without clearing the list.
Command Blocker Config ```yaml enabled: true blocked-commands: - about - ver - version - icanhasbukkit - plugins - pl - help - '?' - bukkit:* - spigot:* - paper:* ```
Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/command-blocker --- # πŸ§β€β™€οΈ Create an NPC ## NPC Creation Creating an NPC only takes a few clicks, and you’ll be able to spawn one in no time.

In-Game Editor - Create an NPC

## Identifier With this option, you can set an identifier for the NPC. Note that the NPC identifier is unique and used internally by the plugin, and its different from the display name. > **Danger:** If the identifier is changed, your NPC might no longer work.

Editor > NPC > Identifier

## Display Name With this option, you can adjust the display name of the NPC. The display name is typically shown in the hologram above the NPC. For the display name, you can use the default Minecraft color codes. For hex colors, use the \&#D6D045 format.

Editor > NPC > Display Name

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/create-an-npc --- # πŸ’„ Edit an NPC ## Animations: With idle animations, you can create fancy particle effects around your NPCs. Choose from over 10 pre-made effect types and 100 different particles.

Editor > NPC > Idle Animations

## NPC Actions When you interact with NPCs, you can make them execute specific actions. To teleport users to a different server or world, use the actions below: * **For Proxy servers:** `[PROXY] server_name` * **For Worlds:** `[COMMAND] /console; mvtp %player% your_world_name`

Editor > NPC > Actions

## Hologram With this feature, you can create a hologram displayed above your NPC. Phoenix Lobby has its own built-in hologram system, so it doesn't depend on any external plugins. If you have trouble using the in-game editor to modify the hologram, you can also edit it manually per npc file in the npcs folder.

Editor > NPC > Hologram

The look of the hologram is set per npc, so every npc can have its own style. | Option | Description | | ---------------- | -------------------------------------------------- | | Height Offset | Raises or lowers the hologram above the npc | | Line Gap | The space between two lines | | Billboard | How the hologram faces the player | | Text Opacity | How solid the text is | | See Through | Shows the text through blocks | | Shadow | Adds a shadow behind the text | | Background Color | The color behind the text | | Hologram Scale | How big the text is | ### Player Counts Use **%proxy\_online%** in a hologram line to show how many players are on a server. The **Proxy Server** option of the npc decides which server is counted. ## Scale The **Scale** option makes the npc bigger or smaller. ## Glow The **Glow** option gives the npc a glowing outline, and lets you pick its color. ## Model Offset The **Model Offset** option raises or lowers the npc itself, which helps when a flying head or a huge item does not sit where you want it. ## NPC Render Radius In the **config.yml** file of the plugin, you can adjust the render radius from which players will be able to view the NPCs. Alternatively, this option is also available via the settings menu

Editor > Settings

```yaml npcs: render-radius: 15 ``` Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/edit-an-npc --- # πŸ’­ Holograms Besides the hologram that sits above an npc, you can also create holograms on their own. They are drawn by the same [hologram engine](#hologram-engine) as the npc holograms, so no external hologram plugin is needed. Stand where you want it and click **Add Hologram** in **Editor > Holograms**. The hologram is created at your current location and is added to the list right away.

Holograms (Add Hologram)

Once it exists, left-click it in the list to open its editor. The options are split into [Edit Hologram](#edit-hologram) and [Customize Hologram](#customize-hologram). ## Hologram Engine Shared by every hologram, npc holograms included, and set in **Editor > Settings**. Switching it redraws every hologram and npc right away. | Engine | Description | | --- | --- | | Built-in | The default, needs no other plugin | | PhoenixHolograms | Hands the drawing to PhoenixHolograms, selectable only while it is installed | With PhoenixHolograms, the lines, scale, background color and actions carry over; line gap, billboard, text opacity, see through and shadow use the PhoenixHolograms defaults. If PhoenixHolograms is removed, the plugin falls back to Built-in and logs a warning. > **Info:** Each hologram is saved in its own file inside the **holograms** folder of the PhoenixLobby folder. ## Edit Hologram ### Change Identifier With this option, you can rename the identifier of the hologram. The identifier is used internally by the plugin and has to be unique, so no two holograms can share the same one. It is not shown to players.

Edit Hologram (Change Identifier)

### Display With this option, you can change the item and the name used for the hologram inside the editor. This only affects how the hologram is listed in the menu, it does not change anything players see in the world.

Edit Hologram (Display)

### Hologram Lines With this option, you can configure the text of the hologram. Every entry is its own line, and empty entries can be used to leave a gap between two lines.

Edit Hologram (Hologram Lines)

### Hologram Location With this option, you can move the hologram to the position you are standing at. The tooltip shows the world, the coordinates, and the yaw and pitch it is currently using.

Edit Hologram (Hologram Location)

### Actions With this option, you can set the actions that are executed when a player clicks the hologram. The same action types used by npcs and hotbar items are available here.

Edit Hologram (Actions)

### Toggle State With this option, you can disable a hologram without removing it. A disabled hologram stays saved with all of its options but does not appear in the world.

Edit Hologram (Toggle State)

### Clone Hologram With this option, you can duplicate the hologram under a new identifier. The copy keeps every option of the original, which is useful when you want several holograms sharing the same style.

Edit Hologram (Clone Hologram)

### Delete Hologram With this option, you can remove the hologram from the server. > **Danger:** Deleting a hologram cannot be undone. Use **Toggle State** instead if you only want to hide it for a while.

Edit Hologram (Delete Hologram)

## Customize Hologram ### Height Offset With this option, you can raise or lower the hologram from its base position, which is useful for lining it up with a block or a decoration.

Customize Hologram (Height Offset)

### Line Gap With this option, you can change the spacing between each hologram line. The default is 0.3, a lower value pulls the lines closer together and a higher value spreads them apart.

Customize Hologram (Line Gap)

### Billboard With this option, you can change how the hologram faces players. Four modes are available: * **Fixed:** The hologram does not rotate at all * **Vertical:** The hologram rotates around the vertical axis only * **Horizontal:** The hologram rotates around the horizontal axis only * **Center:** The hologram always faces the player

Customize Hologram (Billboard)

### Hologram Scale With this option, you can change the size of the hologram. The default is 1.

Customize Hologram (Hologram Scale)

### Text Opacity With this option, you can change how solid the hologram text is. The value goes up to 255, which is fully solid, and lower values make the text more transparent.

Customize Hologram (Text Opacity)

### See Through With this option, you can define whether the hologram is visible through blocks. When it is disabled, the hologram is hidden as soon as a block is between it and the player.

Customize Hologram (See Through)

### Shadow With this option, you can define whether the hologram casts a text shadow, which helps the text stay readable against a bright background.

Customize Hologram (Shadow)

### Background Color With this option, you can change the color of the panel behind the text. It accepts either an a,r,g,b value or a #AARRGGBB hex code, where the first part is the transparency. The default is 0,0,0,0, which leaves the background fully transparent.

Customize Hologram (Background Color)

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/holograms --- # 🎨 Customize Hologram ## Height Offset With this option, you can raise or lower the hologram from its base position, which is useful for lining it up with a block or a decoration.

Customize Hologram (Height Offset)

## Line Gap With this option, you can change the spacing between each hologram line. The default is 0.3, a lower value pulls the lines closer together and a higher value spreads them apart.

Customize Hologram (Line Gap)

## Billboard With this option, you can change how the hologram faces players. Four modes are available: * **Fixed:** The hologram does not rotate at all * **Vertical:** The hologram rotates around the vertical axis only * **Horizontal:** The hologram rotates around the horizontal axis only * **Center:** The hologram always faces the player

Customize Hologram (Billboard)

## Hologram Scale With this option, you can change the size of the hologram. The default is 1.

Customize Hologram (Hologram Scale)

## Text Opacity With this option, you can change how solid the hologram text is. The value goes up to 255, which is fully solid, and lower values make the text more transparent.

Customize Hologram (Text Opacity)

## See Through With this option, you can define whether the hologram is visible through blocks. When it is disabled, the hologram is hidden as soon as a block is between it and the player.

Customize Hologram (See Through)

## Shadow With this option, you can define whether the hologram casts a text shadow, which helps the text stay readable against a bright background.

Customize Hologram (Shadow)

## Background Color With this option, you can change the color of the panel behind the text. It accepts either an a,r,g,b value or a #AARRGGBB hex code, where the first part is the transparency. The default is 0,0,0,0, which leaves the background fully transparent.

Customize Hologram (Background Color)

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/holograms/customize-hologram --- # πŸ–ŒοΈ Edit Hologram ## Change Identifier With this option, you can rename the identifier of the hologram. The identifier is used internally by the plugin and has to be unique, so no two holograms can share the same one. It is not shown to players.

Edit Hologram (Change Identifier)

## Display With this option, you can change the item and the name used for the hologram inside the editor. This only affects how the hologram is listed in the menu, it does not change anything players see in the world.

Edit Hologram (Display)

## Hologram Lines With this option, you can configure the text of the hologram. Every entry is its own line, and empty entries can be used to leave a gap between two lines.

Edit Hologram (Hologram Lines)

## Hologram Location With this option, you can move the hologram to the position you are standing at. The tooltip shows the world, the coordinates, and the yaw and pitch it is currently using.

Edit Hologram (Hologram Location)

## Actions With this option, you can set the actions that are executed when a player clicks the hologram. The same action types used by npcs and hotbar items are available here.

Edit Hologram (Actions)

## Toggle State With this option, you can disable a hologram without removing it. A disabled hologram stays saved with all of its options but does not appear in the world.

Edit Hologram (Toggle State)

## Clone Hologram With this option, you can duplicate the hologram under a new identifier. The copy keeps every option of the original, which is useful when you want several holograms sharing the same style.

Edit Hologram (Clone Hologram)

## Delete Hologram With this option, you can remove the hologram from the server. > **Danger:** Deleting a hologram cannot be undone. Use **Toggle State** instead if you only want to hide it for a while.

Edit Hologram (Delete Hologram)

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/holograms/edit-hologram --- # πŸͺ„ Hotbar Items ## Lobby Items The lobby hands every player a set of items to reach its features without typing a command. By default those are: * **Compass** – Game Menu, opens the server selector * **Book** – Lobby Selector, opens the lobby selector * **Jukebox** – Music, opens the disc menu * **Dye** – Toggles the other players on and off * **Netherite Sword** – Enters PvP mode * **Bow** – Teleport Bow, shoots you to where the arrow lands Open them from **Editor > Edit Lobby Items**, or edit the **lobby-items** file in the **PhoenixLobby** folder. Both write to the same place.

Editor (Edit Lobby Items)

Each item is one entry with its own slot, name, lore and [actions](../plugin-information/action-types.md), so a plain item can be made to do anything the plugin can do. The three at the top of the menu are ordinary items, the rest carry behaviour the plugin provides. Every item here also takes the appearance options shared across the plugin β€” `custom-model-data`, `item-model`, `enchantments`, `glow` and the rest β€” which are listed on [Item Options](../configurations/item-options.md).

Editor (Lobby Items)

### Music Runs the `/music` command, which opens the [music](music.md) menu of discs. Turning the command off leaves the item running it into nothing, so switch off both or neither. ### Player Visibility Swaps between two states rather than running an action, so the item itself shows whether the other players are visible. Its cooldown is what stops a player from hiding and showing everyone repeatedly. ### PvP Mode Puts the player into [PvP](../modules/lobby-pvp.md) mode and hands them the kit set up there, then gives their own items back when they leave. Like the visibility item it has two states, so the sword becomes a red dye while the mode is on. The two states also sit in different slots. `slot` is where the sword waits while PvP is off, and `states.on-slot` is where the red dye goes once a fight starts β€” kept apart so the leave item does not land in the middle of the kit. ```yaml pvp-mode: slot: '2' states: on-slot: '9' ``` **join-actions** and **leave-actions** run as a player enters and leaves the mode, and take every [action type](../plugin-information/action-types.md). ### Teleport Bow Shoots an arrow and teleports the player to wherever it lands, with a sound and a particle effect on arrival. Its cooldown is in seconds, and the ammo slot holds the arrows it fires, so leaving that slot empty is what stops it being used at all. To modify the lobby items, add new ones or remove existing ones, you can edit the **lobby-items** file located in the **PhoenixLobby** folder.
Default Lobby Items file ```yaml items: game-menu: slot: '5' material: COMPASS amount: 1 display-name: '&aGame Menu &7(Right Click)' lore: - '&7Click here to open the quick compass.' actions: - '[MENU] servers' required-permission: '' lobby-selector: slot: '8' material: BOOK amount: 1 display-name: '&aLobby Selector &7(Right Click)' lore: - '&7Click here to open the lobby selector.' actions: - '[MENU] lobbies' required-permission: '' music: slot: '7' material: JUKEBOX amount: 1 display-name: '&aMusic &7(Right Click)' lore: - '&7Click here to open the music menu.' actions: - '[COMMAND] player;music' required-permission: '' custom-items: player-visibility: enabled: true slot: '9' cooldown: 3 states: 'on': material: LIME_DYE display-name: '&fPlayers: &aVisible &7(Right Click)' lore: - '&7Right click to toggle player visibility.' 'off': material: GRAY_DYE display-name: '&fPlayers: &cHidden &7(Right Click)' lore: - '&7Right click to toggle player visibility.' pvp-mode: enabled: true slot: '2' states: on-slot: '9' 'off': material: NETHERITE_SWORD display-name: '&cPvP Mode: &cDisabled &7(Right Click)' lore: - '&7Right click to enter PvP mode.' - '&7Your items will be given back when you leave.' 'on': material: RED_DYE display-name: '&cPvP Mode: &aEnabled &7(Right Click)' lore: - '&7Right click to leave PvP mode.' kit: items: {} join-actions: [] leave-actions: [] teleport-bow: enabled: true slot: '1' material: BOW glow: true display-name: '&bTeleport Bow &7(Shoot to teleport)' lore: - '&7Shoot an arrow, teleport to where it lands.' cooldown-seconds: 3 sound: name: entity.enderman.teleport volume: 1.0 pitch: 1.0 land-effect: particle: PORTAL color: '#ffffff' offset-x: 0.5 offset-y: 0.5 offset-z: 0.5 spread: 0.0 velocity: 1.0 amount: 30 ammo-slot: '17' worlds: should-use: DISABLED_WORLDS enabled: [] disabled: [] ``` The kit of the PvP item is written by the editor rather than by hand, see [PvP Kit](../modules/lobby-pvp.md#pvp-kit).
### Player Heads To display the player's head in the hotbar, use the following method. ```yaml material: PLAYER_HEAD ``` To display a custom head as an item, use the **basehead** option. ```yaml material: PLAYER_HEAD:BASEHEAD_VALUE ``` ### Reserved Slots To keep a slot free for another plugin (friends, hide players, cosmetics), add an item with **placeholder** set to **true**. The lobby never places its own item in that slot and never clears it, even when **Clear Inventory** is enabled. ```yaml items: friends-slot: slot: '4' placeholder: true ``` Use a list or a range to reserve more than one slot at once. ```yaml slot: '4, 6' slot: '4-6' ``` ### Disable Items If you don't want your users to get the lobby items when they join the server, make sure to set the following option in the plugin's configuration to **false**. ```yaml items: enabled: true ``` ### Items per World The items are given in every world except the ones listed under **disabled**. Switch to **ENABLED\_WORLDS** if you would rather list the only worlds that should get them. This is separate from the option above, which turns the items off everywhere. Worlds where the PhoenixDuels Lobby Items add-on gives out its own hotbar are skipped as well, see [Stand Down In Duels Worlds](../modules/join-actions.md#stand-down-in-duels-worlds). ```yaml worlds: should-use: DISABLED_WORLDS enabled: [] disabled: [] ``` Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/hotbar-items --- # πŸ“ Logger ## Logger The logger writes down what happens on your lobby. Every event is written to `logs/latest.log` and can be sent to Discord at the same time. Each event is turned on or off on its own and has its own message, webhook and embed, so joins can go to one channel and chat to another. Everything is set up in `logger.yml`. ### Events | Event | Logged when | | ------------------------ | ------------------------------------------------------ | | player-join | A player joins the lobby | | player-leave | A player disconnects, not when they change server | | player-switch-server | A player is sent to another server of the proxy | | player-anti-vpn | A player is denied by the anti vpn | | player-anti-wdl | A player tries to use a world downloader | | player-pvp-join | A player enters pvp mode | | player-pvp-leave | A player leaves pvp mode | | server-anti-botting | The anti bot starts a lockdown | | player-anti-swear | A message is blocked or censored by the chat filter | | player-command-execution | A player runs a command | | player-chat-message | A player sends a message | ### Message The message of an event is written in **log-format**. It is the line that goes to the log file, and it is also what `%message%` gives you inside the webhook. Every event has its own placeholders. | Event | Placeholders | | ------------------------ | ------------------------------------------------------------------------- | | player-join | %player%, %uuid%, %address%, %world%, %online% | | player-leave | %player%, %uuid%, %address%, %world%, %online% | | player-switch-server | %player%, %uuid%, %server%, %world% | | player-anti-vpn | %player%, %uuid%, %address% | | player-anti-wdl | %player%, %uuid%, %world% | | player-pvp-join | %player%, %uuid%, %world% | | player-pvp-leave | %player%, %uuid%, %world% | | server-anti-botting | %attempts%, %seconds%, %lockdown\_seconds% | | player-anti-swear | %player%, %uuid%, %world%, %message\_content%, %action% | | player-command-execution | %player%, %uuid%, %world%, %command% | | player-chat-message | %player%, %uuid%, %world%, %message\_content% | %action% returns blocked or censored. On the chat filter event %message\_content% is what the player typed, before it was censored. ### Webhook Paste the address of your Discord webhook in **url** and that event starts posting. An empty url means nothing is sent, so you only fill in the events you care about. **username** and **avatar-url** change how the bot shows up, and **content** is a plain message sent above the embed. The embed is yours to shape with a title, a description, a colour, a footer, a thumbnail, an image and as many fields as you want. The placeholders of the event work in all of them.
Logger logger.yml ```yaml enabled: true file-logging: enabled: true events: player-join: enabled: true log-format: '%player% joined the lobby from %address%. (%online% online)' webhook: enabled: true url: '' username: Phoenix Lobby - Logger avatar-url: '' content: '' embed: enabled: true title: Player Join description: '%message%' color: '#43b581' url: '' thumbnail-url: '' image-url: '' footer: text: '' icon-url: '' fields: - name: Player value: '%player%' inline: true - name: Address value: '%address%' inline: true - name: Online value: '%online%' inline: true ```
> **Info:** The other events follow the same shape, each one with its own message, colour and fields. > **Info:** Telling a disconnect apart from a server change is done by the proxy, so `player-switch-server` needs PhoenixLobby installed on the proxy as well. Without it, a player changing server is logged as a leave. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/logger --- # 🚧 Maintenance ## Maintenance Maintenance closes a server, or the whole network, for everyone except the people you allow. Players already on a server that goes under maintenance are kicked, and new connections are denied until it ends. This feature is part of the proxy plugin, so it needs PhoenixLobby installed on your BungeeCord or Velocity. Everyone with `phoenixlobby.maintenance.bypass` can always join, and `phoenixlobby.maintenance` is needed to use the command. ### Commands | Command | Description | | ------------------------------------------------ | ------------------------------------------ | | `/maintenance start [time]` | Starts a maintenance | | `/maintenance end ` | Ends a maintenance | | `/maintenance add ` | Allows someone to join | | `/maintenance remove ` | Revokes someone's access | | `/maintenance list ` | Lists who is allowed to join | | `/maintenance schedule ` | Schedules a maintenance for later | | `/maintenance schedules` | Lists every scheduled maintenance | Leave the server empty or use **global** to affect every server at once. Leaving the time empty makes the maintenance last until you end it yourself. ### Time Format Times are written as `1Y 1M 1W 1D 1H 1m 1S`, and can be combined, for example `1D12H`. > **Warning:** An uppercase **M** means months and a lowercase **m** means minutes. ### MOTD The proxy shows a different motd while a maintenance is running through the `motds.maintenance` option. The regular motd is covered on the [MOTD](../modules/motd.md) page.
Maintenance MOTD config.yml ```yaml motds: maintenance: enabled: true motd: - ' &c&lUNDER MAINTENANCE' - ' &8We will be back in &7{timer}' ```
> **Info:** The running and scheduled maintenances are saved in the **maintenance.yml** file of the proxy, so they survive a restart. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/maintenance --- # πŸ—‚οΈ Menus > **Info:** Every menu is a file in the **menus** folder inside the PhoenixLobby folder. ## Menus The plugin ships with four menus, each one its own file: | File | Menu | | ---------------------- | ---------------------------------------------------- | | `servers.yml` | The [server selector](hotbar-items.md), the compass | | `lobbies.yml` | The [lobby selector](../set-up/setup-with-proxy.md#multiple-lobbies), the book | | `music.yml` | The [music](music.md) menu of discs | | `player-settings.yml` | The [player settings](player-settings.md) toggles | Everything in these files is yours to change, and none of them has to stay as a menu of servers or of discs. Buttons, rows, titles and looks can also be changed in-game with the [Menu Layout Editor](menus/menu-layout-editor.md), without touching the files. ## Custom Menus Any other `.yml` file you drop into the **menus** folder becomes a menu of its own. The file name is the name of the menu, so `menus/events.yml` is opened with: ```yaml '[MENU] events' ``` That action works anywhere actions do β€” a [hotbar item](hotbar-items.md), an [NPC](npcs/), a [hologram](holograms/), a [join action](../modules/join-actions.md) or another menu β€” so one menu can open the next. > **Info:** The plugin reads the folder when it starts, so a new file needs a `/plobby reload` before it can be opened. > **Warning:** A file named after a menu that already exists is skipped, so naming your own file `servers.yml` or `music.yml` will not replace the built-in one. Pick a different name. ## Settings Every menu starts with a `settings` block that decides the frame it is drawn in. ```yaml settings: title: 'Custom Menu' rows: 3 refresh: enabled: false rate: 40 on-open-actions: [] ``` | Option | Description | | ----------------- | -------------------------------------------------------------- | | `title` | The name shown at the top, colour codes and placeholders included | | `rows` | How tall the menu is, from 1 to 6 | | `refresh.enabled` | Redraws the menu while it is open, for lore that changes | | `refresh.rate` | How often it redraws, in ticks | | `on-open-actions` | [Actions](../plugin-information/action-types.md) that run when a player opens the menu | Leave `refresh.enabled` off unless the menu shows something live, such as a player count. A menu that redraws is rebuilt for every player watching it. > **Info:** Bedrock players get these menus as forms, or as chest menus resized to 3 or 6 rows. See [GeyserMC (Bedrock)](../configurations/geysermc-bedrock.md). ## Items Under `items`, every entry is one item. The name on the left is only an identifier for you. ```yaml items: close-menu: slot: 31 material: BARRIER amount: 1 display-name: '&aClose Menu' lore: - '&7Click here to close this menu.' - '' - '&6Left-Click: &eClose menu.' actions: - '[CLOSE_INVENTORY]' ``` Items accept the full set of appearance options β€” `custom-model-data`, `item-model`, `glow`, `hide-attributes` and the rest β€” which are listed on [Item Options](../configurations/item-options.md). Clicking an item runs its `actions`, so an item can send the player to a server, run a command, play a sound or open another menu. Every action is on the [Action Types](../plugin-information/action-types.md) page. ### Slots Menu slots start at 0 in the top-left corner and count across each row, so a 3-row menu runs from 0 to 26 and the middle of its bottom row is 22. ```yaml slot: 22 slot: '18-26' slot: '18, 22, 26' ``` A range fills every slot between the two numbers, which is how the grey background rows in the default menus are made. A negative slot hides the item without deleting it. > **Warning:** Hotbar items are numbered differently: those start at 1, because they use the slot numbers a player sees on their hotbar. Menus start at 0. ## Pagination The lobby selector and the music menu hold more entries than fit on one screen, so they carry a `pagination` block on top of their items. ```yaml pagination: align-items: LEFT slots: '10-16' fill-item: material: AIR previous-item: slot: 9 material: ARROW display-name: '&6Previous page - Page %page%' next-item: slot: 17 material: ARROW display-name: '&6Next page - Page %page%' ``` `slots` is the area the entries are drawn into, and `fill-item` is what fills the leftover slots on the last page. `%page%` on the arrows prints the page they lead to. ## Lobby Selector Entries `lobbies.yml` has one more section, because its entries are the lobbies themselves rather than items you wrote. `lobby.not-connected` is the entry for a lobby the player can join, and `lobby.connected` is the one they are already on. ```yaml lobby: not-connected: material: PLAYER_HEAD display-name: '&aLobby #%number%' lore: - '&7Players: %current_players%/%max_players%' - '&7Is Online: &f%is_online%' - '' - '&6Left-click: &eClick to connect.' connected: material: PLAYER_HEAD display-name: '&cLobby #%number%' lore: - '&7Players: %current_players%/%max_players%' - '' - '&cAlready connected!' ``` | Placeholder | Returns | | ------------------- | --------------------------------------------- | | `%number%` | The position of the lobby in the list | | `%current_players%` | Players on that lobby | | `%max_players%` | Slot count of that lobby | | `%is_online%` | Yes or No, taken from your translations file | ## Music Menu Entries `music.yml` works the same way with a single `disc` section, repeated for every disc of your server version. `%disc%` is the readable name and `%disc_id%` is the id `[PLAY_DISC]` takes. ```yaml disc: display-name: '&a%disc%' lore: - '&7Click to play this music disc.' actions: - '[PLAY_DISC] %disc_id%' - '[MESSAGE] &6Now playing &e%disc%&6.' ``` Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/menus --- # 🧩 Menu Layout Editor > **Info:** The editor changes the same files described in [Menus](../menus.md). A menu saved in-game is live straight away, with no reload. ## Opening the Editor There are two ways in, both needing phoenixlobby.admin: * **Editor > Edit Menu Layouts** lists every menu. Left-click one to edit it. * `/plobby editlayout ` opens one menu directly. The menu opens as it looks to players, with every button in place. > **Warning:** While you edit, your hotbar holds the editor tools. Your own hotbar items are saved to a backup file first, and the editor does not open if that backup fails. They come back when you close the menu. ## Menus The list holds the server selector (`servers`), the lobby selector (`lobbies`), every [custom menu](../menus.md#custom-menus) in the **menus** folder, the music menu (`music`) and the player settings menu (`player-settings`). The identifier in brackets is what `/plobby editlayout` takes. A custom menu only shows up once the plugin has loaded it, so a new file needs a `/plobby reload` first. ## Editing a Button With no tool turned on, click any button to open its editor. Every field there changes that one button: | Field | Description | | --- | --- | | Look | Drop an item here to copy its material, custom model data, item model and head texture. | | Display Name | The name of the button. | | Lore | The lore of the button. | | Amount | How many are shown, 1 to 64. | | Glow | Makes the button glow. | | Hide Attributes | Hides attack damage and similar lines. | | Custom Model Data | The custom model data of the button. | | Click Actions | The [actions](../../plugin-information/action-types.md) run when the button is clicked. | | Hide Tooltip | Hides the tooltip entirely. | | Tooltip Style | The tooltip style, such as `minecraft:blue`. | | Delete | Removes the button. | A field only appears when the button has that option. Ordinary buttons can be deleted. The parts the plugin draws itself, such as the page arrows or the player settings toggles, can be moved and restyled but not deleted. ## Drag and Drop Pick up any item from your inventory and drop it: * **On a button** to give the button that item's look: its material, custom model data, item model and head texture. The name, lore and actions stay. * **On an empty slot** to add the item as a new button, with its look, name and lore. This is the quickest way to put a custom item from a resource pack or a textured head into a menu. ## Hotbar Tools Right-click a tool while holding it, or click it in your inventory. The first three are modes: one is on at a time, it glows while on, and using it again turns it off. | Slot | Tool | Description | | --- | --- | --- | | 1 | Reordering | Click a button, then click where it should go. If that slot is taken, the two buttons swap places. | | 2 | Item Slots | Click an empty slot to add it to the menu's item slots, or click a lime slot to remove it. Also repeats a button: click it to select it, then click empty slots to put it there too. Clicking a button that already sits on several slots removes it from the slot you clicked. | | 3 | New Button | Click an empty slot to place a new button there. Its editor opens straight away. | | 4 | Add a Row | Makes the menu one row taller, up to 6. | | 5 | Remove a Row | Makes the menu one row shorter, down to 1. | | 8 | Menu Title | Type the new title, in a dialog where the server supports one, otherwise in chat. | | 9 | Templates & Text | Opens the parts of the menu that have no slot of their own. | The item slots are where the menu shows its own entries: the lobbies of the lobby selector and the discs of the music menu. A slot group always keeps at least one slot, and a button locked to a single slot cannot be repeated. A button written as a range, like the grey background rows, can be repeated and trimmed slot by slot. Removing a row does not delete what was on it. Anything left below the last row is hidden, you are told how many slots, and adding the row back shows it again. ## Templates & Text Templates are buttons drawn once per entry rather than placed on a slot: the connected and not connected entries of the lobby selector, the disc of the music menu, and the fill item of a menu with pages. Editing one restyles every copy of it. ## Saving Close the menu to save. The file is written, the menu is live for players at once, and your hotbar is given back. If you opened it from the Edit Menu Layouts list, the list opens again. The menu is also saved when you leave the server, when you die, and when the server stops. Dying ends the session, and your own hotbar items drop with the rest of your inventory unless the world keeps inventories. If the server crashes mid-edit, your hotbar is given back the next time you join. While editing, the tools cannot be dropped, placed or moved, and you cannot swap hands. > **Info:** Two admins can open the same menu at the same time. The second is warned, and whoever closes last overwrites the other's changes. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/menus/menu-layout-editor --- # 🎡 Music ## Music With **/music** the player opens a menu with every music disc of your server version. Clicking one plays it for that player only, and the barrier item stops it. By default the jukebox item in the hotbar opens the same menu. The command can be renamed or disabled in the plugin's configuration.
Music config.yml ```yaml commands: music: enabled: true alternative: music ```
## Customising the Menu The menu is built from **menus/music.yml**, so the title, size, background, page arrows and stop button are edited there like any other menu. The **disc** section is the entry repeated for every disc. Its actions decide what a click does, with `%disc%` for the readable name and `%disc_id%` for the id used by `[PLAY_DISC]`.
menus/music.yml ```yaml settings: title: Music Menu rows: 6 items: stop: slot: '49' material: BARRIER display-name: '&cStop Music' lore: - '&7Click here to stop the music that is playing.' - '' - '&6Left-Click: &eStop the music.' actions: - '[STOP_DISC]' - '[MESSAGE] &6The music has been stopped.' disc: display-name: '&a%disc%' lore: - '&7Click to play this music disc.' actions: - '[PLAY_DISC] %disc_id%' - '[MESSAGE] &6Now playing &e%disc%&6.' ```
Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/music --- # 🦊 Better Model > **Warning:** This option requires [BetterModel](https://modrinth.com/plugin/bettermodel) to be installed. ## Better Model Below are all the available customization options for the **BetterModel NPC** type: * **Model:** Allows you to set a model based on its ID. * **Idle Animation:** Plays an animation for the model when it's idling. * **Interaction Animation:** Plays an animation for the model when you interact. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/npc-engines/better-model --- # πŸ§‘β€πŸ€β€πŸ§‘ Citizens > **Warning:** This option requires [Citizens](https://www.spigotmc.org/resources/citizens.13811/) to be installed. ## Citizens Below are all the available customization options for the **Citizens NPC** type:

Citizens Engine - Editor

* **Skin**: Allows you to set a specific skin texture for the NPC by using a URL or a Username. * **Look Close**: Enables the NPC to look at the nearest player.

Citizens NPC - In-Game

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/npc-engines/citizens --- # πŸ„ Entity ## Entity This engine uses a normal Minecraft mob as the npc, so no other plugin is needed. Below are all the available customization options for the **Entity NPC** type: * **Entity Type:** Allows you to pick which mob is used. * **Entity Properties:** Allows you to change the extra properties of that mob, such as its variant, its age or its collar color. Mobs without extra properties show nothing here. * **Look Close**: Enables the NPC to look at the nearest player. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/npc-engines/entity --- # 🎩 Fancy NPCs > **Warning:** This option requires [FancyNpcs](https://modrinth.com/plugin/fancynpcs) to be installed. ## Fancy NPCs Below are all the available customization options for the **FancyNpcs NPC** type: * **Skin**: Allows you to set a specific skin texture for the NPC by using a URL or a Username. * **Look Close**: Enables the NPC to look at the nearest player. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/npc-engines/fancynpcs --- # πŸͺ½ Flying Head ## Flying Head Below are all the available customization options for the **Flying Head NPC** type:

Flying Head Engine - Editor

* **Texture URL**: Allows you to set a specific skull texture for the NPC by using a URL. * **Animation Mode**: Choose an animation for the NPC to perform. * **Hologram Static**: Decide whether the hologram remains static or follows the NPC as it moves. * **Look Close**: Enables the NPC to look at the nearest player.

Flying Head NPC - In-Game

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/npc-engines/flying-head --- # πŸͺ Huge Item ## Huge Item Below are all the available customization options for the **Huge Item NPC** type:

Huge Item Engine - Editor

* **Display Item:** Allows you to set a specific item, and also supports custom model data

Huge Item NPC - In-Game

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/npc-engines/huge-item --- # πŸ– Model Engine > **Warning:** This option requires [ModelEngine](https://mythiccraft.io/index.php?pages/official-modelengine4-download/) installed. ## Model Engine Below are all the available customization options for the **ModelEngine NPC** type:

Model Engine Engine - Editor

* **Model Name:** Allows you to set a model based on its ID. * **Idle Animation:** Plays an animation for the model when it's idling. * I**nteraction Animation:** Plays an animation for the model when you interact. * **Look Close**: Enables the NPC to look at the nearest player.

Model Engine NPC - In-Game

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/npc-engines/model-engine --- # βš™οΈ NPC Engines With the NPCs from **PhoenixLobby**, you have seven different types to choose from, allowing you to set them up as you prefer. The available options are as follows: * Flying Head - [Click Here](flying-head.md) * Huge Item - [Click Here](huge-item.md) * Entity - [Click Here](entity.md) * Citizens - [Click Here](citizens.md) * Fancy NPCs - [Click Here](fancynpcs.md) * Model Engine - [Click Here](model-engine.md) * Better Model - [Click Here](better-model.md)

Change Engine

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/npc-engines --- # πŸ§β€β™€οΈ NPCs ## NPC Creation An NPC is a figure standing in your lobby that players can click to be sent somewhere or shown a menu. Nothing external is needed to make one, though a few of the [engines](npc-engines/) do hand the rendering over to another plugin. Create one with `/plobby createNpc ` while standing where you want it, then open **Editor > Npcs** to configure it. ## The NPC list Every NPC you have made is listed here, with its display name and its identifier in brackets. Clicking one opens its own page of settings, covered under [Edit an NPC](#edit-an-npc). Shift-clicking hands you the NPC as an item instead, which you can then place to move it somewhere else without touching its settings.

Npcs (Example NPC)

## Npc Despawn Range Unlike everything else here, this one is shared by every NPC rather than set per NPC. It is the distance, in blocks, past which NPCs and their effects stop being shown to a player, and it is found in **Editor > Settings**. Raising it keeps distant NPCs visible from further away, at the cost of sending more to every player. A busy lobby with many NPCs is where a high value starts to hurt.

Settings (Npc Despawn Range)

## Edit an NPC Clicking an NPC in **Editor > Npcs** opens its own settings. Everything here applies to that one NPC. ### Change Identifier With this option, you can rename the identifier the plugin uses to tell this NPC apart from the others. It is separate from the display name and never shown to players.

Edit NPC (Change Identifier)

> **Danger:** Anything pointing at the old identifier, such as a command or another NPC's actions, stops working when you change it. ### Change Display Name With this option, you can change the name shown to players, which appears in the hologram above the NPC. Colour codes and [MiniMessage](../../configurations/languages.md#rich-text-minimessage) tags both work here.

Edit NPC (Change Display Name)

### NPC Engine With this option, you can change what the NPC is actually made of. Seven engines are available: Flying Head, Item, Entity, Citizens, Model Engine, Fancy NPCS and Better Model. Each has its own settings, covered on [NPC Engines](npc-engines/). An engine whose plugin is missing is marked **Not installed** and cannot be picked.

Edit NPC (NPC Engine)

### Edit Idle Animation With this option, you can add a particle effect that plays around the NPC while it is standing there. Thirteen shapes are available, each with its own particle, colour, offset and density, and an NPC can carry several at once. Its own settings are under [NPC Effects](#npc-effects).

Edit NPC (Edit Idle Animation)

### Npc Glow With this option, you can give the NPC a glowing outline and pick its colour, which is the cheapest way to make one stand out against a busy build. Its own settings are under [Glow](#glow).

Edit NPC (Npc Glow)

### Change Scale With this option, you can make the NPC bigger or smaller than a player.

Edit NPC (Change Scale)

### Proxy Server With this option, you can link the NPC to a server on your network. It is what `%proxy_online%` counts in the hologram, and it is picked from a list rather than typed.

Edit NPC (Proxy Server)

### Actions With this option, you can edit what happens when a player clicks the NPC. Every [action type](../../plugin-information/action-types.md) is available, so one NPC can send a player to another server, run a command or open a menu. * **To another server:** `[PROXY] server_name` * **To another world:** `[COMMAND] /console; mvtp %player% your_world_name`

Edit NPC (Actions)

### Hologram With this option, you can edit the floating text above the NPC. The plugin has its own hologram system, so no external plugin is needed. Its own settings are under [NPC Hologram](#npc-hologram).

Edit NPC (Hologram)

### Toggle State With this option, you can hide the NPC from the world without deleting it or losing any of its settings.

Edit NPC (Toggle State)

## Glow A glowing outline is the cheapest way to make one NPC stand out against a busy build. It is set per NPC, from **Npc Glow** inside that NPC's settings, and works on every engine. ### Toggle Glow Whether the outline is drawn at all. Turning it off keeps the colour you picked, so switching it back on does not need setting up again.

Glow (Toggle Glow)

### Glow Color Left-click to open a menu of the sixteen colours an outline can use, each shown as the dye that matches it, then left-click one to apply it. A colour the plugin does not recognise falls back to white. > **Info:** The outline is coloured by the client, so it is always one flat colour out of those sixteen. Hex codes and gradients do not apply here. ## NPC Effects An effect is a shape drawn in particles around an NPC while it stands there. It is set per NPC, from **Edit Idle Animation** inside that NPC's settings, and works on every [engine](npc-engines/). ### Stacking effects An NPC holds a list of effects rather than one, and every effect in the list is drawn at the same time. That is how the default NPC gets its look: a red dust ring, a ring of flame above it and a slow smoke star around both. Left-click in the effects menu to add one, and left-click an existing effect to change it. ### Effect Type The shape the particles are drawn in. Thirteen are available. | Effect | Shape | | -------------------- | ------------------------------------------------------------ | | Default | A flat ring around the NPC | | Circle | A circle drawn point by point | | Square | A square outline | | Diamond | A diamond outline | | Star | A five-pointed star | | Ninja Star | A four-pointed star | | Flower | A rounded petal shape | | Quatrefoil | A four-lobed clover | | Deltoid | A three-cusped curve | | Astroid | A four-cusped curve, pinched at the corners | | Spiral | A spiral climbing the NPC | | Conical Spiral | A spiral that widens as it climbs, like a cone | | Pulse | A ring that grows outwards and restarts | ### Particle The particle the shape is drawn with, such as `FLAME`, `REDSTONE` or `SMOKE_NORMAL`. A particle your server version does not have simply does not appear. ### Color Only some particles are coloured by the game. `REDSTONE` and the other dust particles take the colour you set here; the rest ignore it and keep their own look, so a flame stays orange whatever you pick. ### Offset `offset-x`, `offset-y` and `offset-z` move the effect relative to the NPC. The one used most is offset-y, which lifts the shape up or down β€” the default NPC uses it to put one ring at its feet and another at its head. ### Spread How far the particles are scattered from the exact point of the shape. Left at 0 the shape is drawn cleanly; raising it blurs the outline into a cloud. ### Velocity How fast the particles drift once they appear. At 0 they sit still, which is what keeps a shape readable. On dust particles this value is read as their size instead, so a small number there makes finer dust. ### Amount How many particles are drawn per step of the shape. Raising it makes the shape denser and heavier on the client, so keep it low on a lobby that holds a lot of NPCs. > **Info:** Effects stop being drawn past the **Npc Despawn Range** in **Editor > Settings**, the same distance that hides the NPCs themselves.
An effect in the NPC file Each NPC has its own file in the **npcs** folder, and its effects are a list under `effects`. ```yaml effects: - DEFAULT;{REDSTONE;#ff0000;0.0;0.0;0.0;1.0;0.1;2} - DEFAULT;{FLAME;#ffffff;0.0;0.0;0.0;2.0;0.1;2} - STAR;{SMOKE_NORMAL;#ffffff;0.0;0.0;0.0;0.0;0.0;2} ``` The effect type comes first, and the braces hold the rest in order: the particle, the colour, the X, Y and Z offset, the spread, the velocity and the amount.
## NPC Hologram The floating text above an NPC. The plugin has its own hologram system, so no external plugin is needed, and the look is set per NPC so every one can have its own style. PhoenixHolograms can draw it instead, see [Hologram Engine](../holograms/#hologram-engine). This is the hologram attached to an NPC. For text that stands on its own anywhere in the world, see [Holograms](../holograms/). ### Lines The text itself, one entry per line. `%proxy_online%` shows how many players are on the server picked under **Proxy Server**, vanished staff excluded, and PlaceholderAPI placeholders work too.

Hologram (Hologram)

### Height Offset Raises or lowers the whole hologram relative to the NPC.

Hologram (Height Offset)

### Line Gap The space left between two lines.

Hologram (Line Gap)

### Billboard How the text turns to face the player, whether it follows them fully, only horizontally, or stays fixed.

Hologram (Billboard)

### Hologram Scale How large the text is drawn.

Hologram (Hologram Scale)

### Text Opacity How solid the text is, from barely there to fully opaque.

Hologram (Text Opacity)

### Background Color The colour of the panel drawn behind the text.

Hologram (Background Color)

### See Through Whether the text stays visible through blocks.

Hologram (See Through)

### Shadow Whether a shadow is drawn behind the text.

Hologram (Shadow)

> **Info:** If the editor is awkward for a long hologram, each NPC is also a file of its own in the **npcs** folder and can be edited there. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/npcs --- # πŸ’„ Edit an NPC Clicking an NPC in **Editor > Npcs** opens its own settings. Everything here applies to that one NPC. ## Change Identifier With this option, you can rename the identifier the plugin uses to tell this NPC apart from the others. It is separate from the display name and never shown to players.

Edit NPC (Change Identifier)

> **Danger:** Anything pointing at the old identifier, such as a command or another NPC's actions, stops working when you change it. ## Change Display Name With this option, you can change the name shown to players, which appears in the hologram above the NPC. Colour codes and [MiniMessage](../../configurations/rich-text.md) tags both work here.

Edit NPC (Change Display Name)

## NPC Engine With this option, you can change what the NPC is actually made of. Seven engines are available: Flying Head, Item, Entity, Citizens, Model Engine, Fancy NPCS and Better Model. Each has its own settings and its own page under [NPC Engines](npc-engines/). An engine whose plugin is missing is marked **Not installed** and cannot be picked.

Edit NPC (NPC Engine)

## Edit Idle Animation With this option, you can add a particle effect that plays around the NPC while it is standing there. Thirteen shapes are available, each with its own particle, colour, offset and density, and an NPC can carry several at once. Its own settings are on the [NPC Effects](npc-effects.md) page.

Edit NPC (Edit Idle Animation)

## Npc Glow With this option, you can give the NPC a glowing outline and pick its colour, which is the cheapest way to make one stand out against a busy build. Its own settings are on the [NPC Glow](npc-glow.md) page.

Edit NPC (Npc Glow)

## Change Scale With this option, you can make the NPC bigger or smaller than a player.

Edit NPC (Change Scale)

## Proxy Server With this option, you can link the NPC to a server on your network. It is what `%proxy_online%` counts in the hologram, and it is picked from a list rather than typed.

Edit NPC (Proxy Server)

## Actions With this option, you can edit what happens when a player clicks the NPC. Every [action type](../../plugin-information/action-types.md) is available, so one NPC can send a player to another server, run a command or open a menu. * **To another server:** `[PROXY] server_name` * **To another world:** `[COMMAND] /console; mvtp %player% your_world_name`

Edit NPC (Actions)

## Hologram With this option, you can edit the floating text above the NPC. The plugin has its own hologram system, so no external plugin is needed. Its own settings are on the [NPC Hologram](npc-hologram.md) page.

Edit NPC (Hologram)

## Toggle State With this option, you can hide the NPC from the world without deleting it or losing any of its settings.

Edit NPC (Toggle State)

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/npcs/edit-an-npc --- # ✨ NPC Effects An effect is a shape drawn in particles around an NPC while it stands there. It is set per NPC, from **Edit Idle Animation** inside that NPC's settings, and works on every [engine](npc-engines/).

Edit NPC (Edit Idle Animation)

## Stacking effects An NPC holds a list of effects rather than one, and every effect in the list is drawn at the same time. That is how the default NPC gets its look: a red dust ring, a ring of flame above it and a slow smoke star around both. Left-click in the effects menu to add one, and left-click an existing effect to change it. ## Effect Type The shape the particles are drawn in. Thirteen are available. | Effect | Shape | | -------------------- | ------------------------------------------------------------ | | Default | A flat ring around the NPC | | Circle | A circle drawn point by point | | Square | A square outline | | Diamond | A diamond outline | | Star | A five-pointed star | | Ninja Star | A four-pointed star | | Flower | A rounded petal shape | | Quatrefoil | A four-lobed clover | | Deltoid | A three-cusped curve | | Astroid | A four-cusped curve, pinched at the corners | | Spiral | A spiral climbing the NPC | | Conical Spiral | A spiral that widens as it climbs, like a cone | | Pulse | A ring that grows outwards and restarts | ## Particle The particle the shape is drawn with, such as `FLAME`, `REDSTONE` or `SMOKE_NORMAL`. A particle your server version does not have simply does not appear. ## Color Only some particles are coloured by the game. `REDSTONE` and the other dust particles take the colour you set here; the rest ignore it and keep their own look, so a flame stays orange whatever you pick. ## Offset `offset-x`, `offset-y` and `offset-z` move the effect relative to the NPC. The one used most is offset-y, which lifts the shape up or down β€” the default NPC uses it to put one ring at its feet and another at its head. ## Spread How far the particles are scattered from the exact point of the shape. Left at 0 the shape is drawn cleanly; raising it blurs the outline into a cloud. ## Velocity How fast the particles drift once they appear. At 0 they sit still, which is what keeps a shape readable. On dust particles this value is read as their size instead, so a small number there makes finer dust. ## Amount How many particles are drawn per step of the shape. Raising it makes the shape denser and heavier on the client, so keep it low on a lobby that holds a lot of NPCs. > **Info:** Effects stop being drawn past the **Npc Despawn Range** in **Editor > Settings**, the same distance that hides the NPCs themselves. See [NPCs](README.md).
An effect in the NPC file Each NPC has its own file in the **npcs** folder, and its effects are a list under `effects`. ```yaml effects: - DEFAULT;{REDSTONE;#ff0000;0.0;0.0;0.0;1.0;0.1;2} - DEFAULT;{FLAME;#ffffff;0.0;0.0;0.0;2.0;0.1;2} - STAR;{SMOKE_NORMAL;#ffffff;0.0;0.0;0.0;0.0;0.0;2} ``` The effect type comes first, and the braces hold the rest in order: the particle, the colour, the X, Y and Z offset, the spread, the velocity and the amount.
Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/npcs/npc-effects --- # βš™οΈ NPC Engines Seven engines are available, each with a section below. The engine is picked per NPC, from **NPC Engine** on its own [settings](../README.md#edit-an-npc). An engine whose plugin is missing is marked **Not installed** and cannot be picked.

Edit NPC (NPC Engine)

## Flying Head This engine is a floating player head with no body, drawn by the plugin itself, so nothing else has to be installed. It is the lightest of the seven and the only one that can be animated without a model. ### Texture Url With this option, you can set which skin the head wears, either from a texture url or from a player username.

Flying Head (Texture Url)

### Animation Mode With this option, you can make the head move on its own instead of hanging still. **Helix** spins it around the spot it stands on, **Unstable** shakes it in place, and **None** leaves it still.

Flying Head (Animation Mode)

### Hologram Static With this option, you can decide whether the hologram stays where the NPC stands or rides along with the head. Leaving it static is what keeps the text readable while an animation is running.

Flying Head (Hologram Static)

### Model Offset With this option, you can raise or lower the head from where the NPC stands. It moves only the head, so it is separate from the [hologram](../README.md#npc-hologram) height offset.

Flying Head (Model Offset)

### Look Close With this option, you can make the head turn towards the nearest player instead of facing the direction it was placed in.

Flying Head (Look Close)

## Huge Item This engine turns any item into the NPC, drawn by the plugin itself, so nothing else has to be installed. It is listed as Item in the engine picker. ### Display Item With this option, you can choose the item the NPC is made of. Drag one out of your inventory onto the slot; custom model data is kept, so a resource pack item works as well as a vanilla one, and the same item is what the NPC shows in the editor lists.

Huge Item (Display Item)

### Model Offset With this option, you can raise or lower the item from where the NPC stands. It moves only the item, so it is separate from the [hologram](../README.md#npc-hologram) height offset.

Huge Item (Model Offset)

## Entity This engine uses a normal Minecraft mob as the NPC, drawn by the plugin itself, so nothing else has to be installed. ### NPC Engine Shared by every Entity NPC and set in **Editor > Settings**. Switching it respawns the npcs right away. | Engine | Description | | --- | --- | | Built-in | The default, spawns the mob in the world | | PhoenixNPCs | Hands the mob to PhoenixNPCs, selectable only while it is installed | With PhoenixNPCs, the mob type, look close, scale, glow and click actions carry over; entity properties do not. If PhoenixNPCs is removed, the plugin falls back to Built-in and logs a warning. The other engines are not affected. ### Entity Type With this option, you can pick which mob the NPC is. Changing it resets the properties below, since every mob has its own set.

Entity (Entity Type)

### Entity Properties With this option, you can change the extra properties of the chosen mob. Which ones appear depends entirely on the mob: a cat has a variant, a wolf has a variant and a collar colour, a slime has neither and says so instead of opening a list. Changing the [Entity Type](#entity-type) resets whatever was chosen here, since the values of one mob mean nothing to another.

Entity (Entity Properties)

#### Variant With this option, you can pick which kind of the mob the NPC is: the colour of a sheep or a llama, the breed of a cat, a rabbit or a fox, the biome coat of a cow, a pig or a chicken, the profession skin of a villager. The list is read from the server itself, so a variant added by a newer Minecraft version shows up without an update here.

Entity Properties (Variant)

#### Age With this option, you can make the NPC a baby instead of an adult. It appears for every mob that can be a baby at all, on top of whatever other properties that mob has.

Entity Properties (Age)

#### Collar With this option, you can set the collar colour of a wolf. It is the one property that is not a variant, so a wolf shows it next to its own variant list. ### Look Close With this option, you can make the mob turn towards the nearest player instead of facing the direction it was placed in.

Entity (Look Close)

## Citizens > **Warning:** This option requires [Citizens](https://www.spigotmc.org/resources/citizens.13811/) to be installed. This engine hands the NPC to Citizens, so it is a real player-shaped npc with a skin, and everything Citizens itself adds on top keeps working. ### Skin With this option, you can set the skin the NPC wears. Left-click takes a MineSkin url, right-click a player username, and shift + left-click a player uuid. All three are looked up online, so a username or uuid that Mojang does not know is refused with the reason.

Citizens (Skin)

### Look Close With this option, you can make the NPC turn towards the nearest player instead of facing the direction it was placed in.

Citizens (Look Close)

## Model Engine > **Warning:** This option requires [ModelEngine](https://mythiccraft.io/index.php?pages/official-modelengine4-download/) installed. This engine uses a ModelEngine model as the NPC, so anything you can build in Blockbench can stand in the lobby and play its own animations. ### Model Name With this option, you can pick one of the models ModelEngine has loaded. An NPC left on **unknown** shows a "Setup the model" marker in the world instead of a model.

Model Engine (Model Name)

### Idle Animation With this option, you can loop an animation while the NPC is standing there. The list is the animations of the chosen model, so picking the model comes first.

Model Engine (Idle Animation)

### Interaction Animation With this option, you can play an animation once when a player clicks the NPC. It runs alongside the [actions](../README.md#edit-an-npc) of that click, not instead of them.

Model Engine (Interaction Animation)

### Look Close With this option, you can make the model turn towards the nearest player instead of facing the direction it was placed in.

Model Engine (Look Close)

## Fancy NPCs > **Warning:** This option requires [FancyNpcs](https://modrinth.com/plugin/fancynpcs) to be installed. This engine hands the NPC to FancyNpcs, so it is a real player-shaped npc with a skin. It is listed as Fancy NPCS in the engine picker. ### Skin With this option, you can set the skin the NPC wears, either from a raw skin texture value or from a player uuid.

Fancy NPCs (Skin)

### Look Close With this option, you can make the NPC turn towards the nearest player instead of facing the direction it was placed in.

Fancy NPCs (Look Close)

## Better Model > **Warning:** This option requires [BetterModel](https://modrinth.com/plugin/bettermodel) to be installed. This engine uses a BetterModel model as the NPC, so a model you have built in Blockbench can stand in the lobby and play its own animations. ### Model With this option, you can pick one of the models BetterModel has loaded. An NPC left on **unknown** shows a "Setup the model" marker in the world instead of a model.

Better Model (Model)

### Idle Animation With this option, you can loop an animation while the NPC is standing there. The list is the animations of the chosen model, so picking the model comes first.

Better Model (Idle Animation)

### Interaction Animation With this option, you can play an animation once when a player clicks the NPC. It runs alongside the [actions](../README.md#edit-an-npc) of that click, not instead of them.

Better Model (Interaction Animation)

### Look Close With this option, you can make the model turn towards the nearest player instead of facing the direction it was placed in.

Better Model (Look Close)

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/npcs/npc-engines --- # 🦊 Better Model > **Warning:** This option requires [BetterModel](https://modrinth.com/plugin/bettermodel) to be installed. ## Better Model This engine uses a BetterModel model as the NPC, so a model you have built in Blockbench can stand in the lobby and play its own animations. ## Model With this option, you can pick one of the models BetterModel has loaded. An NPC left on **unknown** shows a "Setup the model" marker in the world instead of a model.

Better Model (Model)

## Idle Animation With this option, you can loop an animation while the NPC is standing there. The list is the animations of the chosen model, so picking the model comes first.

Better Model (Idle Animation)

## Interaction Animation With this option, you can play an animation once when a player clicks the NPC. It runs alongside the [actions](../edit-an-npc.md) of that click, not instead of them.

Better Model (Interaction Animation)

## Look Close With this option, you can make the model turn towards the nearest player instead of facing the direction it was placed in.

Better Model (Look Close)

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/npcs/npc-engines/better-model --- # πŸ§‘β€πŸ€β€πŸ§‘ Citizens > **Warning:** This option requires [Citizens](https://www.spigotmc.org/resources/citizens.13811/) to be installed. ## Citizens This engine hands the NPC to Citizens, so it is a real player-shaped npc with a skin, and everything Citizens itself adds on top keeps working. ## Skin With this option, you can set the skin the NPC wears. Left-click takes a MineSkin url, right-click a player username, and shift + left-click a player uuid. All three are looked up online, so a username or uuid that Mojang does not know is refused with the reason.

Citizens (Skin)

## Look Close With this option, you can make the NPC turn towards the nearest player instead of facing the direction it was placed in.

Citizens (Look Close)

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/npcs/npc-engines/citizens --- # πŸ„ Entity ## Entity This engine uses a normal Minecraft mob as the NPC, drawn by the plugin itself, so nothing else has to be installed. ## NPC Engine Shared by every Entity NPC and set in **Editor > Settings**. Switching it respawns the npcs right away. | Engine | Description | | --- | --- | | Built-in | The default, spawns the mob in the world | | PhoenixNPCs | Hands the mob to PhoenixNPCs, selectable only while it is installed | With PhoenixNPCs, the mob type, look close, scale, glow and click actions carry over; entity properties do not. If PhoenixNPCs is removed, the plugin falls back to Built-in and logs a warning. The other engines are not affected. ## Entity Type With this option, you can pick which mob the NPC is. Changing it resets the properties below, since every mob has its own set.

Entity (Entity Type)

## Entity Properties With this option, you can change the extra properties of the chosen mob. Which ones appear depends on the mob, and one that has none says so instead of opening a list. They have their own page: [Entity Properties](entity/properties.md).

Entity (Entity Properties)

## Look Close With this option, you can make the mob turn towards the nearest player instead of facing the direction it was placed in.

Entity (Look Close)

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/npcs/npc-engines/entity --- # 🎨 Entity Properties Which properties appear depends entirely on the mob the NPC is set to. A cat has a variant, a wolf has a variant and a collar colour, a slime has neither and says so instead of opening a list. Changing the [Entity Type](../entity.md#entity-type) resets whatever was chosen here, since the values of one mob mean nothing to another. ## Variant With this option, you can pick which kind of the mob the NPC is: the colour of a sheep or a llama, the breed of a cat, a rabbit or a fox, the biome coat of a cow, a pig or a chicken, the profession skin of a villager. The list is read from the server itself, so a variant added by a newer Minecraft version shows up without an update here.

Entity Properties (Variant)

## Age With this option, you can make the NPC a baby instead of an adult. It appears for every mob that can be a baby at all, on top of whatever other properties that mob has.

Entity Properties (Age)

## Collar With this option, you can set the collar colour of a wolf. It is the one property that is not a variant, so a wolf shows it next to its own variant list. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/npcs/npc-engines/entity/properties --- # 🎩 Fancy NPCs > **Warning:** This option requires [FancyNpcs](https://modrinth.com/plugin/fancynpcs) to be installed. ## Fancy NPCs This engine hands the NPC to FancyNpcs, so it is a real player-shaped npc with a skin. It is listed as Fancy NPCS in the engine picker. ## Skin With this option, you can set the skin the NPC wears, either from a raw skin texture value or from a player uuid.

Fancy NPCs (Skin)

## Look Close With this option, you can make the NPC turn towards the nearest player instead of facing the direction it was placed in.

Fancy NPCs (Look Close)

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/npcs/npc-engines/fancynpcs --- # πŸͺ½ Flying Head ## Flying Head This engine is a floating player head with no body, drawn by the plugin itself, so nothing else has to be installed. It is the lightest of the seven and the only one that can be animated without a model. ## Texture Url With this option, you can set which skin the head wears, either from a texture url or from a player username.

Flying Head (Texture Url)

## Animation Mode With this option, you can make the head move on its own instead of hanging still. **Helix** spins it around the spot it stands on, **Unstable** shakes it in place, and **None** leaves it still.

Flying Head (Animation Mode)

## Hologram Static With this option, you can decide whether the hologram stays where the NPC stands or rides along with the head. Leaving it static is what keeps the text readable while an animation is running.

Flying Head (Hologram Static)

## Model Offset With this option, you can raise or lower the head from where the NPC stands. It moves only the head, so it is separate from the [hologram](../npc-hologram.md) height offset.

Flying Head (Model Offset)

## Look Close With this option, you can make the head turn towards the nearest player instead of facing the direction it was placed in.

Flying Head (Look Close)

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/npcs/npc-engines/flying-head --- # πŸͺ Huge Item ## Huge Item This engine turns any item into the NPC, drawn by the plugin itself, so nothing else has to be installed. It is listed as Item in the engine picker. ## Display Item With this option, you can choose the item the NPC is made of. Drag one out of your inventory onto the slot; custom model data is kept, so a resource pack item works as well as a vanilla one, and the same item is what the NPC shows in the editor lists.

Huge Item (Display Item)

## Model Offset With this option, you can raise or lower the item from where the NPC stands. It moves only the item, so it is separate from the [hologram](../npc-hologram.md) height offset.

Huge Item (Model Offset)

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/npcs/npc-engines/huge-item --- # πŸ– Model Engine > **Warning:** This option requires [ModelEngine](https://mythiccraft.io/index.php?pages/official-modelengine4-download/) installed. ## Model Engine This engine uses a ModelEngine model as the NPC, so anything you can build in Blockbench can stand in the lobby and play its own animations. ## Model Name With this option, you can pick one of the models ModelEngine has loaded. An NPC left on **unknown** shows a "Setup the model" marker in the world instead of a model.

Model Engine (Model Name)

## Idle Animation With this option, you can loop an animation while the NPC is standing there. The list is the animations of the chosen model, so picking the model comes first.

Model Engine (Idle Animation)

## Interaction Animation With this option, you can play an animation once when a player clicks the NPC. It runs alongside the [actions](../edit-an-npc.md) of that click, not instead of them.

Model Engine (Interaction Animation)

## Look Close With this option, you can make the model turn towards the nearest player instead of facing the direction it was placed in.

Model Engine (Look Close)

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/npcs/npc-engines/model-engine --- # ✨ NPC Glow A glowing outline is the cheapest way to make one NPC stand out against a busy build. It is set per NPC, from **Npc Glow** inside that NPC's settings, and works on every engine. ## Toggle Glow Whether the outline is drawn at all. Turning it off keeps the colour you picked, so switching it back on does not need setting up again.

Glow (Toggle Glow)

## Glow Color Left-click to open a menu of the sixteen colours an outline can use, each shown as the dye that matches it, then left-click one to apply it. A colour the plugin does not recognise falls back to white. > **Info:** The outline is coloured by the client, so it is always one flat colour out of those sixteen. Hex codes and gradients do not apply here. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/npcs/npc-glow --- # πŸ—¨οΈ NPC Hologram The floating text above an NPC. The plugin has its own hologram system, so no external plugin is needed, and the look is set per NPC so every one can have its own style. PhoenixHolograms can draw it instead, see [Hologram Engine](../holograms/#hologram-engine). This is the hologram attached to an NPC. For text that stands on its own anywhere in the world, see [Holograms](../holograms/). ## Lines The text itself, one entry per line. `%proxy_online%` shows how many players are on the server picked under **Proxy Server**, vanished staff excluded, and PlaceholderAPI placeholders work too.

Hologram (Hologram)

## Height Offset Raises or lowers the whole hologram relative to the NPC.

Hologram (Height Offset)

## Line Gap The space left between two lines.

Hologram (Line Gap)

## Billboard How the text turns to face the player, whether it follows them fully, only horizontally, or stays fixed.

Hologram (Billboard)

## Hologram Scale How large the text is drawn.

Hologram (Hologram Scale)

## Text Opacity How solid the text is, from barely there to fully opaque.

Hologram (Text Opacity)

## Background Color The colour of the panel drawn behind the text.

Hologram (Background Color)

## See Through Whether the text stays visible through blocks.

Hologram (See Through)

## Shadow Whether a shadow is drawn behind the text.

Hologram (Shadow)

> **Info:** If the editor is awkward for a long hologram, each NPC is also a file of its own in the **npcs** folder and can be edited there. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/npcs/npc-hologram --- # πŸŽ›οΈ Player Settings > **Info:** The menu is configured in **menus/player-settings.yml** inside the PhoenixLobby folder. ## Player Settings Players can turn off some of the things the lobby displays to them. The choice is saved, so it is still there the next time they join. **/playersettings** opens a menu with the action bar, the bossbar, the scoreboard and the chat announcements. Each of them also has its own command.

Player Settings

Every toggle is a separate entry with its own slot, name, lore and a distinct item for the on and off state, as are the filler row and the close button. The file works like any other [menu](menus.md). In a toggle's name or its lore, `%state%` prints whether that setting is currently on or off, which is what the default lore uses to show the player where they stand. Rewriting the lore without it leaves the item reading the same in both states. ```yaml lore: - '&7Toggle whether you receive' - '&7action bar announcements.' - '' - '&fEnabled: %state%' ``` | Command | Description | | ------------------------ | ---------------------------------------- | | `/playersettings` | Opens the settings menu | | `/toggleactionbar` | Turns the action bar on or off | | `/togglebossbar` | Turns the bossbar on or off | | `/togglescoreboard` | Turns the scoreboard on or off | | `/toggleannouncements` | Turns the chat announcements on or off | | `/visibility` | Shows or hides the other players | All of these commands can be renamed in the plugin's configuration.
Commands config.yml ```yaml commands: visibility: alternative: visibility playersettings: alternative: playersettings toggleactionbar: alternative: toggleactionbar togglebossbar: alternative: togglebossbar togglescoreboard: alternative: togglescoreboard toggleannouncements: alternative: toggleannouncements ```
Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/player-settings --- # 🏠 Set Lobby Everything on this page feeds one location: the place a player lands when they join, when they respawn, when they run `/spawn`, and when the [World Protection](../modules/world-protection.md) void rule catches them. It is stored in **modules/join.yml**. ## Set the spawn Stand where you want players to arrive, facing the direction you want them to face, and run **/plobby setspawn**. The whole standing position is taken, including which way you are looking. ## Spawn Points

Editor > Settings > Spawn Points

### Default Spawn The location every player without a spawn group is sent to. It is the same value `/plobby setspawn` writes, so setting it in either place changes the other.

Default Spawn

Left-Click closes the menu and starts a short session to pick the location: walk to the spot you want and **Sneak + Left-Click** to take it. Typing anything in chat cancels the session, and it expires on its own after two minutes. Right-Click on the item clears the location instead. With no default spawn set and no group matching, the player is left where Minecraft would have put them. ## Spawn Groups A spawn group is a set of spawn points reserved for a permission, for example a dedicated arrival area for your VIPs. Click the lime pane on the Spawn Points screen to create one.

A spawn group

Groups are checked from top to bottom. The first one whose permission the player has **and** that has at least one spawn point wins, and one of its points is picked at random. A player matching no group gets the Default Spawn. > **Info:** A group with no spawn points in it is skipped rather than sending the player nowhere, so a half-finished group cannot break your spawn. ### Spawn points of a group Click the lime pane to add your current position as a point. Add more than one and the group starts spreading players between them.

A spawn point inside a group

| Click | Does | | ------------------ | --------------------------------------- | | Left-Click | Teleport you to that point | | Shift + Left-Click | Replace it with where you are standing | | Right-Click | Remove it | ### Identifier

Change Identifier

The name the group is stored under, `group_1` for the first one you create. It has to be unique and cannot contain a space. A dash is turned into an underscore, and anything that is not a letter, a digit or an underscore is dropped, so `VIP Zone` is refused for its space while `vip-zone` is accepted and saved as `vip_zone`. ### Permission

Change Permission

The permission a player needs to spawn on this group's points. A new group starts on `phoenixlobby.spawns.`, which you can replace with a permission your rank plugin already gives out. > **Warning:** Renaming the identifier does not rewrite the permission, so a group renamed from `group_1` to `vip` keeps asking for `phoenixlobby.spawns.group_1` until you change it here as well. A group left with an empty permission is skipped for everyone, which is a quiet way to park a group without deleting it. ### Delete

Delete Spawn Group

Removes the group and every spawn point in it, after a confirmation. The players who were using it fall back to the Default Spawn. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/featues/set-lobby --- # πŸ’Ž Features
LobbyNPCs & HologramsModules
Set the lobby spawn point.Create and edit an NPC in-game.On Join
Random spawn across multiple points.7 NPC engines to choose from.World Protection, with per world rules
Permission based spawn groups.Huge Item engineChat, with anti spam and a filter
Hotbar ItemsFlying Head engineAnnouncements
Grant the items only on chosen worlds.Entity engineAction Bar
Player SettingsCitizens engineBossbar
Music, with a disc menuFancy NPCs engineScoreboard
Maintenance modeModel Engine engineTablist
Customizable menus, and your own on top, with an in-game layout editorBetter Model engineMOTD, with random variants
Custom ActionsScale the model per NPC.PvP
Rich Text (MiniMessage) supportOffset the model height per NPC.Launch Pad
Support PlaceholderAPI for commands.NPC holograms, styled per NPC.Double Jump
Alternative CommandsStandalone holograms, with no NPC.Parkour, with rewards and placeholders
MySQL and SQlite DatabaseEdit and customize a hologram.Anti Bot
Easily editable filesClick a hologram to run actions.Anti VPN
Translatable into any languageClone a hologram.Anti WDL
One file per NPC and per hologram.Command Blocker, on execution and on tab completion
Show the online count of a chosen server.Logger, with a webhook per event
Alt Protection
## Proxy Available once the plugin is installed on the proxy as well as the game servers.
FeatureWhat it does
Multiple LobbiesRun several lobbies, each with its own settings and theme.
Automatic Lobby RedirectionSend the users to the lobby holding fewer players.
Queue SystemHold the users in a waiting line so a server is not overloaded.
Kick-ForwardSend the users back to a lobby after a kick from another server.
Server ShortcutsRegister one command per server, with aliases and a permission.
MOTDServe the network MOTD from the proxy.
Alt ProtectionLimit the accounts connecting from the same address, counted across the whole network.
## Suggestions If you notice something missing from our plugin, please let us know. Additionally, we are always open to suggestions from our users to add more content and improve the plugin. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/features --- # πŸ”Œ First Installation ## Installation 1. Download the jar from our website 2. Install PhoenixLobby-?.jar into your "Plugins" folder. 3. Start your server 4. Configure the plugin by yml file or by in-game editor `/phoenixlobby editor` 5. Restart the plugin **/plobby reload**

The in-game editor

## Proxy Installation 1. Install the same PhoenixLobby-?.jar into the "Plugins" folder of your Bungeecord or Velocity proxy. 2. Restart the proxy 3. Link your lobby servers by following the [Setup with Proxy](set-up/setup-with-proxy.md) page.

Download PhoenixLobby Popup

> **Info:** We strongly advise using the latest STABLE build of the plugin, as it includes the most recent bug fixes. ## Version Support The plugin supports Spigot, any Spigot forks, Paper, any Paper forks, Bungeecord, and Bungeecord forks, and Velocity. It should also work on any custom modded servers. > **Warning:** Folia is supported, but the support is still **experimental**. Test it on a staging server before putting it in front of your players, and report anything you run into.
Minecraft Version
26.xtrue
1.21.xtrue
1.20.4 - 1.20.6true
1.20.3 and olderfalse
Source: https://www.phoenixplugins.com/docs/phoenix-lobby/first-installation --- # 🎯 Action Bar > **Info:** This module is configured in **modules/actionbar.yml** inside the PhoenixLobby folder. ## Action Bar The action bar shows a rotating list of messages just above the hotbar, without taking up any chat space. Open it from **Editor > Modules > Action Bar**.

Modules (Action Bar)

## Messages With this option, you can change the messages shown in the action bar. Every entry is one message, and they are shown one after the other.

Action Bar (Messages)

## Delay With this option, you can change the time it takes to rotate to the next message.

Action Bar (Delay)

## Actions With this option, you can edit the actions that are executed every time the action bar rotates, which is handy for playing a sound alongside the message. Every [action type](../plugin-information/action-types.md) is available here.

Action Bar (Actions)

## Feature State With this option, you can turn the action bar off completely without clearing the messages.

Action Bar (Feature State)

> **Info:** Players can hide the action bar for themselves, see [Player Settings](../featues/player-settings.md). Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/action-bar --- # πŸ‘₯ Alt Protection > **Info:** This module is configured in **modules/alts.yml** inside the PhoenixLobby folder. ## Alt Protection Alt Protection counts the accounts connecting from the same address and turns away the ones over the limit. On the lobby the check runs before the player is fully connected, so a denied account never reaches the world, while the proxy kicks it the moment it logs in. Open it from **Editor > Modules > Alt Protection**. It works in two places. Without a proxy, the lobby counts the accounts on itself. On a proxy the alt protection lives on BungeeCord or Velocity, where it sees every server at once, and the lobby side stands down. Everyone with phoenixlobby.alts.bypass is let in no matter how many accounts share the address, phoenixlobby.alts.notify receives the alerts, and phoenixlobby.alts is needed to use the [command](#commands). Everything the module knows is also readable as [placeholders](alts/placeholders.md).

Modules (Alt Protection)

## Max Accounts Per Address With this option, you can set how many accounts may be connected from one address at the same time. The account that goes over the number is the one denied. A value of 0 turns the limit off and lets everyone in, while the alerts and the command keep working.

Alt Protection (Max Accounts Per Address)

## Count Offline Accounts With this option, you can count every account ever seen on the address instead of only the ones connected right now. It changes the meaning of the limit from how many accounts may play together to how many accounts may exist behind one address at all, so a player who leaves does not free a slot. It needs the history on.

Alt Protection (Count Offline Accounts)

## Whitelisted Addresses With this option, you can list the addresses that are never limited, which is what a shared connection such as a school or an internet cafe needs. Local and private addresses are counted like any other, so a test server on the same machine needs its address in here.

Alt Protection (Whitelisted Addresses)

## Exempt Players With this option, you can list the names or uuids that are never limited. It is the way to let one player keep a second account without handing out a permission.

Alt Protection (Exempt Players)

## History With this option, you can remember every address a player connects from, so the command still answers for players that are offline. With it off only the players connected right now are known, and looking up an address, a summary or unlinking an address has nothing to answer with.

Alt Protection (History)

## Forget After Days With this option, you can set how many days may pass without seeing an address before it is dropped from the history. Old addresses are cleaned out when the history is loaded on startup. A value of 0 keeps every address forever.

Alt Protection (Forget After Days)

## Save Interval Seconds With this option, you can set how often the remembered addresses are written to the disk. A lower value loses less if the server stops unexpectedly, a higher one writes less often. Nothing is written more often than every 20 seconds, and the file is written only when something changed.

Alt Protection (Save Interval Seconds)

## Alerts With this option, you can turn off every alert at once, without turning off the protection itself. The alerts go to the players with phoenixlobby.alts.notify, and to nobody else.

Alt Protection (Alerts)

## Alert On Blocked With this option, you can be told when an account is denied for going over the limit. The alert names the address and the accounts that were already connected.

Alt Protection (Alert On Blocked)

## Alert On Join With this option, you can be told when a player joins while another account is linked to their address, even when nobody is denied. Together with a limit of 0 it turns the module into a watchlist that never kicks.

Alt Protection (Alert On Join)

## Geolocation With this option, you can allow an address to be sent to a lookup service to find out where it comes from. Nothing is sent until the command asks for it. With it off the lookup answers nothing and no address ever leaves the server.

Alt Protection (Geolocation)

## Geolocation Api Url With this option, you can change the service the addresses are located with. It has to contain %ip%, which is replaced with the address being looked up, and it has to answer with the same `country`, `regionName`, `city` and `isp` fields the default service does. The editor refuses a url without the placeholder.

Alt Protection (Geolocation Api Url)

## Geolocation Cache Minutes With this option, you can set for how long a result is kept before the same address is looked up again. Free services usually allow only a handful of requests per minute, so a higher value is the way to stay under their limit.

Alt Protection (Geolocation Cache Minutes)

## Geolocation Timeout Millis With this option, you can set how long to wait for the lookup service before giving up. A failed lookup only means the location is unknown, it never denies anyone.

Alt Protection (Geolocation Timeout Millis)

## Feature State With this option, you can turn the module off completely. The command stops working, the alerts stop, and nobody is limited.

Alt Protection (Feature State)

> **Info:** The addresses are saved in the **alt-history.json** file inside the PhoenixLobby folder, so they survive a restart. On the proxy the same options live in its **config.yml** and the file is saved next to it instead. > **Warning:** phoenixlobby.alts.bypass has to be read before the player is connected, which only [LuckPerms](https://luckperms.net/) can answer. Without it installed the permission is ignored on the lobby and a warning is printed on startup, so use **Whitelisted Addresses** or **Exempt Players** instead. The proxy reads it on its own and needs nothing extra. ## Commands Every command needs phoenixlobby.alts. Which set answers depends on where the protection runs: on a network the proxy takes the command, and the lobby one replies that the proxy is in charge. **Lobby** | Command | Description | | ------------------------------------- | ------------------------------------------------------- | | `/alts ` | Lists the accounts linked to a player | | `/alts ip ` | Shows the addresses of a player, or who used an address | | `/alts info ` | Shows a summary of a player | | `/alts geo ` | Shows where an address is located | | `/alts remove
` | Unlinks an address from a player | The settings are reloaded by `/phoenixlobby reload`, or on their own when you change them in the editor. **Proxy** | Command | Description | | ------------------------------------- | ------------------------------------------------------- | | `/alts ` | Lists the accounts linked to a player | | `/alts ip ` | Shows the addresses of a player, or who used an address | | `/alts info ` | Shows a summary of a player | | `/alts geo ` | Shows where an address is located | | `/alts remove
` | Unlinks an address from a player | | `/alts reload` | Reloads the alt account settings | A player that has never been seen cannot be looked up, so the answers only reach as far back as the [History](#history) does. > **Info:** `/alts remove` only forgets an address. That frees a slot when **Count Offline Accounts** is on, and changes nothing otherwise, since the limit is then counting the accounts connected at that moment. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/alts --- # ⌨️ Commands Every command needs phoenixlobby.alts. Which set answers depends on where the protection runs: on a network the proxy takes the command, and the lobby one replies that the proxy is in charge. **Lobby** | Command | Description | | ------------------------------------- | ------------------------------------------------------- | | `/alts ` | Lists the accounts linked to a player | | `/alts ip ` | Shows the addresses of a player, or who used an address | | `/alts info ` | Shows a summary of a player | | `/alts geo ` | Shows where an address is located | | `/alts remove
` | Unlinks an address from a player | The settings are reloaded by `/phoenixlobby reload`, or on their own when you change them in the editor. **Proxy** | Command | Description | | ------------------------------------- | ------------------------------------------------------- | | `/alts ` | Lists the accounts linked to a player | | `/alts ip ` | Shows the addresses of a player, or who used an address | | `/alts info ` | Shows a summary of a player | | `/alts geo ` | Shows where an address is located | | `/alts remove
` | Unlinks an address from a player | | `/alts reload` | Reloads the alt account settings | A player that has never been seen cannot be looked up, so the answers only reach as far back as the [History](../alts.md#history) does. > **Info:** `/alts remove` only forgets an address. That frees a slot when **Count Offline Accounts** is on, and changes nothing otherwise, since the limit is then counting the accounts connected at that moment. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/alts/commands --- # πŸ” Placeholders These are [PlaceholderAPI](https://www.spigotmc.org/resources/placeholderapi.6245/) placeholders, so they work anywhere PlaceholderAPI is read, including the [scoreboard](../scoreboard.md), the [tablist](../tablist.md) and holograms. They all need the [Alt Protection](../alts.md) module enabled. Set **Max Accounts Per Address** to 0 if you want the numbers without anyone ever being denied. ## The player Every placeholder in this section reports on the player it is rendered for. | Placeholder | Returns | | ---------------------------------------- | ---------------------------------------------------------------- | | `%phoenixlobby_alts_has_alts%` | `true` / `false`, whether any other account is linked | | `%phoenixlobby_alts_count%` | How many other accounts are linked to this player | | `%phoenixlobby_alts_online_count%` | How many of them are connected right now | | `%phoenixlobby_alts_slots_left%` | How many more accounts may join from that address | | `%phoenixlobby_alts_names%` | The linked account names, up to three | | `%phoenixlobby_alts_addresses_count%` | How many addresses this player has been seen on | | `%phoenixlobby_alts_first_seen%` | When this player was first seen, as `2026-08-20 21:15` | | `%phoenixlobby_alts_last_seen%` | When this player was last seen | | `%phoenixlobby_alts_bypass%` | `true` / `false`, whether this player is exempt from the limit | | `%phoenixlobby_alts_address_masked%` | The address with its last two blocks hidden, as `87.213.x.x` | `has_alts` is the one to branch on when you want a marker next to a suspected alt in the tablist, since most plugins can switch on a `true` / `false` value. Over three linked accounts, `names` ends with **and 4 more**, taken from your translations file. `slots_left` returns -1 when the limit is off, so check that before showing it as a number. Adding a name reports on somebody else instead, which is what an admin menu or a hologram about another player needs. | Placeholder | Returns | | -------------------------------------- | -------------------------------------------------- | | `%phoenixlobby_alts_count_Notch%` | How many accounts are linked to that player | | `%phoenixlobby_alts_last_seen_Notch%` | When that player was last seen | Any of the placeholders above accepts a name this way. A player that has never been seen returns nothing. ## The server | Placeholder | Returns | | ---------------------------------------- | -------------------------------------------------------------- | | `%phoenixlobby_alts_enabled%` | `true` / `false`, whether the protection is running | | `%phoenixlobby_alts_managed_by%` | `lobby` or `proxy`, which side is in charge | | `%phoenixlobby_alts_limit%` | The configured accounts per address | | `%phoenixlobby_alts_tracked_players%` | How many players the history holds | | `%phoenixlobby_alts_tracked_addresses%` | How many addresses the history holds | | `%phoenixlobby_alts_blocked_total%` | How many joins were denied since the last restart | | `%phoenixlobby_alts_accounts_on_
%` | How many accounts have been seen on one address | ## Geolocation These report where an address is, using the same service and the same **Geolocation** options the `/alts geo` command uses. The field names match the ones the [Geolocation expansion](https://ecloud.placeholderapi.com/expansions/geolocation/) uses, so an existing setup can be moved over by renaming the prefix. | Placeholder | Example result | | ------------------------------------ | -------------------- | | `%phoenixlobby_geo_country%` | United States | | `%phoenixlobby_geo_countrycode%` | US | | `%phoenixlobby_geo_regionname%` | Virginia | | `%phoenixlobby_geo_region%` | VA | | `%phoenixlobby_geo_city%` | Chantilly | | `%phoenixlobby_geo_zip%` | 20151 | | `%phoenixlobby_geo_lat%` | 38.9036 | | `%phoenixlobby_geo_lon%` | -77.4512 | | `%phoenixlobby_geo_timezone%` | America/New\_York | | `%phoenixlobby_geo_isp%` | Example ISP | Each one also takes a name or an address, so `%phoenixlobby_geo_country_Notch%` and `%phoenixlobby_geo_country_1.2.3.4%` both work. > **Warning:** A location is never looked up while a placeholder is being rendered, because that would freeze the server for as long as the service takes to answer. The first request returns nothing and starts the lookup in the background, so the value appears a moment later and is then reused for as long as **Geolocation Cache Minutes** allows. Put these where a short delay on the first render is fine, not in a message a player reads once. > **Info:** The default lookup asks for every field above. A server that was set up before these placeholders existed still has the shorter list in its **Geolocation Api Url**, and the fields missing from it come back empty until they are added. ## Behind a proxy The proxy is the one counting accounts on a network, so the numbers come from there and cover every server at once rather than only this one. The lobby is sent them as they change, which means a lobby that has just started reports zeroes until the first update arrives. Two things stay on the lobby side. The geolocation placeholders are answered by the lobby from the address it sees, which needs ip forwarding turned on in your proxy, and `%phoenixlobby_alts_accounts_on_
%` only reads the lobby's own history. A player on another backend server cannot be looked up by name, since the lobby is only told about the players it is hosting. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/alts/placeholders --- # πŸ”” Announcements > **Info:** This module is configured in **modules/announcements.yml** inside the PhoenixLobby folder. ## Announcements Announcements are messages sent to the chat on a timer. Open them from **Editor > Modules > Announcements**, where you can create, edit and delete them.

Modules (Announcements)

## Add Announcement With this option, you can create a new announcement. Each one is its own entry, so the list rotates through all of them in order.

Announcements (Add Announcement)

Left-click an existing announcement to edit its lines, and every entry supports multiple lines so you can build a small block of text.

Announcements (Edit Announcement)

## Delay With this option, you can change how long it takes before the next announcement is broadcasted.

Announcements (Delay)

## Required Players With this option, you can change how many players have to be online before announcements are broadcasted at all, which keeps an empty lobby quiet.

Announcements (Required Players)

## Actions Every announcement also runs a list of [actions](../plugin-information/action-types.md) as it is sent, for each player who receives it. This is where the sound that plays with an announcement comes from: ```yaml actions: - '[SOUND] BLOCK_NOTE_BLOCK_PLING;1;1' ``` Change the sound by editing that line, or remove the entry to send announcements silently. The list is empty by default on the [action bar](action-bar.md) and the [bossbar](bossbar.md), which each have one of their own. Since these are ordinary actions, an announcement can do more than talk β€” play a title, run a command or open a menu alongside the message. ## Feature State With this option, you can turn announcements off completely without deleting them.

Announcements (Feature State)

Announcement In-Game

> **Info:** The same messages can also be shown above the hotbar, see [Action Bar](action-bar.md). Players can hide both for themselves, see [Player Settings](../featues/player-settings.md). Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/announcements --- # πŸ›‘οΈ Anti Bot > **Info:** This module is configured in **modules/anti-bot.yml** inside the PhoenixLobby folder. ## Anti Bot Anti Bot watches the connections reaching this server and locks the lobby down when they arrive faster than a real player rush would produce. On top of that it can limit how many accounts share an address, how fast an address may reconnect, and which usernames are accepted. Open it from **Editor > Modules > Anti Bot**. Every check runs before the player is fully connected, which is the only point where refusing a bot costs the server nothing. That also means none of these checks can be bypassed with a permission.

Modules (Anti Bot)

## Max Joins With this option, you can change how many connections are allowed inside the interval before the lockdown starts. A lower value reacts sooner, but it is also more likely to trigger on the rush that follows a restart or an announcement.

Anti Bot (Max Joins)

## Interval With this option, you can change the time window, in seconds, the connections are counted in. The counter restarts as soon as a window passes without the limit being reached, so a slow trickle of players never adds up to a lockdown.

Anti Bot (Interval)

## Lockdown Duration With this option, you can change how many seconds a lockdown lasts. While it is on, only players that have already joined this server before are let in, and every further connection above the rate pushes the end of the lockdown further away, so an attack that keeps going never gets a window.

Anti Bot (Lockdown Duration)

## Max Accounts Per IP With this option, you can change how many accounts may be online from the same address at the same time. Reconnecting on an account that is already counted does not take a second slot. A value of 0 turns the limit off.

Anti Bot (Max Accounts Per IP)

## Rejoin Delay With this option, you can change how many seconds an address has to wait between two connections. An address that stays quiet for 5 minutes is forgotten and starts fresh. A value of 0 turns the delay off.

Anti Bot (Rejoin Delay)

## Nickname Check With this option, you can turn on the username filter, which denies every name that does not match the pattern below. It is off by default because it also denies Bedrock and cracked usernames, which do not follow the vanilla naming rules.

Anti Bot (Nickname Check)

## Nickname Pattern With this option, you can change the regular expression every username has to match. The editor refuses a pattern it cannot compile. A broken pattern written straight into the file leaves the check off and is reported in the console instead.

Anti Bot (Nickname Pattern)

## Notify Admins With this option, you can choose whether administrators with phoenixlobby.alert.antibot are told when a lockdown starts and when it ends. The start is written to the console either way.

Anti Bot (Notify Admins)

## Feature State With this option, you can turn Anti Bot off completely without clearing the rest of the settings.

Anti Bot (Feature State)

> **Warning:** **Max Accounts Per IP** and **Rejoin Delay** work with the address that reaches this server. Behind a proxy every connection carries the proxy address instead, so leave both at 0 until the real one is forwarded with `ip_forward` on BungeeCord, or `player-info-forwarding-mode` on Velocity. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/anti-bot --- # 🌐 Anti VPN > **Info:** This module is configured in **modules/anti-vpn.yml** inside the PhoenixLobby folder. ## Anti VPN Anti VPN looks up the address of every player that connects and denies the ones that come from a vpn, a proxy or a datacenter. The lookup happens before the player is fully connected, so a denied player never reaches the world. Open it from **Editor > Modules > Anti VPN**. Local and private addresses are never looked up, which is what a test server on the same machine needs.

Modules (Anti VPN)

## Api Url With this option, you can change the service the addresses are checked against. It has to contain %ip%, which is replaced with the address that is connecting, and it has to answer with the same `proxy` and `hosting` fields the default service does. The editor refuses a url without the placeholder.

Anti VPN (Api Url)

## Block Proxies With this option, you can choose whether addresses the service flags as a vpn or a proxy are denied.

Anti VPN (Block Proxies)

## Block Hosting With this option, you can choose whether addresses owned by a datacenter or a hosting provider are denied. It is off by default, since some mobile carriers and school networks answer from ranges that are flagged this way.

Anti VPN (Block Hosting)

## Kick On Lookup Failure With this option, you can choose what happens when the service cannot be reached, answers with an error, or takes longer than the timeout. Off lets the player in, on denies them. The failure is written to the console either way.

Anti VPN (Kick On Lookup Failure)

## Cache Minutes With this option, you can change how long a result is kept before the same address is looked up again. A higher value spares the service on a busy lobby, at the cost of reacting later when an address changes owner.

Anti VPN (Cache Minutes)

## Timeout Millis With this option, you can change how long to wait for the service before giving up. A player whose address is not cached yet waits for this before being let in, so a high value slows the join down when the service is having a bad day.

Anti VPN (Timeout Millis)

## Whitelisted Addresses With this option, you can list the addresses that are never checked. Entries have to be the full address, ranges are not matched.

Anti VPN (Whitelisted Addresses)

## Notify Admins With this option, you can choose whether administrators with phoenixlobby.alert.antivpn are told, with the name and the address, when someone is denied.

Anti VPN (Notify Admins)

## Feature State With this option, you can turn Anti VPN off completely without clearing the rest of the settings.

Anti VPN (Feature State)

> **Warning:** phoenixlobby.bypass.antivpn has to be read before the player is connected, which only [LuckPerms](https://luckperms.net/) can answer. Without it installed the permission is ignored and a warning is printed on startup, so use **Whitelisted Addresses** instead. > **Info:** Behind a proxy this only works when the real player address is forwarded, so make sure `ip_forward` is on with BungeeCord, or `player-info-forwarding-mode` with Velocity. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/anti-vpn --- # πŸ—ΊοΈ Anti WDL > **Info:** This module is configured in **modules/anti-wdl.yml** inside the PhoenixLobby folder. ## Anti WDL A world downloader mod announces itself to the server as soon as the player joins, and asks whether it is allowed to save the world. Anti WDL answers that it is not, which turns the mod off for that player. Open it from **Editor > Modules > Anti WDL**. Players with phoenixlobby.bypass.antiwdl are left alone, which is what a builder taking a copy of the lobby needs. Nothing is kicked or cancelled, so a player that ignores the answer with a patched mod is still caught and reported, but not stopped.

Modules (Anti WDL)

## Notify Admins With this option, you can choose whether administrators with phoenixlobby.alert.antiwdl are told which player joined with the mod. The attempt is also sent to the [logger](logger.md) either way.

Anti WDL (Notify Admins)

## Feature State With this option, you can turn Anti WDL off completely.

Anti WDL (Feature State)

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/anti-wdl --- # πŸ“Ά Bossbar > **Info:** This module is configured in **modules/bossbar.yml** inside the PhoenixLobby folder. ## Bossbar A boss bar is the coloured bar drawn across the top of the screen. Every entry in this module is a bar of its own, with its own colour, style, rotation delay and list of messages, and they are all shown at the same time, stacked one under the other. Open it from **Editor > Modules > Boss Bar**.

Modules (Boss Bar)

## The bars Each bar in the list opens its own settings, covered under [Edit a Boss Bar](#edit-a-boss-bar). The green pane at the end of the row adds another one, and shift + right-clicking a bar deletes it.

Boss Bar (Boss Bar #1)

## Actions With this option, you can edit the actions that are executed every time any bar rotates to its next message, which is what a sound playing alongside the change is doing. They run for every player currently seeing the bars. Every [action type](../plugin-information/action-types.md) is available here.

Boss Bar (Actions)

## Feature State With this option, you can turn every bar off at once without clearing the list.

Boss Bar (Feature State)

Bossbar - In-Game

> **Info:** Players can hide the bars for themselves with [`/togglebossbar`](../featues/player-settings.md), and the bars are removed as soon as somebody walks into a world the plugin is not active in. ## Edit a Boss Bar Clicking a bar in **Editor > Modules > Boss Bar** opens its own settings. Everything here applies to that one bar, so two bars can rotate at different speeds, in different colours, at the same time. ### Color With this option, you can change the colour of the bar. Seven are available: Pink, Blue, Red, Green, Yellow, Purple and White. They are fixed by Minecraft, so a hex colour is not possible here.

Edit a Boss Bar (Color)

### Style With this option, you can change how many segments the bar is split into. Solid draws it as one unbroken bar, and Segmented 6, Segmented 10, Segmented 12 and Segmented 20 cut it into that many notches.

Edit a Boss Bar (Style)

### Delay With this option, you can change how many seconds a message stays up before the bar moves to the next one.

Edit a Boss Bar (Delay)

### Messages With this option, you can edit the messages this bar cycles through, in the order they are listed. PlaceholderAPI placeholders work here.

Edit a Boss Bar (Messages)

> **Info:** A bar left with a single message never rotates, so **Delay** and the module's [actions](#actions) do nothing for it. That is the way to keep one line permanently on screen. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/bossbar --- # πŸ–ŒοΈ Edit a Boss Bar ## Edit a Boss Bar Clicking a bar in **Editor > Modules > Boss Bar** opens its own settings. Everything here applies to that one bar, so two bars can rotate at different speeds, in different colours, at the same time. ## Color With this option, you can change the colour of the bar. Seven are available: Pink, Blue, Red, Green, Yellow, Purple and White. They are fixed by Minecraft, so a hex colour is not possible here.

Edit a Boss Bar (Color)

## Style With this option, you can change how many segments the bar is split into. Solid draws it as one unbroken bar, and Segmented 6, Segmented 10, Segmented 12 and Segmented 20 cut it into that many notches.

Edit a Boss Bar (Style)

## Delay With this option, you can change how many seconds a message stays up before the bar moves to the next one.

Edit a Boss Bar (Delay)

## Messages With this option, you can edit the messages this bar cycles through, in the order they are listed. PlaceholderAPI placeholders work here.

Edit a Boss Bar (Messages)

> **Info:** A bar left with a single message never rotates, so **Delay** and the module's [actions](../bossbar.md#actions) do nothing for it. That is the way to keep one line permanently on screen. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/bossbar/edit-boss-bar --- # πŸ’¬ Chat > **Info:** This module is configured in **modules/chat.yml** inside the PhoenixLobby folder. ## Chat The chat module handles how messages look and how often they can be sent. Open it from **Editor > Modules > Chat**.

Modules (Chat)

The checks that block a message before it reaches the chat are [Anti Spam](#anti-spam) and [Chat Filter](#chat-filter). ## Format With this option, you can change the format every chat message is built with. Use %display\_name% for the sender and %message% for what they typed.

Chat (Format)

Chat Format - In-Game

## Cooldown With this option, you can change the cooldown between messages, which acts as a slow mode.

Chat (Cooldown)

## Feature State With this option, you can turn the chat handling off, which leaves messages to whatever other plugin you use.

Chat (Feature State)

## Anti Spam Anti Spam blocks the messages that annoy the rest of your players. Each check can be turned off on its own in **Editor > Modules > Chat > Anti Spam**. Players with `phoenixlobby.bypass.antispam` are not checked.

Chat (Anti Spam)

### Repeated Messages Blocks a message that is too similar to the last ones the player sent. **Repeated Messages History** is how many of their previous messages are compared, and **Similarity Percentage** is how close a message has to be before it counts as a repeat.

Anti Spam (Block Repeated Messages)

Anti Spam (Repeated Messages History)

Anti Spam (Similarity Percentage)

### Caps Blocks a message with too many capital letters. **Caps Minimum Length** keeps short messages out of the check, and **Caps Percentage** is how much of the message has to be uppercase before it is blocked.

Anti Spam (Block Caps)

Anti Spam (Caps Minimum Length)

Anti Spam (Caps Percentage)

### Character Flood Blocks a message with the same character repeated too many times, with **Max Repeated Characters** setting the limit.

Anti Spam (Block Character Flood)

Anti Spam (Max Repeated Characters)

### Feature State Turns every Anti Spam check off at once.

Anti Spam (Feature State)

## Chat Filter The chat filter blocks the messages that match one of your patterns. The two default patterns block links and ip addresses. Open it from **Editor > Modules > Chat > Chat Filter**. Players with `phoenixlobby.bypass.chatfilter` are not checked.

Chat (Chat Filter)

### Patterns The list of patterns a message is checked against.

Chat Filter (Patterns)

### Censor Matches Turn this on to replace the matched part with the censor character instead of blocking the whole message. **Censor Character** is what the match is replaced with.

Chat Filter (Censor Matches)

Chat Filter (Censor Character)

### Case Insensitive With this on, a pattern matches no matter how the message is capitalised.

Chat Filter (Case Insensitive)

### Feature State Turns the chat filter off without clearing the patterns.

Chat Filter (Feature State)

> **Info:** The patterns are regular expressions, so a plain word works as well as a full pattern. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/chat --- # πŸ›‘ Anti Spam > **Info:** This module is configured in **modules/chat.yml** inside the PhoenixLobby folder. ## Anti Spam Anti Spam blocks the messages that annoy the rest of your players. Each check can be turned off on its own in **Editor > Modules > Chat > Anti Spam**. Players with `phoenixlobby.bypass.antispam` are not checked.

Chat (Anti Spam)

## Repeated Messages Blocks a message that is too similar to the last ones the player sent. **Repeated Messages History** is how many of their previous messages are compared, and **Similarity Percentage** is how close a message has to be before it counts as a repeat.

Anti Spam (Block Repeated Messages)

Anti Spam (Repeated Messages History)

Anti Spam (Similarity Percentage)

## Caps Blocks a message with too many capital letters. **Caps Minimum Length** keeps short messages out of the check, and **Caps Percentage** is how much of the message has to be uppercase before it is blocked.

Anti Spam (Block Caps)

Anti Spam (Caps Minimum Length)

Anti Spam (Caps Percentage)

## Character Flood Blocks a message with the same character repeated too many times, with **Max Repeated Characters** setting the limit.

Anti Spam (Block Character Flood)

Anti Spam (Max Repeated Characters)

## Feature State Turns every Anti Spam check off at once.

Anti Spam (Feature State)

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/chat/anti-spam --- # πŸ”Ž Chat Filter > **Info:** This module is configured in **modules/chat.yml** inside the PhoenixLobby folder. ## Chat Filter The chat filter blocks the messages that match one of your patterns. The two default patterns block links and ip addresses. Open it from **Editor > Modules > Chat > Chat Filter**. Players with `phoenixlobby.bypass.chatfilter` are not checked.

Chat (Chat Filter)

## Patterns The list of patterns a message is checked against.

Chat Filter (Patterns)

## Censor Matches Turn this on to replace the matched part with the censor character instead of blocking the whole message. **Censor Character** is what the match is replaced with.

Chat Filter (Censor Matches)

Chat Filter (Censor Character)

## Case Insensitive With this on, a pattern matches no matter how the message is capitalised.

Chat Filter (Case Insensitive)

## Feature State Turns the chat filter off without clearing the patterns.

Chat Filter (Feature State)

> **Info:** The patterns are regular expressions, so a plain word works as well as a full pattern. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/chat/chat-filter --- # πŸ’¬ Chat > **Info:** This module is configured in **modules/chat.yml** inside the PhoenixLobby folder. ## Chat The chat module handles how messages look and how often they can be sent. Open it from **Editor > Settings > Chat**.

Settings (Chat)

The checks that block a message before it reaches the chat have their own pages: * Anti Spam - [Click Here](anti-spam.md) * Chat Filter - [Click Here](chat-filter.md) ## Format With this option, you can change the format every chat message is built with. Use %display\_name% for the sender and %message% for what they typed.

Chat (Format)

Chat Format - In-Game

## Cooldown With this option, you can change the cooldown between messages, which acts as a slow mode.

Chat (Cooldown)

## Feature State With this option, you can turn the chat handling off, which leaves messages to whatever other plugin you use.

Chat (Feature State)

Chat Config ```yaml enabled: true format: Β§7%display_name% Β§8> Β§f%message% cooldown-seconds: 2 ```
Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/chat --- # πŸ›‘ Anti Spam > **Info:** This module is configured in **modules/chat.yml** inside the PhoenixLobby folder. ## Anti Spam Anti Spam blocks the messages that annoy the rest of your players. Each check can be turned off on its own in **Editor > Settings > Chat > Anti Spam**. Players with `phoenixlobby.bypass.antispam` are not checked.

Chat (Anti Spam)

## Repeated Messages Blocks a message that is too similar to the last ones the player sent. **Repeated Messages History** is how many of their previous messages are compared, and **Similarity Percentage** is how close a message has to be before it counts as a repeat.

Anti Spam (Block Repeated Messages)

Anti Spam (Repeated Messages History)

Anti Spam (Similarity Percentage)

## Caps Blocks a message with too many capital letters. **Caps Minimum Length** keeps short messages out of the check, and **Caps Percentage** is how much of the message has to be uppercase before it is blocked.

Anti Spam (Block Caps)

Anti Spam (Caps Minimum Length)

Anti Spam (Caps Percentage)

## Character Flood Blocks a message with the same character repeated too many times, with **Max Repeated Characters** setting the limit.

Anti Spam (Block Character Flood)

Anti Spam (Max Repeated Characters)

## Feature State Turns every Anti Spam check off at once.

Anti Spam (Feature State)

Anti Spam Config ```yaml anti-spam: enabled: true block-repeated-messages: true repeated-messages-history: 3 similarity-percentage: 90 block-caps: true caps-minimum-length: 8 caps-percentage: 70 block-character-flood: true max-repeated-characters: 5 ```
Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/chat-resync/anti-spam --- # πŸ”Ž Chat Filter > **Info:** This module is configured in **modules/chat.yml** inside the PhoenixLobby folder. ## Chat Filter The chat filter blocks the messages that match one of your patterns. The two default patterns block links and ip addresses. Open it from **Editor > Settings > Chat > Chat Filter**. Players with `phoenixlobby.bypass.chatfilter` are not checked.

Chat (Chat Filter)

## Patterns The list of patterns a message is checked against.

Chat Filter (Patterns)

## Censor Matches Turn this on to replace the matched part with the censor character instead of blocking the whole message. **Censor Character** is what the match is replaced with.

Chat Filter (Censor Matches)

Chat Filter (Censor Character)

## Case Insensitive With this on, a pattern matches no matter how the message is capitalised.

Chat Filter (Case Insensitive)

## Feature State Turns the chat filter off without clearing the patterns.

Chat Filter (Feature State)

Chat Filter Config ```yaml filter: enabled: true case-insensitive: true censor-matches: false censor-character: '*' patterns: - (?:https?://)?(?:[\w-]+\.)+(?:com|net|org|gg|io|me|tv|xyz)(?:/\S*)? - \b(?:\d{1,3}\.){3}\d{1,3}(?::\d{1,5})?\b ```
> **Info:** The patterns are regular expressions, so a plain word works as well as a full pattern. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/chat-resync/chat-filter --- # πŸ’¬ Chat > **Info:** This module is configured in **modules/chat.yml** inside the PhoenixLobby folder. ## Chat The chat module handles how messages look and how often they can be sent. Open it from **Editor > Settings > Chat**.

Settings (Chat)

The checks that block a message before it reaches the chat have their own pages: * Anti Spam - [Click Here](anti-spam.md) * Chat Filter - [Click Here](chat-filter.md) ## Format With this option, you can change the format every chat message is built with. Use %display\_name% for the sender and %message% for what they typed.

Chat (Format)

Chat Format - In-Game

## Cooldown With this option, you can change the cooldown between messages, which acts as a slow mode.

Chat (Cooldown)

## Feature State With this option, you can turn the chat handling off, which leaves messages to whatever other plugin you use.

Chat (Feature State)

Chat Config ```yaml enabled: true format: Β§7%display_name% Β§8> Β§f%message% cooldown-seconds: 2 ```
Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/chat-resync --- # 🚫 Command Blocker > **Info:** This module is configured in **modules/command-blocker.yml** inside the PhoenixLobby folder. ## Command Blocker The command blocker stops players from running the commands you list. It also hides them from the tab completion, so a blocked command is never suggested while typing and never completes its arguments either. Open it from **Editor > Modules > Command Blocker**. Players with phoenixlobby.bypass.commandblocker keep using every command. The blocker only applies inside the [lobby worlds](world-protection.md), so a player that walks into a world the plugin is not active in gets the commands back.

Modules (Command Blocker)

## Blocked Commands With this option, you can edit the list of blocked commands. Entries are matched against the command name only, so the arguments do not matter, and the case does not either. A `*` stands for anything, so `bukkit:*` blocks every command of that namespace and `world*` blocks `worldedit` along with `worldguard`. An entry without a namespace also catches the namespaced form of the same command, so `plugins` blocks `bukkit:plugins` too. The opposite is not true: `bukkit:plugins` leaves the plain `plugins` alone.

Command Blocker (Blocked Commands)

## Feature State With this option, you can turn the command blocker off completely without clearing the list.

Command Blocker (Feature State)

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/command-blocker --- # πŸ•ŠοΈ Double Jump > **Info:** This module is configured in **modules/double-jump.yml** inside the PhoenixLobby folder. ## Double Jump With Double Jump, players press space twice to launch themselves forward, similar to a jetpack. The jump is given back as soon as they land on a solid block. Open it from **Editor > Modules > Double Jump**.

Modules (Double Jump)

## Cooldown With this option, you can change how many seconds a player has to wait before jumping again.

Double Jump (Cooldown)

## Forward Power With this option, you can change how far the player is thrown, in the direction they are looking. A higher value sends them further.

Double Jump (Forward Power)

## Up Power With this option, you can change how high the player is thrown.

Double Jump (Up Power)

> **Info:** Both powers are capped at 4. Higher values are ignored. ## Effect Type With this option, you can change the particle effect that follows the player after the jump. Five effects are available: None, Spiral, Double Spiral, Noise and Trail.

Double Jump (Effect Type)

## Actions With this option, you can edit the actions that are executed every time a player double jumps, which is handy for playing a sound alongside the launch. Every [action type](../plugin-information/action-types.md) is available here.

Double Jump (Actions)

## Feature State With this option, you can turn the double jump off completely without clearing the rest of the settings.

Double Jump (Feature State)

## Permission By default every player can double jump. Turning the permission requirement on in the config limits it to players with phoenixlobby.doublejump.use. Players with phoenixlobby.bypass.doublejump always wait 1 second instead of the configured cooldown.

Double Jump - In-Game

> **Warning:** Double jump is skipped for players in creative or spectator mode, for players kept flying by [Fly on Join](join-actions.md), and while fighting if the [PvP](lobby-pvp.md) restrictions disable it. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/double-jump --- # πŸ—¨οΈ On Join > **Info:** This module is configured in **modules/join-actions.yml** inside the PhoenixLobby folder. ## Skip On World Change Everything on this page normally runs when a player arrives in the lobby, and a player walking back in from another world counts as arriving. With this option on β€” and it is on by default β€” none of it runs unless the player has actually just connected to the server. Turn it off when the lobby should reset a player every time they step back into it, for example to hand the hotbar items back after a trip into a survival world.

On Join (Skip On World Change)

## Teleport Spawn Send the player to the spawn point when they connect. With no spawn point set the player lands wherever the server put them. Spawn points and permission-based spawn groups are covered in [Set Lobby](../featues/set-lobby.md).

On Join (Teleport Spawn)

## Teleport Spawn: Same World Only Restrict that teleport to players who are already in the same world as the spawn point. Use it when the server also holds worlds the lobby should not pull players out of, such as a survival world behind a portal.

On Join (Teleport Spawn: Same World Only)

## Clear Inventory Empty the player's inventory on join, before the hotbar items are given out.

On Join (Clear Inventory)

## Restore Inventory Keep the inventory a player carried into a disabled world and hand it back when they return to it. Nothing is stored while this is off, so turning it on does not recover inventories that were already cleared.

On Join (Restore Inventory)

## Remove Effects Strip every active potion effect on join. The player's health is restored to full either way.

On Join (Remove effects)

## Lobby Items Give the player the hotbar items. The items themselves, and the worlds they are handed out in, are covered in [Hotbar Items](../featues/hotbar-items.md).

On Join (Lobby Items)

## Stand Down In Duels Worlds Leave the lobby items out of the worlds where the PhoenixDuels Lobby Items add-on hands out its own hotbar, and skip Clear Inventory there, so the two hotbars never overwrite each other. A player walking into one of those worlds loses the lobby items and gets them back on the way out. It is on by default, and has no effect without that add-on. ## Fly on Join Put the player straight into flight. It is off by default, and the permission next to it gates who gets it. An empty permission gives it to everyone. Players joining a disabled world never get it.

On Join (Fly on Join)

## On Join Firework Launch a firework where the player lands. The shape, the power, the trail and flicker, the colours and whether it is limited to a first join are all set behind it. The firework is spawned at the player's own position once they are on the ground, so with **Teleport Spawn** enabled it goes off at the spawn point rather than where the server first dropped them. A player landing in a disabled world gets nothing, and walking back out of a disabled world into a lobby world launches it again.

On Join (Edit Firework)

### Feature State Turn the firework on or off. Everything below it stays saved while it is off. ### First Join Only Limit the firework to a player's very first connection, so returning players never see one. With this on the firework is also skipped when a player walks out of a disabled world, since that is not a first join.

On Join Firework (First Join Only)

### Type The shape the burst takes. **Ball** and **Ball Large** are the round bursts, **Star** and **Creeper** are the shaped ones, and **Burst** is the flat spray.

On Join Firework (Type)

### Power How long the rocket climbs before it bursts. A higher value sends the burst further above the player's head, and 0 makes it go off at their feet.

On Join Firework (Power)

### Flicker Add the twinkle that keeps the burst sparking after it opens.

On Join Firework (Flicker)

### Trail Add the tail the particles drag behind them as they fall.

On Join Firework (Trail)

### Colors The colours the burst is made of. They are picked from a named list far wider than the sixteen dyes, so a burst can be built out of shades such as Crimson or Cornflower Blue. Every colour in the list appears in the same burst, and a list left empty launches the rocket with no colour of its own.

On Join Firework (Colors)

## First Join Actions Actions that run once, the first time a player ever connects. Use them for a welcome broadcast or for handing out a starting rank. Every action type is listed in [Action Types](../plugin-information/action-types.md).

On Join (First Join Actions)

## Every Join Actions Actions that run on every connect, including the first one, after the first join actions.

On Join (Every Join Actions)

## Join and Quit Messages What the rest of the server sees when a player connects or disconnects, and how to give a rank its own pair. The vanilla connect and disconnect messages are always suppressed. What the server sees instead comes from the actions below, so a group can broadcast a line, play a sound, or do both.

On Join (Join & Quit Messages)

> **Warning:** These only fire on a server that is not connected to a proxy running PhoenixLobby. Once it is, they stand down and the proxy announces instead, with [Join and Leave Messages](../set-up/setup-with-proxy.md#join-and-leave-messages). ### Message Groups **default** is the pair everyone gets. Add a group next to it to give a rank its own, then set its permission. Groups are checked in the order they appear and the first one the player holds wins, so put the rarest rank first. A player holding none of them falls back to **default**.

Join & Quit Messages (Message Group)

### Join Actions What runs when a player of this group connects. An empty list announces nothing, which is how you silence a rank's connect message without silencing everyone's. Every action type is listed in [Action Types](../plugin-information/action-types.md).

Message Group (Join Actions)

### Quit Actions The same, for when the player disconnects. The player is already gone by the time these run, so reach the rest of the server with a broadcast rather than a message.

Message Group (Quit Actions)

### Permission Which permission a player needs for this group. Left empty it falls back to `phoenixlobby.messages.`, so a group named **vip** answers to `phoenixlobby.messages.vip` on its own. The **default** group has no permission, because it is what everyone else gets.

Message Group (Permission)

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/join-actions --- # πŸ“’ Join & Quit Messages > **Info:** This module is configured in **modules/join-actions.yml** inside the PhoenixLobby folder. The vanilla connect and disconnect messages are always suppressed. What the server sees instead comes from the actions below, so a group can broadcast a line, play a sound, or do both. > **Warning:** These only fire on a server that is not connected to a proxy running PhoenixLobby. Once it is, they stand down and the proxy announces instead, with [Join and Leave Messages](../../set-up/setup-with-proxy/join-and-leave-messages.md).

On Join (Join & Quit Messages)

## Message Groups **default** is the pair everyone gets. Add a group next to it to give a rank its own, then set its permission. Groups are checked in the order they appear and the first one the player holds wins, so put the rarest rank first. A player holding none of them falls back to **default**.

Join & Quit Messages (Message Group)

## Join Actions What runs when a player of this group connects. An empty list announces nothing, which is how you silence a rank's connect message without silencing everyone's. Every action type is listed in [Action Types](../../plugin-information/action-types.md).

Message Group (Join Actions)

## Quit Actions The same, for when the player disconnects. The player is already gone by the time these run, so reach the rest of the server with a broadcast rather than a message.

Message Group (Quit Actions)

## Permission Which permission a player needs for this group. Left empty it falls back to `phoenixlobby.messages.`, so a group named **vip** answers to `phoenixlobby.messages.vip` on its own. The **default** group has no permission, because it is what everyone else gets.

Message Group (Permission)

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/join-actions/join-quit-messages --- # πŸŽ† On Join Firework > **Info:** This module is configured in **modules/join-actions.yml** inside the PhoenixLobby folder. The firework is spawned at the player's own position once they are on the ground, so with **Teleport Spawn** enabled it goes off at the spawn point rather than where the server first dropped them. A player landing in a disabled world gets nothing, and walking back out of a disabled world into a lobby world launches it again. ## Feature State Turn the firework on or off. Everything below it stays saved while it is off. ## First Join Only Limit the firework to a player's very first connection, so returning players never see one. With this on the firework is also skipped when a player walks out of a disabled world, since that is not a first join.

On Join Firework (First Join Only)

## Type The shape the burst takes. **Ball** and **Ball Large** are the round bursts, **Star** and **Creeper** are the shaped ones, and **Burst** is the flat spray.

On Join Firework (Type)

## Power How long the rocket climbs before it bursts. A higher value sends the burst further above the player's head, and 0 makes it go off at their feet.

On Join Firework (Power)

## Flicker Add the twinkle that keeps the burst sparking after it opens.

On Join Firework (Flicker)

## Trail Add the tail the particles drag behind them as they fall.

On Join Firework (Trail)

## Colors The colours the burst is made of. They are picked from a named list far wider than the sixteen dyes, so a burst can be built out of shades such as Crimson or Cornflower Blue. Every colour in the list appears in the same burst, and a list left empty launches the rocket with no colour of its own.

On Join Firework (Colors)

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/join-actions/on-join-firework --- # πŸš€ Launch Pad > **Info:** This module is configured in **modules/launchpad.yml** inside the PhoenixLobby folder. ## Launch Pad A launch pad is built out of two blocks: the one the player walks onto, and the one directly underneath it. Stepping on that pair throws the player forward, in the direction they are looking, with a particle effect trailing behind them. There is nothing to place or register, so every pair of those two blocks in the lobby is a pad. Open it from **Editor > Modules > Launch Pads**. Half a second has to pass before the same player can be launched again, which stops a pad from firing repeatedly while they are still standing on it.

Modules (Launch Pads)

## Forward Power With this option, you can change how far the player is thrown, in the direction they are looking. A higher value sends them further.

Launch Pad (Forward Power)

## Up Power With this option, you can change how high the player is thrown.

Launch Pad (Up Power)

> **Info:** Both powers are capped at 4. Higher values are ignored. ## Change Top Block Material With this option, you can change the block the player walks onto. Drag the block you want out of your inventory and drop it onto the slot.

Launch Pad (Change Top Block Material)

## Change Bottom Block Material With this option, you can change the block that has to sit directly under the top one. It is what keeps an ordinary slime block somewhere else in the lobby from launching anybody.

Launch Pad (Change Bottom Block Material)

> **Info:** A pressure plate or a slab works as the top block, so a pad can be made to sit flush with the floor instead of standing a block above it. ## Effect Type With this option, you can change the particle effect that follows the player after the launch. Five effects are available: None, Spiral, Double Spiral, Noise and Trail.

Launch Pad (Effect Type)

## Actions With this option, you can edit the actions that are executed every time a player is launched, which is handy for playing a sound alongside it. Every [action type](../plugin-information/action-types.md) is available here.

Launch Pad (Actions)

## Feature State With this option, you can turn launch pads off completely without clearing the rest of the settings.

Launch Pad (Feature State)

> **Warning:** Pads do not fire in a world the plugin is not active in, and they are skipped while fighting if the [PvP](lobby-pvp.md) restrictions disable them. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/launch-pad --- # βš”οΈ PvP > **Info:** This module is configured in **modules/pvp.yml** inside the PhoenixLobby folder. The PvP item and its kit live in **lobby-items.yml** instead, under `pvp-mode`. ## PvP PvP lets your players fight each other without leaving the lobby. A player enters it by holding the PvP item in their hotbar, and leaves it by holding the leave item that replaces it. Entering and leaving both run a countdown first, so a player cannot escape a fight instantly. While in PvP mode their items are stored away and the [PvP kit](#pvp-kit) is given instead, and they get everything back the moment they leave. Open it from **Editor > Modules > PvP Mode**.

Modules (PvP Mode)

## Item Slot With this option, you can change which hotbar slot holds the PvP item. A value of -1 hides the item entirely, which is how you keep the mode available without putting it in everybody's hotbar.

PvP Mode (Item Slot)

## Countdown Seconds With this option, you can change how many seconds pass before entering or leaving takes effect. A value of 0 makes the switch instant, which also removes the delay a player would otherwise need to escape a fight.

PvP Mode (Countdown Seconds)

## Sneak To Confirm With this option, you can ask the player to sneak once the countdown has finished before they actually enter. It stops somebody from being dropped into a fight by a misclick.

PvP Mode (Sneak To Confirm)

## Hold To Activate With this option, you can choose how the PvP item works. Turned on, selecting the item's slot starts the countdown and switching away cancels it. Turned off, players right-click the item instead. Change the item's name and lore to match, since they tell players which one to do. ## Leave On Unequip With this option, a player leaves PvP mode by putting their gear away instead of using the leave item. Switching to a slot that holds no [PvP kit](#pvp-kit) item, such as an empty slot, starts the leave countdown, and switching back to any kit item cancels it. Switching between kit items keeps the player in the fight. It is off by default and has no editor button, so set it in **modules/pvp.yml**: ```yaml leave-on-unequip: true ``` ## Join Actions With this option, you can edit the actions that run the moment a player enters PvP mode. Every [action type](../plugin-information/action-types.md) is available here.

PvP Mode (Join Actions)

## Leave Actions With this option, you can edit the actions that run when a player leaves PvP mode.

PvP Mode (Leave Actions)

## PvP Kit > **Info:** The kit is stored in **lobby-items.yml** under `pvp-mode.kit`, not in modules/pvp.yml. The kit is the gear a player is handed for the duration of a fight. Their own items are stored away when they enter and given back untouched when they leave, so nothing they were carrying is at risk. Open it from **Editor > Modules > PvP Mode > PvP Kit**.

PvP Mode (PvP Kit)

The screen is the inventory itself rather than a list of options. Drag an item from your own inventory onto a slot to set it, and the layout you build is exactly what players receive: the top row holds the armour slots, and the rest is the hotbar and main inventory.

PvP Mode (Kit)

#### Import From Inventory Rather than placing the kit item by item, gear yourself up the way you want players to be armed and click **Import From Inventory**. The kit is replaced with exactly what you are carrying, armour and offhand included. #### Clear All Items Empties the kit in one click. A kit with nothing in it means players enter PvP mode with an empty inventory, which is what a server running its own kit plugin wants. > **Info:** The kit ships with a netherite sword and a full set of netherite armour, falling back to diamond on a server where netherite does not exist. > **Warning:** Anything a player picks up during a fight is dropped when the kit is taken back off them. Do not put anything in the kit you would mind seeing on the floor. ## Enabled Worlds By default PvP mode can be entered anywhere the plugin is active. This list narrows it to the worlds you pick, so a hub world can stay peaceful while a separate arena world allows fighting. Open it from **Editor > Modules > PvP Mode > Enabled Worlds**.

PvP Mode (Enabled Worlds)

Clicking it opens a list of the worlds currently loaded on the server, so there is nothing to type and no way to misspell a name.

Enabled Worlds (Add World)

> **Info:** An empty list allows every world. It is not a list of worlds where PvP is blocked. ### WorldGuard regions With [WorldGuard](https://dev.bukkit.org/projects/worldguard) installed, PhoenixLobby registers a `phoenixlobby-restrictpvp` region flag. Set it to allow on a region and players standing inside it cannot enter PvP mode, whatever the world list says. ``` /rg flag phoenixlobby-restrictpvp allow ``` The flag is checked when somebody tries to enter, not while they fight, so a player who is already fighting keeps their kit when they walk in. See [World Protection](world-protection.md) for the fly flag that ships alongside it. ## Restrictions The lobby normally lets players fly, double jump and bounce off launch pads. None of that belongs in a fight, so each one can be taken away for as long as a player is in PvP mode and handed straight back when they leave. Open it from **Editor > Modules > PvP Mode > Restrictions**.

PvP Mode (Restrictions)

### Disable Launch Pad With this option, you can stop a fighting player from being thrown by a [launch pad](launch-pad.md). The pad still works for everybody else standing on it.

Restrictions (Disable Launch Pad)

### Disable Double Jump With this option, you can take the [double jump](double-jump.md) away during a fight, so nobody can jetpack out of one.

Restrictions (Disable Double Jump)

### Disable Fly With this option, you can take flight away when a player enters PvP mode.

Restrictions (Disable Fly)

### Kick From Flying With this option, you can decide what happens to somebody who is already in the air when flight is taken away. On drops them out of flight straight away, off leaves them gliding until they land on their own.

Restrictions (Kick From Flying)

### Enable Hunger With this option, you can let the food bar drain again during a fight. It is off everywhere else in the lobby because [world protection](world-protection.md) freezes it, so this is what lets hunger matter in PvP without affecting the rest of the lobby. How the bar is set and restored is covered under [Hunger](#hunger).

Restrictions (Enable Hunger)

## Hunger The food bar is frozen everywhere in the lobby, so a fight would normally start and end with a full bar and no way to lose health from hunger. These two options decide what the bar is set to on the way in and what happens to it on the way out. Open it from **Editor > Modules > PvP Mode > Hunger**.

PvP Mode (Hunger)

> **Info:** Neither option does anything until **Enable Hunger** is turned on under [Restrictions](#restrictions). > **Warning:** The food bar never drains on Peaceful. If [World State](world-protection.md#world-state) forces Peaceful, the worlds PvP mode is enabled in run on Easy instead while **Enable Hunger** is on, and hostile mobs are kept from spawning there. ### Level On Enable With this option, you can set the food level a player starts a fight with, out of 20. The default of 17 is deliberate: Minecraft only regenerates health naturally at 18 or above, so starting one point under that stops players from healing back up mid-fight. Setting it to 18 or higher hands natural regeneration back to them.

Hunger (Level On Enable)

### Restore On Disable With this option, you can refill the food bar when a player leaves PvP mode, so nobody walks away from the lobby's fighting area hungry.

Hunger (Restore On Disable)

## Feature State With this option, you can turn PvP mode off completely. The item is taken out of the hotbar and nobody can enter.

PvP Mode (Feature State)

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/lobby-pvp --- # 🌍 Enabled Worlds ## Enabled Worlds By default PvP mode can be entered anywhere the plugin is active. This list narrows it to the worlds you pick, so a hub world can stay peaceful while a separate arena world allows fighting. Open it from **Editor > Modules > PvP Mode > Enabled Worlds**. Clicking it opens a list of the worlds currently loaded on the server, so there is nothing to type and no way to misspell a name.

Enabled Worlds (Add World)

> **Info:** An empty list allows every world. It is not a list of worlds where PvP is blocked. ## WorldGuard regions With [WorldGuard](https://dev.bukkit.org/projects/worldguard) installed, PhoenixLobby registers a `phoenixlobby-restrictpvp` region flag. Set it to allow on a region and players standing inside it cannot enter PvP mode, whatever the world list says. ``` /rg flag phoenixlobby-restrictpvp allow ``` The flag is checked when somebody tries to enter, not while they fight, so a player who is already fighting keeps their kit when they walk in. See [World Protection](../world-protection.md) for the fly flag that ships alongside it. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/lobby-pvp/enabled-worlds --- # πŸ– Hunger ## Hunger The food bar is frozen everywhere in the lobby, so a fight would normally start and end with a full bar and no way to lose health from hunger. These two options decide what the bar is set to on the way in and what happens to it on the way out. Open it from **Editor > Modules > PvP Mode > Hunger**. > **Info:** Neither option does anything until **Enable Hunger** is turned on under [Restrictions](restrictions.md). > **Warning:** The food bar never drains on Peaceful. If [World State](../world-protection.md#world-state) forces Peaceful, the worlds PvP mode is enabled in run on Easy instead while **Enable Hunger** is on, and hostile mobs are kept from spawning there. ## Level On Enable With this option, you can set the food level a player starts a fight with, out of 20. The default of 17 is deliberate: Minecraft only regenerates health naturally at 18 or above, so starting one point under that stops players from healing back up mid-fight. Setting it to 18 or higher hands natural regeneration back to them.

Hunger (Level On Enable)

## Restore On Disable With this option, you can refill the food bar when a player leaves PvP mode, so nobody walks away from the lobby's fighting area hungry.

Hunger (Restore On Disable)

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/lobby-pvp/hunger --- # πŸ—‘οΈ PvP Kit > **Info:** The kit is stored in **lobby-items.yml** under `pvp-mode.kit`, not in modules/pvp.yml. ## PvP Kit The kit is the gear a player is handed for the duration of a fight. Their own items are stored away when they enter and given back untouched when they leave, so nothing they were carrying is at risk. Open it from **Editor > Modules > PvP Mode > PvP Kit**. The screen is the inventory itself rather than a list of options. Drag an item from your own inventory onto a slot to set it, and the layout you build is exactly what players receive: the top row holds the armour slots, and the rest is the hotbar and main inventory.

PvP Mode (Kit)

### Import From Inventory Rather than placing the kit item by item, gear yourself up the way you want players to be armed and click **Import From Inventory**. The kit is replaced with exactly what you are carrying, armour and offhand included. ### Clear All Items Empties the kit in one click. A kit with nothing in it means players enter PvP mode with an empty inventory, which is what a server running its own kit plugin wants. > **Info:** The kit ships with a netherite sword and a full set of netherite armour, falling back to diamond on a server where netherite does not exist. > **Warning:** Anything a player picks up during a fight is dropped when the kit is taken back off them. Do not put anything in the kit you would mind seeing on the floor. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/lobby-pvp/pvp-kit --- # 🚧 Restrictions ## Restrictions The lobby normally lets players fly, double jump and bounce off launch pads. None of that belongs in a fight, so each one can be taken away for as long as a player is in PvP mode and handed straight back when they leave. Open it from **Editor > Modules > PvP Mode > Restrictions**. ## Disable Launch Pad With this option, you can stop a fighting player from being thrown by a [launch pad](../launch-pad.md). The pad still works for everybody else standing on it.

Restrictions (Disable Launch Pad)

## Disable Double Jump With this option, you can take the [double jump](../double-jump.md) away during a fight, so nobody can jetpack out of one.

Restrictions (Disable Double Jump)

## Disable Fly With this option, you can take flight away when a player enters PvP mode.

Restrictions (Disable Fly)

## Kick From Flying With this option, you can decide what happens to somebody who is already in the air when flight is taken away. On drops them out of flight straight away, off leaves them gliding until they land on their own.

Restrictions (Kick From Flying)

## Enable Hunger With this option, you can let the food bar drain again during a fight. It is off everywhere else in the lobby because [world protection](../world-protection.md) freezes it, so this is what lets hunger matter in PvP without affecting the rest of the lobby. How the bar is set and restored is covered under [Hunger](hunger.md).

Restrictions (Enable Hunger)

Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/lobby-pvp/restrictions --- # πŸ“ Logger > **Info:** This module is configured in **modules/logger.yml** inside the PhoenixLobby folder. ## Logger The logger writes down what happens on your lobby. Every event is written to `logs/latest.log` and can be sent to Discord at the same time. Every event starts turned off, so nothing is written until you enable the ones you want. Each has its own message, webhook and embed, so joins can go to one channel and chat to another. ### File Logging The log file and the webhooks are separate switches. Turning `file-logging` off keeps every webhook posting while nothing is written to disk, which is what a server that only wants its events in Discord needs. ```yaml enabled: true file-logging: enabled: true ``` The `enabled` above it turns the whole module off, file and webhooks together. ### Events | Event | Logged when | | ------------------------ | ------------------------------------------------------ | | player-join | A player joins the lobby | | player-leave | A player disconnects, not when they change server | | player-switch-server | A player is sent to another server of the proxy | | player-anti-vpn | A player is denied by the anti vpn | | player-anti-wdl | A player tries to use a world downloader | | player-pvp-join | A player enters pvp mode | | player-pvp-leave | A player leaves pvp mode | | server-anti-botting | The anti bot starts a lockdown | | player-anti-swear | A message is blocked or censored by the chat filter | | player-command-execution | A player runs a command | | player-chat-message | A player sends a message | ### Message The message of an event is written in **log-format**. It is the line that goes to the log file, and it is also what `%message%` gives you inside the webhook. Every event has its own placeholders. | Event | Placeholders | | ------------------------ | ------------------------------------------------------------------------- | | player-join | %player%, %uuid%, %address%, %world%, %online% | | player-leave | %player%, %uuid%, %address%, %world%, %online% | | player-switch-server | %player%, %uuid%, %server%, %world% | | player-anti-vpn | %player%, %uuid%, %address% | | player-anti-wdl | %player%, %uuid%, %world% | | player-pvp-join | %player%, %uuid%, %world% | | player-pvp-leave | %player%, %uuid%, %world% | | server-anti-botting | %attempts%, %seconds%, %lockdown\_seconds% | | player-anti-swear | %player%, %uuid%, %world%, %message\_content%, %action% | | player-command-execution | %player%, %uuid%, %world%, %command% | | player-chat-message | %player%, %uuid%, %world%, %message\_content% | %online% leaves vanished staff out, and on a leave it has already dropped the player who left. %action% returns blocked or censored. On the chat filter event %message\_content% is what the player typed, before it was censored. ### Webhook Paste the address of your Discord webhook in **url** and that event starts posting. An empty url means nothing is sent, so you only fill in the events you care about. **username** and **avatar-url** change how the bot shows up, and **content** is a plain message sent above the embed. The embed is yours to shape with a title, a description, a colour, a footer, a thumbnail, an image and as many fields as you want. The placeholders of the event work in all of them. > **Info:** The other events follow the same shape, each one with its own message, colour and fields. > **Info:** Telling a disconnect apart from a server change is done by the proxy, so `player-switch-server` needs PhoenixLobby installed on the proxy as well. Without it, a player changing server is logged as a leave. Source: https://www.phoenixplugins.com/docs/phoenix-lobby/modules/logger --- # 🚧 Maintenance > **Info:** This module is configured in **modules/maintenance.yml** inside the PhoenixLobby folder. ## Maintenance Maintenance closes a server, or the whole network, for everyone except the people you allow. Players already connected are kicked, and new connections are denied until it ends. Open it from **Editor > Modules > Maintenance**. It works in two places. Without a proxy, the lobby runs its own maintenance and closes only that server. On a proxy the maintenance lives on BungeeCord or Velocity, where it can close any backend server or the entire network at once, and the lobby side stands down. Behind a proxy, a player on a closed server, or trying to join one, is sent to a lobby instead, and only kicked when no lobby is open to them. Closed lobbies are skipped when picking one, except for players who are allowed in, so `/lobby` and `/hub` keep working for them. Everyone with phoenixlobby.maintenance.bypass can always join, and phoenixlobby.maintenance is needed to use the [command](#commands).

Modules (Maintenance)

## Maintenance State With this option, you can close the server right now, and open it again the same way. It has no end time, so it stays closed until you turn it back off. Use `/maintenance start