# Phoenix Duels documentation > Premium duels plugin for Spigot and Paper: 1v1, party and FFA duels with arenas that regenerate, kits, queues, betting and 30+ rules, all set up in-game. Docs: https://www.phoenixplugins.com/docs/phoenix-duels Supported Minecraft versions: 1.20.4 โ€“ 26.3 (Spigot, Paper, Folia (experimental)) --- # ๐Ÿ’Ž Premium Add-ons > **Warning:** Every add-on on this page requires PhoenixDuels Premium as its base plugin, including the free ones. "Free" here means free to download, not that it runs on Lite. An add-on dropped into a Lite installation refuses to load and reports it in the console on startup. # ๐Ÿ’Ž Premium Add-ons ## Player Kits Lets your players build their own personalised kits from a set of items that you configure, with an in-game editor for enchantments, stack sizes, durability and armor trims. ## Elo Ranks Adds elo ranks with five defaults: Bronze, Silver, Gold, Diamond and Emerald, along with a `/ranks` menu. ## Lobby Items Adds lobby hotbar items across three stages: default lobby items, party items, and queue items, plus a lobby scoreboard and a right-click menu on other players. ## Sign Queues Adds signs that players can click to join or leave the queue for a game mode, with a live count of who is waiting. ## Bed Fight Adds the well known Bed Fight gamemode as a rule you can apply to a mode. ## Boxing Adds the well known Boxing gamemode as a rule you can apply to a mode. ## The Bridge Adds the well known Bridge gamemode as a rule you can apply to a mode. ## Spleef Adds the well known Spleef gamemode as a rule you can apply to a mode. ## TnT Run Adds the well known TnT Run gamemode as a rule you can apply to a mode. # ๐Ÿชจ Free Add-ons ## Floor is Lava Raises the lava by one layer every few seconds from the bottom of the battle region up. ## Pillar of Fortune Gives every player a random item or block on a fixed timer. ## Rematch & Requeue Adds `/duelrematch` and `/duelrequeue` so players can jump straight back into a match instead of navigating menus. Source: https://www.phoenixplugins.com/docs/phoenix-duels/addons --- # ๐ŸŽฎ Elo Ranks ## Information The Elo ranks add-on adds ranks to PhoenixDuels. The add-on includes five default ranks: Bronze, Silver, Gold, Diamond and Emerald.

Elo Ranks - Add-On

๐Ÿ‘‰ [You can purchase this add-on on Phoenix Store](https://www.phoenixplugins.com/product/elo-ranks-add-on) ## Installation To install this add-on, simply drag and drop the jar file into the PhoenixDuels/addons folder, then restart your server. The add-on will generate its contents to the following default files of the PhoenixDuels folder: - `config.yml` the command for the `/ranks` menu - `elo.yml` the configuration for the ranks ## Create a Rank By clicking here, you can create a new rank. The default ranks are: Bronze, Silver, Gold, Diamond, and Emerald.

Editor > Settings > Elo > Ranks

Editor > Settings > Elo > Ranks

```yaml ranks: '0': identifier: bronze display: ==: org.bukkit.inventory.ItemStack DataVersion: 4671 id: minecraft:brick count: 1 components: minecraft:custom_name: '{extra:["&6Bronze"],text:""}' schema_version: 1 elo: 750 actions: level-up: - '[MESSAGE] &eYou ranked up!' level-down: [] unique-level-up: [] ``` ### Rank Sorting The ranks are sorted based on their ELO values, with the lowest appearing first and the highest appearing last.

Editor > Settings > Elo > Ranks

## Edit a Rank ### Identifier With this option, you can set an identifier for the rank. Note that the arena identifier is unique and used internally by the plugin, and it's different from the display name. > **Danger:** If your server is in production, we don't recommend changing this value.

Editor > Settings > Elo > Ranks > Rank

### Display With this option, you can adjust the display name of the rank, the material that it will have, and its lore. For the display name, you can use the default Minecraft color codes. For hex colors, use the \&#D6D045 format.

Editor > Settings > Elo > Ranks > Rank

### Elo Required With this option, you can define the required elo which players need to reach to get that rank.

Editor > Settings > Elo > Ranks > Rank

### Actions With this option, you can execute actions when a player ranks up, ranks down, or ranks up for the first time. The first-time actions only run while the player is online. A player who earns a rank and leaves before they run, such as by quitting as the match ends, gets them the next time they join. ๐Ÿ‘‰ [You can view the Action System here](../../plugins/action-types.md)

Editor > Settings > Elo > Ranks > Rank

## Ranks Menu /ranks shows players every rank on the server, ordered by the elo needed to reach it, from lowest to highest. Each entry uses that rank's own display item, name and lore, so the menu reflects whatever you set up in the editor without any extra configuration. The entries are informational; clicking one does nothing. The menu is there so players can see what the ladder looks like and what the next rank costs. Bedrock players get the ranks as a form, see [GeyserMC (Bedrock)](../../configurations/geysermc-bedrock.md).

Ranks

### The Command The command is registered by the add-on into the plugin's own `config.yml`, so it is renamed or switched off there like any other PhoenixDuels command: ```yaml commands: ranks: enabled: true alternative: ranks ``` ### Customization The menu itself lives in menus/elo/ranks.yml under the `ranks` key, and holds the layout, the close button, the filler row and the pagination arrows, which appear once there are more ranks than fit on a page. The `rank` section is what each rank entry looks like. It takes three placeholders, filled in per rank: | Placeholder | Value | | --------------- | ---------------------------------------- | | `%rank_name%` | The rank's display name. | | `%rank_lore%` | The rank's display lore. | | `%rank_elo%` | The elo required to reach the rank. | ```yaml rank: name: '&a%rank_name%' lore: - '&a%rank_lore%' - '' - '&fElo Required: &e%rank_elo%' ``` The display item, name and lore of a rank are edited on the rank itself, not here. See [Edit a Rank](#edit-a-rank). ## Placeholders The following is the list of the available placeholders that Elo ranks has. | Placeholders | Description | |---------------------------------------------|-------------------------------------------------------| | %phoenixduels_elo_rank% | Returns the identifier of the players current rank. | | %phoenixduels_elo_rank_display% | Returns the display name of the players current rank. | | %phoenixduels_elo_rank_next% | Returns the identifier of the players next rank. | | %phoenixduels_elo_rank_next_display% | Returns the display name of the players next rank. | | %phoenixduels_elo_rank_elo_required% | Returns the elo required for the player to rank up. | | %phoenixduels_elo_rank_progress_percentage% | Returns the % to level up a rank. | | %phoenixduels_elo_rank_progress_bar% | Returns a progress bar to level up a rank. | Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/elo-ranks --- # ๐Ÿ† Create a Rank ## Create Rank By clicking here, you can create a new rank. The default ranks are: Bronze, Silver, Gold, Diamond, and Emerald.

Editor > Settings > Elo > Ranks

Editor > Settings > Elo > Ranks

```yaml ranks: '0': identifier: bronze display: ==: org.bukkit.inventory.ItemStack DataVersion: 4671 id: minecraft:brick count: 1 components: minecraft:custom_name: '{extra:["&6Bronze"],text:""}' schema_version: 1 elo: 750 actions: level-up: - '[MESSAGE] &eYou ranked up!' level-down: [] unique-level-up: [] ``` ## Rank Sorting The ranks are sorted based on their ELO values, with the lowest appearing first and the highest appearing last.

Editor > Settings > Elo > Ranks

Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/elo-ranks/create-a-rank --- # ๐ŸŽ–๏ธ Customize a Rank ## Identifier With this option, you can set an identifier for the rank. Note that the arena identifier is unique and used internally by the plugin, and it's different from the display name. > **Danger:** If your server is in production, we don't recommend changing this value.

Editor > Settings > Elo > Ranks > Rank

## Display With this option, you can adjust the display name of the rank, the material that it will have, and its lore. For the display name, you can use the default Minecraft color codes. For hex colors, use the \&#D6D045 format.

Editor > Settings > Elo > Ranks > Rank

## Elo Required With this option, you can define the required elo which players need to reach to get that rank.

Editor > Settings > Elo > Ranks > Rank

## Actions With this option, you can execute actions when a player ranks up, ranks down, or ranks up for the first time. The first-time actions only run while the player is online. A player who earns a rank and leaves before they run, such as by quitting as the match ends, gets them the next time they join. ๐Ÿ‘‰ [You can view the Action System here](https://www.myphoenixstore.com/docs/phoenix-duels/features/action-types)

Editor > Settings > Elo > Ranks > Rank

Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/elo-ranks/edit-a-rank --- # Untitled ## PlaceholderAPI Placeholders The following is the list of the available placeholders that Elo ranks has. | Placeholders | Description | |---------------------------------------------|-------------------------------------------------------| | %phoenixduels_elo_rank% | Returns the identifier of the players current rank. | | %phoenixduels_elo_rank_display% | Returns the display name of the players current rank. | | %phoenixduels_elo_rank_next% | Returns the identifier of the players next rank. | | %phoenixduels_elo_rank_next_display% | Returns the display name of the players next rank. | | %phoenixduels_elo_rank_elo_required% | Returns the elo required for the player to rank up. | | %phoenixduels_elo_rank_progress_percentage% | Returns the % to level up a rank. | | %phoenixduels_elo_rank_progress_bar% | Returns a progress bar to level up a rank. | Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/elo-ranks/rank-placeholders --- # ๐Ÿ“Š Ranks Menu ## The Menu /ranks shows players every rank on the server, ordered by the elo needed to reach it, from lowest to highest. Each entry uses that rank's own display item, name and lore, so the menu reflects whatever you set up in the editor without any extra configuration. The entries are informational; clicking one does nothing. The menu is there so players can see what the ladder looks like and what the next rank costs.

Ranks

## The Command The command is registered by the add-on into the plugin's own `config.yml`, so it is renamed or switched off there like any other PhoenixDuels command: ```yaml commands: ranks: enabled: true alternative: ranks ``` ## Customization The menu itself lives in menus/elo/ranks.yml under the `ranks` key, and holds the layout, the close button, the filler row and the pagination arrows, which appear once there are more ranks than fit on a page. The `rank` section is what each rank entry looks like. It takes three placeholders, filled in per rank: | Placeholder | Value | | --------------- | ---------------------------------------- | | `%rank_name%` | The rank's display name. | | `%rank_lore%` | The rank's display lore. | | `%rank_elo%` | The elo required to reach the rank. | ```yaml rank: name: '&a%rank_name%' lore: - '&a%rank_lore%' - '' - '&fElo Required: &e%rank_elo%' ``` The display item, name and lore of a rank are edited on the rank itself, not here. See [edit-a-rank.md](edit-a-rank.md "mention"). Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/elo-ranks/ranks-menu --- # ๐ŸŽฎ Gamemode Add-Ons ## Gamemodes These add-ons are inspired by very familiar game modes and have been adapted into PhoenixDuels as rule sets for a mode. * **Spleef** - [Click Here](spleef.md) * **TnT Run** - [Click Here](tnt-run.md) * **The Bridge** - [Click Here](the-bridge.md) * **Boxing** - [Click Here](boxing.md) * **Bed Fight** - [Click Here](bed-fight.md) * **Floor is Lava** - [Click Here](floor-is-lava.md) * **Pillar of Fortune** - [Click Here](pillar-of-fortune.md) The Floor is Lava and the Pillar of Fortune gamemode add-ons are free to download Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/gamemodes --- # ๐Ÿ›๏ธ Bed Fight ## Information The Bed Fight add-on adds the well known Bed Fight gamemode to the plugin.

Bed Fight Add-On

:point\_right: [You can purchase this add-on on Phoenix Store](https://www.myphoenixstore.com/items/bed-fight-addon) ### Installation To install this add-on, simply drag and drop the jar file into the PhoenixDuels/addons folder, then restart your server, or include the add-on while using the bundle download option to download the plugin. This add-on adds the Bed Fight as a [gamemode rule](../../main-features/create-a-mode/README.md#mode-rules) to the plugin. ### Create a Gamemode Create a gamemode dedicated for the Bed Fight Gamemode. ### Select Rule Select the Generated rule `Bed Fight` and any other rule you might want. ### Create a Map Create a map dedicated for the Bed Fight Gamemode. Place a bed for each team inside the arena. When a bed is broken, Bed Fight matches it to whichever team's spawn point is closest to it. ### Regeneration Make sure that the Regeneration is enabled for your map, otherwise the blocks will not regenerate. ### Whitelist Gamemode Select the Bed Fight gamemode as the only allowed mode for that map, and you are all set! ## Action Bar The Bed Fight rule can show an action bar summarizing every team's bed status. Both the toggle and the action bar's format string are editable from the rule's settings. ## Bed Defence Build a defence around each bed into the map, for example wood and end stone, and list those block types under **Bed Defence Blocks** in the rule's settings. Wildcards are supported, so `*_PLANKS` covers every plank type. A listed block counts as defence only when it sits within **Bed Defence Radius** blocks of a bed, so the same block type elsewhere in the map stays protected. Defence blocks remain breakable after their bed has been destroyed. Pair this with the **Only Self Placed Block Breaking** rule to make the defence and player-placed blocks the only breakable blocks in the map. Without that rule, every block in the map is breakable anyway. ## Placeholders The Bed Fight add-on adds the following placeholders that you can use on the Scoreboard: 1. `%bed_team1_status%` through `%bed_team4_status%` - Returns the bed status (alive checkmark, or remaining player count once destroyed) for that team slot. ## PlaceholderAPI Placeholders The following is the list of the available placeholders that Bed Fight has. | Placeholders | Description | | -------------------------------------- | --------------------------------------------------------- | | %phoenixduels_bedfight_team1_status% | Returns team 1's bed status. | | %phoenixduels_bedfight_team2_status% | Returns team 2's bed status. | | %phoenixduels_bedfight_team3_status% | Returns team 3's bed status. | | %phoenixduels_bedfight_team4_status% | Returns team 4's bed status. | Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/gamemodes/bed-fight --- # ๐ŸฅŠ Boxing ## Information The Boxing add-on adds the well known Boxing gamemode to the plugin.

Boxing Add-On

:point\_right: [You can purchase this add-on on Phoenix Store](https://www.myphoenixstore.com/items/boxing-addon) ### Installation To install this add-on, simply drag and drop the jar file into the PhoenixDuels/addons folder, or include the add-on while using the bundle download option to download the plugin. This add-on adds the Boxing as a [gamemode rule](../../main-features/create-a-mode/README.md#mode-rules) to the plugin, and generates the following file: * `PhoenixDuels/translations/boxing.translations.en.yml` - The translation file for the add-on. ### Create a Gamemode Create a gamemode dedicated for the Boxing Gamemode. ### Select Rule Select the Generated rule `Boxing` and any other rule you might want. ### Create a Map Create a map dedicated for the Boxing Gamemode. ### Whitelist Gamemode Select the Boxing gamemode as the only allowed mode for that map, and you are all set! ## Hits Goal Change how many hits a team has to land to win. Hits are counted per team, so in a team match every teammate's hits add up. ## Action Bar The Boxing rule can show an action bar with each team's punch score and the hits goal. Both the toggle and the message format (using `%teams%` and `%goal%`) are editable from the rule's settings. ## End-of-Match Broadcast Unranked and challenge Boxing matches announce the result with the final hit score and the hit goal instead of the round score. Ranked matches keep the default broadcast with the Elo change. It reaches the whole server only when the mode has [Broadcast Results](../../main-features/create-a-mode/#broadcast-results) enabled, otherwise just the match players. The message has no editor option. Change it in the add-on's translation file: ```yaml en: boxing: broadcast: - "" - "�a76d7โš” e8add%winner% &fout-boxed &c%loser% &7(&a%winner_hits% &8- &c%loser_hits%&7)" - "�a76d7โ˜„ &fMode: e8add%mode% &8โ”ƒ �a76d7โœฆ &fFirst to e8add%goal% &fhits" - "" ``` ## Falling Off Players are eliminated the instant they fall below the arena's battle region, whether they were knocked off by an opponent or walked off on their own. ## Placeholders The Boxing add-on adds the following placeholders that you can use on the Scoreboard: 1. `%boxing_team_score%` - Returns the score of your team. 2. `%boxing_enemy_score%` - Returns the score of the enemy team. ## PlaceholderAPI Placeholders The following is the list of the available placeholders that Boxing has. | Placeholders | Description | | ----------------------------------- | ----------------------------------- | | %phoenixduels_boxing_team1_score% | Returns the punch score of team 1. | | %phoenixduels_boxing_team2_score% | Returns the punch score of team 2. | | %phoenixduels_boxing_team3_score% | Returns the punch score of team 3. | | %phoenixduels_boxing_team4_score% | Returns the punch score of team 4. | Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/gamemodes/boxing --- # ๐Ÿšฉ Capture the Flag ## Information The Capture the Flag add-on gives every team a banner at their base. Steal the enemy's banner, carry it back to your own, and you score a capture. First team to the goal wins the round. This add-on requires PhoenixDuels Premium. ### Installation To install this add-on, simply drag and drop the jar file into the PhoenixDuels/addons folder, or include the add-on while using the bundle download option to download the plugin. This add-on adds Capture the Flag as a [gamemode rule](../../main-features/create-a-mode/#gamemode-rules-30) to the plugin, and generates the following file: * `PhoenixDuels/translations/captureflag.translations.en.yml` - The translation file for the add-on. ### Create a Gamemode Create a gamemode dedicated for Capture the Flag. ### Select Rule Select the Generated rule `Capture the Flag` and any other rule you might want. ### Place the Banners Place one banner per team inside the arena's battle region, next to each team's spawn. Any banner type works, and its color is up to you. ### Create a Map Create a map dedicated for this ruleset, and make sure Regeneration is enabled. > **Danger:** Capture the Flag refuses to start a match on an arena without Regeneration enabled. The rule moves banner blocks around the map, so the arena has to be able to reset itself between matches. > **Info:** This add-on supports [Folia](../../first-installation.md#version-support), which is still experimental. ## The Flags There is no separate setup step for the flags. When a round starts, every banner inside the battle region is scanned and handed to the team whose spawn it sits closest to โ€” the same way Bed Fight decides which bed belongs to which team. If a team has more than one banner nearby, the closest one becomes its flag. If a team ends up without a banner, everyone in the match is warned in chat, so it is obvious you missed one rather than the mode quietly half-working. ## How it Plays 1. Breaking an enemy flag takes it. The banner disappears from its base and appears on the carrier's head. 2. You cannot break your own team's flag. 3. A carrier who dies, leaves the match, disconnects or becomes a spectator drops the flag where they last stood. It sits on the ground for the return time, then goes home on its own. If there is no free spot there, it goes home straight away. 4. Walking over a dropped flag picks it up if it belongs to an enemy team, or sends it straight home if it is your own. 5. Bringing an enemy flag within the capture radius of your own flag scores a capture โ€” but only while your own flag is still at its base. A team whose flag is out cannot score. 6. The first team to reach the capture goal wins the round. Players respawn rather than being eliminated, so the round is decided by captures and nothing else. While a player waits to respawn, they cannot pick up or return a flag. Flags can only be taken while the round is running. When a round starts and when the match ends, every flag is put back at its base, so a flag never goes missing between rounds. ## Match Settings The Capture the Flag rule's settings let you configure: * **Capture Goal** - how many captures a team needs to win the round. * **Flag Return Time** - how many seconds a dropped flag stays on the ground before it returns to its base by itself. * **Capture Radius** - how close a carrier has to get to their own flag to score, and how close a player has to get to a dropped flag to pick it up. * **Respawn Time** - how many seconds players wait before respawning. Set to `0` to respawn immediately. * **Action Bar** - toggles an action bar showing every team's captures and whether their flag is home. * **Action Bar Format** - the action bar text, using `%teams%` and `%goal%`. ## Placeholders The Capture the Flag add-on adds the following placeholders that you can use on the Scoreboard: 1. `%captureflag_score%` - Returns your team's captures. 2. `%captureflag_enemy_score%` - Returns the enemy team's captures. 3. `%captureflag_goal%` - Returns the capture goal. 4. `%captureflag_team1_score%` through `%captureflag_team4_score%` - Returns that team slot's captures. 5. `%captureflag_team1_status%` through `%captureflag_team4_status%` - Returns whether that team's flag is at its base. ## PlaceholderAPI Placeholders The following is the list of the available placeholders that Capture the Flag has. | Placeholders | Description | | --------------------------------------------- | ----------------------------------------------- | | %phoenixduels_captureflag_team1_score% | Returns the captures of team 1. | | %phoenixduels_captureflag_team2_score% | Returns the captures of team 2. | | %phoenixduels_captureflag_team3_score% | Returns the captures of team 3. | | %phoenixduels_captureflag_team4_score% | Returns the captures of team 4. | | %phoenixduels_captureflag_team1_status% | Returns whether team 1's flag is at its base. | | %phoenixduels_captureflag_team2_status% | Returns whether team 2's flag is at its base. | | %phoenixduels_captureflag_team3_status% | Returns whether team 3's flag is at its base. | | %phoenixduels_captureflag_team4_status% | Returns whether team 4's flag is at its base. | Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/gamemodes/capture-the-flag --- # ๐ŸŒ‹ Floor is Lava ## Information

Floor is Lava - Add-On

### Installation To install this add-on, simply drag and drop the jar file into the PhoenixDuels/addons folder, or include the add-on while using the bundle download option to download the plugin. This add-on adds Floor is Lava as a [gamemode rule](../../main-features/create-a-mode/README.md#mode-rules) to the plugin. ### Create a Gamemode Create a gamemode, for the lava is lava gamemode. ### Select Rule Select the Generated rule `Floor is Lava` alongside your other rules. ### Create a Map This map doesn't require a specific build, you can use any of your liking. ### Regeneration Make sure that the Regeneration is enabled for your map, otherwise the lava will not clear between matches. > **Info:** This add-on supports [Folia](../../first-installation.md#version-support), which is still experimental. ## How it works Every few seconds, the lava rises by one layer from the bottom of the battle region up. You can configure: * **Lava Rise Interval** - how many seconds between each rise. * **Replace Air Only** - when enabled, the rising lava only fills air blocks and leaves solid terrain untouched. When disabled, it consumes everything as it rises. * **Rise Title** - an optional title/subtitle warning shown to all players right before each rise. * **Action Bar** - an optional action bar reminder. ## Placeholders The Floor is Lava add-on adds the following placeholders that you can use on the Scoreboard: 1. `%floorislava_countdown%` - Returns the number of seconds until the next rise. 2. `%floorislava_team1_remaining%` through `%floorislava_team4_remaining%` - Returns the number of players still alive on that team slot. ## PlaceholderAPI Placeholders The following is the list of the available placeholders that Floor is Lava has. | Placeholders | Description | | ------------------------------------------- | --------------------------------------------- | | %phoenixduels_floorislava_countdown% | Returns the seconds until the next lava rise. | | %phoenixduels_floorislava_team1_remaining% | Returns the players remaining on team 1. | | %phoenixduels_floorislava_team2_remaining% | Returns the players remaining on team 2. | | %phoenixduels_floorislava_team3_remaining% | Returns the players remaining on team 3. | | %phoenixduels_floorislava_team4_remaining% | Returns the players remaining on team 4. | Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/gamemodes/floor-is-lava --- # ๐Ÿ€ Pillar of Fortune ## Information The Pillar of Fortune add-on periodically gives every player on their own a random item or block.

Pillar of Fortune Add-On

### Installation To install this add-on, simply drag and drop the jar file into the PhoenixDuels/addons folder, or include the add-on while using the bundle download option to download the plugin. This add-on adds Pillar of Fortune as a [gamemode rule](../../main-features/create-a-mode/README.md#mode-rules) to the plugin. ### Create a Gamemode Create a gamemode, or open an existing one, that you want the periodic item drops applied to. ### Select Rule Select the Generated rule `Pillar of Fortune` alongside your other rules. ### Create a Map Create a map dedicated for this gamemode. > **Info:** This add-on supports [Folia](../../first-installation.md#version-support), which is still experimental. ## Configuration The rule's settings let you configure: * **Drop Interval** - how many seconds between each random item drop. * **Blacklisted Items** - items that should never be picked when rolling a drop. * **Action Bar** - toggles an action bar showing the countdown to the next drop, with an editable format. * **Receive Title** - an optional title/subtitle shown to a player when they receive an item, with the item name available via `%item%`. * **Receive Sound** - toggles a sound effect played when a player receives an item. ## Placeholders The Pillar of Fortune add-on adds the following placeholders that you can use on the Scoreboard: 1. `%pillaroffortune_team1_remaining%` through `%pillaroffortune_team4_remaining%` - Returns the number of players still alive on that team slot. ## PlaceholderAPI Placeholders The following is the list of the available placeholders that Pillar of Fortune has. | Placeholders | Description | | -------------------------------------------------- | ------------------------------------------- | | %phoenixduels_pillaroffortune_team1_remaining% | Returns the players remaining on team 1. | | %phoenixduels_pillaroffortune_team2_remaining% | Returns the players remaining on team 2. | | %phoenixduels_pillaroffortune_team3_remaining% | Returns the players remaining on team 3. | | %phoenixduels_pillaroffortune_team4_remaining% | Returns the players remaining on team 4. | Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/gamemodes/pillar-of-fortune --- # ๐ŸŽ SkyWars ## Information The SkyWars add-on fills every chest and trapped chest placed inside your arena with random loot when a round starts. Each container type draws from its own loot pool, so the chests around a team's island and the ones in the middle of the map can hold completely different gear. This add-on requires PhoenixDuels Premium. ### Installation To install this add-on, simply drag and drop the jar file into the PhoenixDuels/addons folder, or include the add-on while using the bundle download option to download the plugin. This add-on adds SkyWars as a [gamemode rule](../../main-features/create-a-mode/#gamemode-rules-30) to the plugin, and generates the following files: * `PhoenixDuels/skywars/chests.yml` - The loot pools of both chest types. * `PhoenixDuels/translations/skywars.translations.en.yml` - The translation file for the add-on. ### Create a Gamemode Create a gamemode, or open an existing one, that you want the loot chests applied to. ### Select Rule Select the Generated rule `SkyWars` alongside your other rules. ### Place Chests Place chests and trapped chests inside the arena's battle region. Only containers inside that region are picked up โ€” anything outside of it is ignored. ### Create a Map Create a map dedicated for this ruleset, and make sure Regeneration is enabled so the arena resets between matches. ## Chest Types The container you place decides which pool it is filled from. This is not configurable โ€” it is how the add-on tells the two pools apart.
BlockPoolNotes
ChestTeam ChestsAlways enabled. Meant for the chests around each spawn island.
Trapped ChestMiddle ChestsCan be switched off, and is capped to 4 chests by default.
## Match Settings The SkyWars rule's settings hold three entries: * **Team Chests** - opens the loot pool of every normal chest in the arena. * **Middle Chests** - opens the loot pool of every trapped chest in the arena. * **Action Bar** - toggles an action bar showing every team's remaining player count. Both chest entries show a summary of their chest limit and how many loot entries they hold before you open them. > **Warning:** The two loot pools live in `skywars/chests.yml` and are shared by **every** mode that uses the SkyWars rule. Editing them from one mode changes them everywhere. Only the Action Bar toggle is stored per mode. ## Loot Items Opening either chest entry takes you to that pool's Loot Items menu, where you can add, edit and remove entries. * **Chest Limit** - caps how many containers of that type the pool may claim in the arena. Chests closest to the center of the battle region are claimed first, so a limit of `4` on the middle pool fills the four most central trapped chests and leaves the rest empty. Set to `-1` for no cap. Clicking past `-1` skips `0` and lands on `1`. * **Enabled** - only shown for the middle chests, and stops them from being filled at all. Each loot entry has its own settings: * **Item** - the item or block that gets placed. Any item works, including custom models, potions and named gear. * **Weight** - how likely this entry is to be drawn. The menu shows the resulting chance, which is this weight divided by the sum of every weight in the pool. * **Minimum Amount** / **Maximum Amount** - the stack size range the entry is drawn with, capped at the item's own stack size: 64 for most items, 16 for ender pearls and 1 for unstackable items. * **Guaranteed** - places this entry in every chest of that pool instead of leaving it to chance. * **Delete Item** - removes the entry from the pool. ## How a Chest is Filled When a round starts, every container inside the battle region is scanned, claimed by its matching pool, emptied and refilled once. There is no refill during the match. 1. Every **Guaranteed** entry is placed first. 2. A target amount of items is rolled between the pool's minimum and maximum item count. 3. The rest of the slots are drawn at random, weighted, until the target is reached. 4. An entry can never be drawn twice in the same chest, and only one item of each gear category is placed per chest โ€” so a chest will not hold two swords, two chestplates or two bows. The gear categories are swords (including tridents), pickaxes, axes, helmets, chestplates (including elytras), leggings, boots and bows (including crossbows). Everything else โ€” blocks, food, pearls, potions โ€” is not categorised, and is limited only by the one-draw-per-entry rule. > **Info:** The minimum and maximum item count per chest is not in the editor. Both live under `team-chest` and `middle-chest` in `skywars/chests.yml` as `min-items` and `max-items`. ## Action Bar While a round is in progress, the rule can show an action bar listing how many players each team has left, refreshed every second. The toggle sits in the rule's settings, and the format is editable in the add-on's translation file under `skywars.action-bar`, using `%team_color%`, `%team_prefix%` and `%team_remaining%`. ## Placeholders The SkyWars add-on adds the following placeholders that you can use on the Scoreboard: 1. `%skywars_team1_remaining%` through `%skywars_team4_remaining%` - Returns the number of players still alive on that team slot. ## PlaceholderAPI Placeholders The following is the list of the available placeholders that SkyWars has. | Placeholders | Description | | ------------------------------------------- | ------------------------------------------- | | %phoenixduels_skywars_team1_remaining% | Returns the players remaining on team 1. | | %phoenixduels_skywars_team2_remaining% | Returns the players remaining on team 2. | | %phoenixduels_skywars_team3_remaining% | Returns the players remaining on team 3. | | %phoenixduels_skywars_team4_remaining% | Returns the players remaining on team 4. | Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/gamemodes/skywars --- # โ„๏ธ Spleef ## Information The Spleef add-on adds the well known Spleef gamemode to the plugin.

Spleef Add-On

:point\_right: [You can purchase this add-on on Phoenix Store](https://www.myphoenixstore.com/items/spleef-addon) ### Installation To install this add-on, simply drag and drop the jar file into the PhoenixDuels/addons folder, or include the add-on while using the bundle download option to download the plugin. This add-on adds the Spleef as a [gamemode rule](../../main-features/create-a-mode/README.md#mode-rules) to the plugin. ### Create a Gamemode Create a gamemode dedicated for the Spleef Gamemode. ### Select Rule Select the Generated rule `Spleef` and any other rule you might want. ### Setup Inventory Create the Inventory for your Sleep. Recommended items can be found below. ### Create a Map Create a map dedicated for the Spleef Gamemode. ### Regeneration Make sure that the Regeneration is enabled for your map, otherwise the blocks will not regenerate. ### Whitelist Gamemode Select the Spleef gamemode as the only allowed mode for that map, and you are all set! ### Items The Spleef has two different options that you can use, and both can be toggled independently in the rule's settings: 1\) **Snowball Break** - give players a shovel, and when they break a snow block, they receive snowballs. 2\) **Bow Spleef** - give them a bow, and when they hit a snow block, the block will disappear. ## Action Bar The Spleef rule can show an action bar summarizing the match. Both the toggle and the message format are editable from the rule's settings. ## Placeholders The Spleef add-on adds the following placeholders that you can use on the Scoreboard: 1. `%spleef_team1_remaining%` through `%spleef_team4_remaining%` - Returns the number of players still alive on that team slot. ## PlaceholderAPI Placeholders The following is the list of the available placeholders that Spleef has. | Placeholders | Description | | -------------------------------------- | ------------------------------------------ | | %phoenixduels_spleef_team1_remaining% | Returns the players remaining on team 1. | | %phoenixduels_spleef_team2_remaining% | Returns the players remaining on team 2. | | %phoenixduels_spleef_team3_remaining% | Returns the players remaining on team 3. | | %phoenixduels_spleef_team4_remaining% | Returns the players remaining on team 4. | Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/gamemodes/spleef --- # ๐ŸŒ‰ The Bridge ## Information The Bridge add-on adds the well known Bridge gamemode to the plugin. Yes

The Bridge Add-On

:point\_right: [You can purchase this add-on on Phoenix Store](https://www.myphoenixstore.com/items/the-bridge-addon) ### Installation To install this add-on, simply drag and drop the jar file into the PhoenixDuels/addons folder, or include the add-on while using the bundle download option to download the plugin. This add-on adds the Bridge as a [gamemode rule](../../main-features/create-a-mode/README.md#mode-rules) to the plugin, and generates the following file: * `PhoenixDuels/translations/bridge.translations.en.yml` - The translation file for the add-on. ### Create a Gamemode Create a gamemode dedicated for the Bridge Gamemode. ### Select Rule Select the Generated rule `Bridge` and any other rule you might want. ### Create a Map Create a map dedicated for the Bridge Gamemode. ### Whitelist Gamemode Select the Bridge gamemode as the only allowed mode for that map, and you are all set! ## Scoring Jumping into an enemy team's portal scores a goal and wins the round. Only one goal counts per round: anyone who reaches a portal after it, including a scorer still standing in the portal when the next round starts, is sent back to their spawn. Jumping into your own team's portal puts you back where you were, and no portal ever teleports a match player away. ## Score Each team's score shows as one circle per round win the match needs, in the team's color for every round won and gray for the rest. With the [Best Of](../../features/settings/match/#rounds-system) rounds system that is the wins needed, so a best of 5 shows three circles. The circle symbol and the score layout are in the translation file. ## Match Settings The Bridge rule's settings let you configure: * **Respawn Time** - how many seconds a player waits before respawning after falling or dying. Set to `0` to respawn immediately. * **Cage** - toggles the cage that traps each player at their spawn point at the start of a round. * **Spawn Protection Radius** - the radius, in blocks (X/Z only), around each spawn point where players cannot break or place blocks. ## Action Bar The Bridge rule can show an action bar with every team's score. Both the toggle and the message format (using `%teams%`) are editable from the rule's settings. ## Placeholders The Bridge add-on adds the following placeholders that you can use on the Scoreboard: 1. `%bridge_score%` - Returns the score of your team. 2. `%bridge_enemy_score%` - Returns the score of the enemy team. 3. `%bridge_team1_score%` through `%bridge_team4_score%` - Returns the score of that specific team slot, regardless of which team is viewing.

Bridge Placeholder

## PlaceholderAPI Placeholders The following is the list of the available placeholders that Bridge has. | Placeholders | Description | | ------------------------------------ | --------------------------------- | | %phoenixduels_bridge_team1_score% | Returns the score of team 1. | | %phoenixduels_bridge_team2_score% | Returns the score of team 2. | | %phoenixduels_bridge_team3_score% | Returns the score of team 3. | | %phoenixduels_bridge_team4_score% | Returns the score of team 4. | Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/gamemodes/the-bridge --- # ๐Ÿ’ฃ TnT Run ## Information The TnT Run add-on adds the well known TnT Run gamemode to the plugin.

TnT Run Add-On

:point\_right: [You can purchase this add-on on Phoenix Store](https://www.myphoenixstore.com/items/tnt-run-addon) ### Installation To install this add-on, simply drag and drop the jar file into the PhoenixDuels/addons folder, or include the add-on while using the bundle download option to download the plugin. This add-on adds the TnT Run as a [gamemode rule](../../main-features/create-a-mode/README.md#mode-rules) to the plugin. ### Create a Gamemode Create a gamemode dedicated for the Bed Fight Gamemode. ### Select Rule Select the Generated rule `TnT Run` and any other rule you might want. ### Create a Map Create a map dedicated for the Bed Fight Gamemode. ### Regeneration Make sure that the Regeneration is enabled for your map, otherwise the blocks will not regenerate. ### Whitelist Gamemode Select the Bed Fight gamemode as the only allowed mode for that map, and you are all set! > **Info:** This add-on supports [Folia](../../first-installation.md#version-support), which is still experimental. ## Blocks Make sure you have a layer of TNT on the floor, and place one of the following blocks on top of it: * Sand * Red Sand * Gravel * Suspicious Sand * Suspicious Gravel ## Action Bar The TnT Run rule can show an action bar summarizing the match. Both the toggle and the message format are editable from the rule's settings. ## Placeholders The TnT Run add-on adds the following placeholders that you can use on the Scoreboard: 1. `%tntrun_team1_remaining%` through `%tntrun_team4_remaining%` - Returns the number of players still alive on that team slot. ## PlaceholderAPI Placeholders The following is the list of the available placeholders that TnT Run has. | Placeholders | Description | | -------------------------------------- | ------------------------------------------ | | %phoenixduels_tntrun_team1_remaining% | Returns the players remaining on team 1. | | %phoenixduels_tntrun_team2_remaining% | Returns the players remaining on team 2. | | %phoenixduels_tntrun_team3_remaining% | Returns the players remaining on team 3. | | %phoenixduels_tntrun_team4_remaining% | Returns the players remaining on team 4. | Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/gamemodes/tnt-run --- # ๐Ÿงจ TNT Tag ## Information The TNT Tag add-on hands live TNT to one or more players at the start of every round. Whoever is holding it when the fuse runs out is blown up, and the survivors go again with a fresh fuse. Hitting another player passes the TNT on. This add-on requires PhoenixDuels Premium. ### Installation To install this add-on, simply drag and drop the jar file into the PhoenixDuels/addons folder, or include the add-on while using the bundle download option to download the plugin. This add-on adds TNT Tag as a [gamemode rule](../../main-features/create-a-mode/#gamemode-rules-30) to the plugin, and generates the following file: * `PhoenixDuels/translations/tnttag.translations.en.yml` - The translation file for the add-on. ### Create a Gamemode Create a gamemode dedicated for TNT Tag. ### Select Rule Select the Generated rule `TNT Tag` and any other rule you might want. ### Create a Map Create a map dedicated for this ruleset. An open platform over the void works best, since falling out is the other way to lose. ### Whitelist Gamemode Select the TNT Tag gamemode as the only allowed mode for that map, and you are all set! > **Info:** This add-on supports [Folia](../../first-installation.md#version-support), which is still experimental. ## How it Plays Combat damage is disabled entirely while the rule is active โ€” players cannot kill each other by hitting. The only two ways out of a round are holding the TNT when it detonates, or falling below the battle region. 1. When the round starts, the configured number of players is picked at random and given the TNT. It sits on their head and, if enabled, makes them glow. 2. A tagged player passes the TNT by hitting an untagged player on another team. The hit deals no damage โ€” it only moves the bomb. 3. The freshly tagged player cannot be tagged back until the pass cooldown expires, so the TNT cannot bounce between the same two players. 4. When the fuse hits zero, every holder is eliminated. If two or more players are still alive, the fuse resets and the TNT is handed out again. > **Info:** If a tagged player is eliminated some other way โ€” falling out of the arena, disconnecting โ€” the TNT is passed to a random survivor instead of disappearing with them. ## Match Settings The TNT Tag rule's settings let you configure: * **Fuse Time** - how many seconds the TNT burns before it explodes. * **Tagged Players** - how many players are given the TNT each round. Always capped at one below the number of players alive, so somebody is always safe. * **Pass Cooldown** - how many seconds must pass before a player who was just tagged can be tagged again. * **Glowing** - whether players holding the TNT glow for everyone else. Requires 1.9 or newer. * **Action Bar** - toggles the countdown action bar. * **Action Bar Format** - the countdown text, using `%time%` for the seconds left and `%tagged%` for who is holding it. ## Placeholders The TNT Tag add-on adds the following placeholders that you can use on the Scoreboard: 1. `%tnttag_time_remaining%` - Returns the seconds left on the fuse. 2. `%tnttag_tagged%` - Returns how many players are currently holding the TNT. 3. `%tnttag_team1_remaining%` through `%tnttag_team4_remaining%` - Returns the number of players still alive on that team slot. ## PlaceholderAPI Placeholders The following is the list of the available placeholders that TNT Tag has. | Placeholders | Description | | ------------------------------------------ | ------------------------------------------------- | | %phoenixduels_tnttag_time_remaining% | Returns the seconds left on the fuse. | | %phoenixduels_tnttag_tagged% | Returns how many players hold the TNT. | | %phoenixduels_tnttag_is_tagged% | Returns whether the player is holding the TNT. | | %phoenixduels_tnttag_team1_remaining% | Returns the players remaining on team 1. | | %phoenixduels_tnttag_team2_remaining% | Returns the players remaining on team 2. | | %phoenixduels_tnttag_team3_remaining% | Returns the players remaining on team 3. | | %phoenixduels_tnttag_team4_remaining% | Returns the players remaining on team 4. | Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/gamemodes/tnt-tag --- # ๐Ÿงถ Wool Wars ## Information The Wool Wars add-on turns a platform in the middle of your arena into the objective. Both teams get endless wool in their own color and race to cover the platform with it, breaking each other's wool along the way. First team to own enough of it wins the round. This add-on requires PhoenixDuels Premium. ### Installation To install this add-on, simply drag and drop the jar file into the PhoenixDuels/addons folder, or include the add-on while using the bundle download option to download the plugin. This add-on adds Wool Wars as a [gamemode rule](../../main-features/create-a-mode/#gamemode-rules-30) to the plugin, and generates the following file: * `PhoenixDuels/translations/woolwars.translations.en.yml` - The translation file for the add-on. ### Create a Gamemode Create a gamemode dedicated for Wool Wars. ### Select Rule Select the Generated rule `Wool Wars` and any other rule you might want. ### Build the Platform Build the objective out of the platform block โ€” white wool by default โ€” inside the arena's battle region. Every block of that type becomes a claimable slot. ### Create a Map Create a map dedicated for this ruleset, and make sure Regeneration is enabled so the platform resets between matches. > **Info:** This add-on supports [Folia](../../first-installation.md#version-support), which is still experimental. ## The Platform When a round starts, the battle region is scanned and every block matching the platform material is registered as a claimable slot. Those slots are the only place in the arena where players can build. * Placing wool on an empty slot claims it for your team, in your team's color. * Breaking a neutral or enemy block on a slot frees it again. * You cannot break your own team's wool, and you cannot build anywhere outside the platform. * The platform is locked during the countdown and after the round ends, so no block can be broken or placed early or late. Each team's share is tracked live, and the round ends the moment one team's share reaches the claim goal. > **Warning:** The platform scan walks the whole battle region block by block. Regions above roughly half a million blocks are skipped with a warning in chat rather than scanned โ€” keep the battle region tight around the arena. ## Team Colors Wool is handed out in a color matched to each team, so the platform reads at a glance:
TeamWool
RedRed Wool
Dark RedBrown Wool
BlueBlue Wool
Dark BlueBlue Terracotta
GreenLime Wool
Dark GreenGreen Wool
AquaLight Blue Wool
Dark AquaCyan Wool
PurplePurple Wool
Dark PurpleMagenta Wool
GrayLight Gray Wool
Dark GrayGray Wool
Yellow, Orange, Pink, White, BlackThe matching wool color
Players are handed wool when the round starts and again when they respawn, and their stack is topped back up whenever it runs low, so they never have to think about ammo. ## Match Settings The Wool Wars rule's settings let you configure: * **Platform Block** - which block makes up the platform. Defaults to `WHITE_WOOL`. Any block name works, so a stone or clay platform is equally valid. * **Claim Goal** - what percentage of the platform a team must own to win the round. Defaults to `60`. * **Respawn Time** - how many seconds players wait before respawning. Set to `0` to respawn immediately. * **Wool Amount** - how much wool players are handed, and topped back up to. * **Action Bar** - toggles an action bar showing how much of the platform each team owns. * **Action Bar Format** - the action bar text, using `%teams%` and `%goal%`. ## Placeholders The Wool Wars add-on adds the following placeholders that you can use on the Scoreboard: 1. `%woolwars_claimed%` - Returns how many slots your team owns. 2. `%woolwars_percent%` - Returns your team's share of the platform, as a percentage. 3. `%woolwars_platform_size%` - Returns how many slots the platform has in total. 4. `%woolwars_goal%` - Returns the claim goal percentage. 5. `%woolwars_team1_claimed%` through `%woolwars_team4_claimed%` - Returns that team slot's owned blocks. 6. `%woolwars_team1_percent%` through `%woolwars_team4_percent%` - Returns that team slot's share. ## PlaceholderAPI Placeholders The following is the list of the available placeholders that Wool Wars has. | Placeholders | Description | | -------------------------------------------- | ------------------------------------------- | | %phoenixduels_woolwars_team1_claimed% | Returns the blocks owned by team 1. | | %phoenixduels_woolwars_team2_claimed% | Returns the blocks owned by team 2. | | %phoenixduels_woolwars_team3_claimed% | Returns the blocks owned by team 3. | | %phoenixduels_woolwars_team4_claimed% | Returns the blocks owned by team 4. | | %phoenixduels_woolwars_team1_percent% | Returns team 1's share of the platform. | | %phoenixduels_woolwars_team2_percent% | Returns team 2's share of the platform. | | %phoenixduels_woolwars_team3_percent% | Returns team 3's share of the platform. | | %phoenixduels_woolwars_team4_percent% | Returns team 4's share of the platform. | Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/gamemodes/wool-wars --- # ๐Ÿช„ Lobby Items ## Information The Lobby Items add-on adds lobby items to PhoenixDuels. The add-on includes three different stages: default lobby items, party items, and queue items. It also brings a lobby scoreboard, join actions, and a right-click menu on other players. This add-on requires PhoenixDuels Premium.

Lobby Items - Add-On

๐Ÿ‘‰ [You can purchase this add-on on Phoenix Store](https://www.myphoenixstore.com/en/items/lobby-items-addon) ## Installation To install this add-on, simply drag and drop the jar file into the PhoenixDuels/addons folder, then restart your server. The add-on will generate a file in the main PhoenixDuels folder called `lobby.yml` , which contains all configuration settings for the add-on. > **Info:** This add-on supports [Folia](../../first-installation.md#version-support), which is still experimental. ## Inventory Stages ### Default Lobby Items The lobby includes special items to help users navigate the pluginโ€™s features more easily. By default, the lobby items are: * **Play Unranked**** -** Iron Sword * **Play Ranked**** -** Diamond Sword * **Kit Editor** - Book * **Party** - Nether Star * **Statistics** - Item Frame * **Setting**** -** Comparator

Default Lobby Items

### Party Items When a user joins a party, their hotbar items automatically change to enhance navigation and make it easier to play games with the party. The items available during the party state are: * **Play Unranked** - Iron Sword * **Play Ranked** - Diamond Sword * **Play Private FFA** - Iron Axe * **Split the Party** - Golden Axe * **Fight another Party** - Diamond Axe * **Manage your Party** - Nether Star * **Leave the Party** - Red Dye

Party Lobby Items

### Queue Items When the party is queuing, the hotbar items automatically update to include a red dye. Clicking on the red dye allows a party member to leave the queue, which will stop the entire party from queuing.

Queue Lobby Items

### Rematch Item When the Rematch & Requeue add-on opens a rematch window for a player at the end of a match, a clock is laid over the hotbar for as long as that window lasts and disappears again once it expires. It has its own slot on the default stage and on the party stage; the queue stage has no rematch item, so nothing is overlaid while a player is queueing. ```yaml hotbar: rematch-item: default: slot: 4 material: CLOCK party: slot: 3 material: CLOCK ``` ### Held Slot Each stage decides which hotbar slot the player is left holding once the items are handed out. Unlike the item slots above, this one counts from 0 on the left, so 8 is the far right of the hotbar. ```yaml hotbar: enabled: true player-held-slot: default: 0 party: 7 queue: 8 ``` Turning the hotbar off leaves player inventories untouched. The lobby scoreboard and the join actions keep working. ### Item Protection Hotbar items cannot be dropped, moved around an inventory, swapped into the off hand, or left behind as a death drop. Players in creative mode are exempt from all of that, so an admin can still clear their own hotbar. ### Inventory Clearing Switching between the default, party and queue stages only swaps the lobby items, so everything else a player carries stays, such as items won from a bet or an inventory handed back after a match. The whole inventory is cleared only when a player joins, respawns, or moves into or out of a lobby world. ```yaml hotbar: clear-inventory: true ``` Turning it off makes those moments remove only the lobby items too. A player's own item sitting in a slot a lobby item needs is moved to a free slot, or to [Lost Items](../../features/lost-items.md) when the inventory is full. ### Previewing a Stage /pduels lobbyitems \ hands you the items of that stage without having to actually join a party or a queue first. The next event that rebuilds your hotbar, such as joining a party or leaving a match, replaces them again. ### Extra #### 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 ``` ## Lobby Extras ### Join Actions Every time a user joins the server, specific actions can be triggered. By default, the plugin sends a how to duel message.

Join Message

```yaml lobby: every-join-actions: - '[MESSAGE] &7' - '[MESSAGE] &5&lPHOENIX DUELS' - '[MESSAGE] &7 1v1s, Party FFA/Fight' - '[MESSAGE] &7 Unranked & Ranked Fights' - '[MESSAGE] &7 And much more!' - '[MESSAGE] &7' - '[MESSAGE] &eโฌค To duel, type: &d/duel &e.' - '[MESSAGE] &eโฌค To play, &duse your hotbar&e.' - '[MESSAGE] &7' ``` ### Scoreboard Your server will now display a lobby scoreboard. Note that this scoreboard only appears in the lobby, during a duel the matchโ€™s own scoreboard will take over.

Lobby Scoreboard

```yaml scoreboard: enabled: true refresh-rate: 20 header: interval: 2 frames: - '&5&lPHOENIX DUELS' - '&d&lP&5&lHOENIX DUELS' - '&d&lPH&5&lOENIX DUELS' - '&5&lP&d&lHO&5&lENIX DUELS' - '&5&lPH&d&lOE&5&lNIX DUELS' - '&5&lPHO&d&lEN&5&lIX DUELS' - '&5&lPHOE&d&lNI&5&lX DUELS' - '&5&lPHOEN&d&lIX&5&l DUELS' - '&5&lPHOENI&d&lX D&5&lUELS' - '&5&lPHOENIX &d&lDU&5&lELS' - '&5&lPHOENIX D&d&lUE&5&lLS' - '&5&lPHOENIX DU&d&lEL&5&lS' - '&5&lPHOENIX DUE&d&lLS' - '&5&lPHOENIX DUEL&d&lS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&d&lPHOENIX DUELS' - '&d&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&d&lPHOENIX DUELS' - '&d&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' lines: - '' - ' ๊œฑแด›แด€ส€แด› แด„สœแด€สŸสŸแด‡ษดษขษชษดษข แด˜สŸแด€สแด‡ส€๊œฑ' - ' แดกษชแด›สœ &6/แด…แดœแด‡สŸ <แด˜สŸแด€สแด‡ส€>' - '' - '&3โœ” &fแดษดสŸษชษดแด‡: &3%online%' - '&a๐Ÿช“ &fแด˜สŸแด€สษชษดษข: &a%playing%' - '&6โ™  &fวซแดœแด‡แดœแด‡ษชษดษข: &6%queueing%' - '' - '&c๐Ÿ—ก &fแด‹ษชสŸสŸ๊œฑ: &c%kills%' - '&4โ˜  &fแด…แด‡แด€แด›สœ๊œฑ: &4%deaths%' - '' - ' แด„แดษด๊œฐษชษขแดœส€แด‡ แด…แดœแด‡สŸ๊œฑ:' - ' &e/แด˜สœแดแด‡ษดษชxแด…แดœแด‡สŸ๊œฑ แด‡แด…ษชแด›แดส€' - '' - ' &dwww.phoenixplugins.com ' ``` #### Scoreboard Placeholders Beyond every PlaceholderAPI placeholder installed on your server, the lobby scoreboard understands the following on its own. | Placeholder | Description | | ------------- | ------------------------------------------------------------- | | %player% | The name of the player looking at the board. | | %online% | The amount of players online. | | %max_online% | The player slot limit of the server. | | %playing% | The amount of players currently inside a match. | | %queueing% | The amount of players currently in a queue. | | %kills% | The player's kills across challenge, unranked and ranked combined. | | %deaths% | The player's deaths across challenge, unranked and ranked combined. | If another plugin claims a player's sidebar, the lobby board steps aside for it and comes back on its own once that claim is released. ### Teleport on Join Sends every player to the lobby spawn point as they log in. The spawn point is the one set with /pduels setLobby, and nothing happens if none has been set yet. Players who respawn outside a match are always sent there regardless of this option. ```yaml teleport-on-join: true ``` ### Player Interaction Menu Lets players right-click each other in the lobby to open a small menu offering a duel invitation and a party invitation for that player. It never opens for NPCs, and never while either of the two is in a match. ```yaml player-interaction-menu: true ``` The menu itself, including which items sit in it and what they run, is a normal menu file and can be edited or given extra items like any other. Bedrock players get it as a form, see [GeyserMC (Bedrock)](../../configurations/geysermc-bedrock.md). ### Where the Add-On Applies Hotbar items, the scoreboard and the player interaction menu all follow the world list of the main configuration, so a world excluded from PhoenixDuels gets none of them. Walking out of a lobby world clears the hotbar items, and walking back in hands them out again. With PhoenixLobby 3.3.0 or newer on the same server, PhoenixLobby leaves its own lobby items out of the worlds where this add-on hands out its hotbar. Its Stand Down In Duels Worlds join setting turns that off. Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/lobby-items --- # โš”๏ธ Inventory Stages ## Default Lobby Items The lobby includes special items to help users navigate the pluginโ€™s features more easily. By default, the lobby items are: * **Play Unranked**** -** Iron Sword * **Play Ranked**** -** Diamond Sword * **Kit Editor** - Book * **Party** - Nether Star * **Statistics** - Item Frame * **Setting**** -** Comparator

Default Lobby Items

## Party Items When a user joins a party, their hotbar items automatically change to enhance navigation and make it easier to play games with the party. The items available during the party state are: * **Play Unranked** - Iron Sword * **Play Ranked** - Diamond Sword * **Play Private FFA** - Iron Axe * **Split the Party** - Golden Axe * **Fight another Party** - Diamond Axe * **Manage your Party** - Nether Star * **Leave the Party** - Red Dye

Party Lobby Items

## Queue Items When the party is queuing, the hotbar items automatically update to include a red dye. Clicking on the red dye allows a party member to leave the queue, which will stop the entire party from queuing.

Queue Lobby Items

## Rematch Item When the Rematch & Requeue add-on opens a rematch window for a player at the end of a match, a clock is laid over the hotbar for as long as that window lasts and disappears again once it expires. It has its own slot on the default stage and on the party stage; the queue stage has no rematch item, so nothing is overlaid while a player is queueing. ```yaml hotbar: rematch-item: default: slot: 4 material: CLOCK party: slot: 3 material: CLOCK ``` ## Held Slot Each stage decides which hotbar slot the player is left holding once the items are handed out. Unlike the item slots above, this one counts from 0 on the left, so 8 is the far right of the hotbar. ```yaml hotbar: enabled: true player-held-slot: default: 0 party: 7 queue: 8 ``` Turning the hotbar off leaves player inventories untouched. The lobby scoreboard and the join actions keep working. ## Item Protection Hotbar items cannot be dropped, moved around an inventory, swapped into the off hand, or left behind as a death drop. Players in creative mode are exempt from all of that, so an admin can still clear their own hotbar. ## Inventory Clearing Switching between the default, party and queue stages only swaps the lobby items, so everything else a player carries stays, such as items won from a bet or an inventory handed back after a match. The whole inventory is cleared only when a player joins, respawns, or moves into or out of a lobby world. ```yaml hotbar: clear-inventory: true ``` Turning it off makes those moments remove only the lobby items too. A player's own item sitting in a slot a lobby item needs is moved to a free slot, or to [Lost Items](../../features/lost-items.md) when the inventory is full. ## Previewing a Stage /pduels lobbyitems \ hands you the items of that stage without having to actually join a party or a queue first. The next event that rebuilds your hotbar, such as joining a party or leaving a match, replaces them again. ## Extra ### 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 ``` Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/lobby-items/inventory-stages --- # ๐Ÿ“Œ Lobby Extras ## Join Actions Every time a user joins the server, specific actions can be triggered. By default, the plugin sends a how to duel message.

Join Message

```yaml lobby: every-join-actions: - '[MESSAGE] &7' - '[MESSAGE] &5&lPHOENIX DUELS' - '[MESSAGE] &7 1v1s, Party FFA/Fight' - '[MESSAGE] &7 Unranked & Ranked Fights' - '[MESSAGE] &7 And much more!' - '[MESSAGE] &7' - '[MESSAGE] &eโฌค To duel, type: &d/duel &e.' - '[MESSAGE] &eโฌค To play, &duse your hotbar&e.' - '[MESSAGE] &7' ``` ## Scoreboard Your server will now display a lobby scoreboard. Note that this scoreboard only appears in the lobby, during a duel the matchโ€™s own scoreboard will take over.

Lobby Scoreboard

```yaml scoreboard: enabled: true refresh-rate: 20 header: interval: 2 frames: - '&5&lPHOENIX DUELS' - '&d&lP&5&lHOENIX DUELS' - '&d&lPH&5&lOENIX DUELS' - '&5&lP&d&lHO&5&lENIX DUELS' - '&5&lPH&d&lOE&5&lNIX DUELS' - '&5&lPHO&d&lEN&5&lIX DUELS' - '&5&lPHOE&d&lNI&5&lX DUELS' - '&5&lPHOEN&d&lIX&5&l DUELS' - '&5&lPHOENI&d&lX D&5&lUELS' - '&5&lPHOENIX &d&lDU&5&lELS' - '&5&lPHOENIX D&d&lUE&5&lLS' - '&5&lPHOENIX DU&d&lEL&5&lS' - '&5&lPHOENIX DUE&d&lLS' - '&5&lPHOENIX DUEL&d&lS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&d&lPHOENIX DUELS' - '&d&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&d&lPHOENIX DUELS' - '&d&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' - '&5&lPHOENIX DUELS' lines: - '' - ' ๊œฑแด›แด€ส€แด› แด„สœแด€สŸสŸแด‡ษดษขษชษดษข แด˜สŸแด€สแด‡ส€๊œฑ' - ' แดกษชแด›สœ &6/แด…แดœแด‡สŸ <แด˜สŸแด€สแด‡ส€>' - '' - '&3โœ” &fแดษดสŸษชษดแด‡: &3%online%' - '&a๐Ÿช“ &fแด˜สŸแด€สษชษดษข: &a%playing%' - '&6โ™  &fวซแดœแด‡แดœแด‡ษชษดษข: &6%queueing%' - '' - '&c๐Ÿ—ก &fแด‹ษชสŸสŸ๊œฑ: &c%kills%' - '&4โ˜  &fแด…แด‡แด€แด›สœ๊œฑ: &4%deaths%' - '' - ' แด„แดษด๊œฐษชษขแดœส€แด‡ แด…แดœแด‡สŸ๊œฑ:' - ' &e/แด˜สœแดแด‡ษดษชxแด…แดœแด‡สŸ๊œฑ แด‡แด…ษชแด›แดส€' - '' - ' &dwww.phoenixplugins.com ' ``` ### Scoreboard Placeholders Beyond every PlaceholderAPI placeholder installed on your server, the lobby scoreboard understands the following on its own. | Placeholder | Description | | ------------- | ------------------------------------------------------------- | | %player% | The name of the player looking at the board. | | %online% | The amount of players online. | | %max_online% | The player slot limit of the server. | | %playing% | The amount of players currently inside a match. | | %queueing% | The amount of players currently in a queue. | | %kills% | The player's kills across challenge, unranked and ranked combined. | | %deaths% | The player's deaths across challenge, unranked and ranked combined. | If another plugin claims a player's sidebar, the lobby board steps aside for it and comes back on its own once that claim is released. ## Teleport on Join Sends every player to the lobby spawn point as they log in. The spawn point is the one set with /pduels setLobby, and nothing happens if none has been set yet. Players who respawn outside a match are always sent there regardless of this option. ```yaml teleport-on-join: true ``` ## Player Interaction Menu Lets players right-click each other in the lobby to open a small menu offering a duel invitation and a party invitation for that player. It never opens for NPCs, and never while either of the two is in a match. ```yaml player-interaction-menu: true ``` The menu itself, including which items sit in it and what they run, is a normal menu file and can be edited or given extra items like any other. ## Where the Add-On Applies Hotbar items, the scoreboard and the player interaction menu all follow the world list of the main configuration, so a world excluded from PhoenixDuels gets none of them. Walking out of a lobby world clears the hotbar items, and walking back in hands them out again. With PhoenixLobby 3.3.0 or newer on the same server, PhoenixLobby leaves its own lobby items out of the worlds where this add-on hands out its hotbar. Its Stand Down In Duels Worlds join setting turns that off. Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/lobby-items/lobby-extras --- # ๐Ÿช“ Player Kits ## Information The Player Kits add-on allows your players to create their own personalized kits using a predefined set of items that you configure. This add-on requires PhoenixDuels Premium.

Player Kits - Add-on

:point\_right: [You can purchase this add-on on Phoenix Store](https://www.myphoenixstore.com/en/items/player-kits-addon) ## Installation To install this add-on, simply drag and drop the jar file into the PhoenixDuels/addons folder, then restart your server. The add-on will generate a file in the main PhoenixDuels folder called `player_kits.yml` , which contains all configuration settings for the add-on.
> **Info:** This add-on supports [Folia](../../first-installation.md#version-support), which is still experimental. ## Player Kit Mode When the add-on has been installed, the Loadout Type of a gamemode will now have the Player Kit option. Now, you will be able to create a gamemode that players will use their premade inventories to compete against each other.

Editor > Modes > Mode

## Shared Player Kit Mode Next to Player Kit, the Loadout Type list also offers Shared Player Kit. Everyone in the match fights with the selected kit of whoever hosted it, rather than with their own, and each player is told whose kit they have been handed. It is meant for party fights and private matches where one host sets the terms for everybody.

Editor > Modes > Mode

Matches with no host, such as ranked and unranked queues, have no kit to share, so every player falls back to their own selected kit. ## Create Kit Category To configure the Player Kits, open the in-game editor and access it from the main menu.

In-Game Editor

### Categories To create a category, simply click on the green stained glass pane. By default, the plugin includes 6 categories with items, allowing users to create their kits based on those items right away.

Add Category

### Reordering You can use the reordering option to sort the categories in your desired order for the menu.

Reordering Categories

## Edit Kit Category ### Edit Display Item With this option, you can customize the material, display name, and lore that the kit category will have for the user and the admin.

Display Item

### Identifier With this option, you can set a unique identifier for the category. By default, the plugin automatically assigns a unique identifier to each category. Changing this identifier will result in data loss.

Category Identifier

### Category Menu With this option, you can specify which menu you want your category to have. You can create or edit menus inside the menus/playerkits folder. If you create a custom menu from the editor, the plugin will generate a premade layout for it.

Category Menu

### Delete a Category With this option, you can delete a kit category.

Delete Category

> **Danger:** This option is permanent, and categories can't be restored. ## Add Items With the items, you can create and manage the items that will be included in the category.

items

### Reordering You can use the reordering option to sort the items in your desired order for the category menu.

Reordering Rewards

### Edit the Item You can set the Display Item, which is the item players will see and select. Additionally, you can customize its display name and lore to make it more appealing.

Edit Item

### Target Slot This option is mainly used to identify armor slots. If you have an item that its an armor set, make sure to select the corresponding attribute.

Target Slot

### Remove Item With this option you can delete an item.
> **Danger:** This option is permanent, and items can't be restored. ### Picker Slot Pins the item to a fixed position in the kit editor's picker grid instead of letting it flow into the next free space. The grid is 25 slots per page, numbered from 0, and a value of 25 or higher lands the item on a later page. Leaving it at -1 means auto-fill: the item takes whatever position the ones declared before it leave open. Use it when a category needs a deliberate shape, such as one armor material per row. ## Configure Slots ### Default Slots With default slots, you can set the number of slots players will have. By default, this is set to 3, allowing users to create up to 3 custom kits.

Default Slots

As shown below, the user has access to only 3 custom kits, as specified above.

Locked Slots

### Permission Slots With Permission Slots, you can grant users additional slots beyond the default ones. Keep in mind that these are extra slots, not replacements for the default slots.

Permission Slots

### Add Permission Slots To create a new permission slot, simply click on the green stained glass.

Add Permission Slot

After that, youโ€™ll need to specify the permission you want your users to have and the number of slots to grant. Thereโ€™s also an option to delete a specific slot if needed

Permission Slot

> **Info:** Permission slots do not stack. A player who matches several of them only gets the largest one, added on top of the default slots. Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/player-kits --- # ๐Ÿช Add Items ## Items With the items, you can create and manage the items that will be included in the category.

items

## Reordering You can use the reordering option to sort the items in your desired order for the category menu.

Reordering Rewards

## Edit the Item You can set the Display Item, which is the item players will see and select. Additionally, you can customize its display name and lore to make it more appealing.

Edit Item

## Target Slot This option is mainly used to identify armor slots. If you have an item that its an armor set, make sure to select the corresponding attribute.

Target Slot

## Remove Item With this option you can delete an item.
> **Danger:** This option is permanent, and items can't be restored. ## Picker Slot Pins the item to a fixed position in the kit editor's picker grid instead of letting it flow into the next free space. The grid is 25 slots per page, numbered from 0, and a value of 25 or higher lands the item on a later page. Leaving it at -1 means auto-fill: the item takes whatever position the ones declared before it leave open. Use it when a category needs a deliberate shape, such as one armor material per row. Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/player-kits/add-items --- # ๐Ÿ’บ Configure Slots ## Default Slots With default slots, you can set the number of slots players will have. By default, this is set to 3, allowing users to create up to 3 custom kits.

Default Slots

As shown below, the user has access to only 3 custom kits, as specified above.

Locked Slots

## Permission Slots With Permission Slots, you can grant users additional slots beyond the default ones. Keep in mind that these are extra slots, not replacements for the default slots.

Permission Slots

## Add Permission Slots To create a new permission slot, simply click on the green stained glass.

Add Permission Slot

After that, youโ€™ll need to specify the permission you want your users to have and the number of slots to grant. Thereโ€™s also an option to delete a specific slot if needed

Permission Slot

> **Info:** Permission slots do not stack. A player who matches several of them only gets the largest one, added on top of the default slots. Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/player-kits/configure-slots --- # ๐Ÿ“š Create Kit Category ## Configure a Player Kit To configure the Player Kits, open the in-game editor and access it from the main menu.

In-Game Editor

## Categories To create a category, simply click on the green stained glass pane. By default, the plugin includes 6 categories with items, allowing users to create their kits based on those items right away.

Add Category

## Reordering You can use the reordering option to sort the categories in your desired order for the menu.

Reordering Categories

Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/player-kits/create-kit-category --- # ๐ŸŽจ Edit Kit Category ## Edit Display Item With this option, you can customize the material, display name, and lore that the kit category will have for the user and the admin.

Display Item

## Identifier With this option, you can set a unique identifier for the category. By default, the plugin automatically assigns a unique identifier to each category. Changing this identifier will result in data loss.

Category Identifier

## Category Menu With this option, you can specify which menu you want your category to have. You can create or edit menus inside the menus/playerkits folder. If you create a custom menu from the editor, the plugin will generate a premade layout for it.

Category Menu

## Delete a Category With this option, you can delete a kit category.

Delete Category

> **Danger:** This option is permanent, and categories can't be restored. Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/player-kits/edit-kit-category --- # ๐Ÿงฐ The Kit Editor ## Opening the Editor Players reach their kits from the Player Kits button of /kiteditor, or straight away with /kiteditor playerkits. The list that opens shows one entry per slot the player owns; clicking an entry edits that kit, and the button underneath it marks which kit is the selected one used in matches. The selection is saved with the player's data, so it stays across reconnects and restarts. Bedrock players get the list as a form and choose between selecting and editing a kit, while the editing screen stays a chest menu, see [GeyserMC (Bedrock)](../../configurations/geysermc-bedrock.md).

Kit Editor

Your Player Kits

## The Editing Screen While a kit is open, the player's real inventory is put aside and handed back untouched on close, so nothing they were carrying can be lost or duplicated into a kit. The upper half is the kit itself, laid out like a survival inventory with an armor row and an off-hand slot at the bottom. The lower half is the picker: the hotbar holds the tools, and the three rows above it hold whatever the current tool is showing. Items are placed by dragging them out of the picker into the kit area. Middle-clicking any item copies it onto the cursor, which is the quickest way to fill several slots with the same thing. Dropping an item outside the window discards it, and so does clicking the trash bin.

Editing Player Kit

Editing Player Kit

## Categories The first hotbar slot cycles through the categories you configured. Each category fills the picker grid with its own items, paginated when there are more than 25 of them, with page arrows on the left and right of the row above the hotbar.

Editing Player Kit

## Enchanter Slot Dropping an item into the enchanter slot turns the picker grid into a list of enchantment books, showing only the enchantments that can legally go on that item. Each book carries the level the item is currently at and the cap it can be taken to, and clicking it walks that level up or down. An enchantment that conflicts with one already on the item, such as Sharpness with Smite, cannot be added. A barrier on the right of the third row strips every enchantment back off at once.

Editing Player Kit

Editing Player Kit

Only the first 25 applicable enchantments are shown, so a heavily modded server may want to narrow the list down with the whitelist below. ## Stack Size and Durability Two more hotbar slots accept an item the same way the enchanter slot does, and offer quick values for it: stack sizes of 1, 8, 16, 32 and 64, and durability at 100%, 75%, 50%, 25% and 1% of the item's maximum. Sizes above what the item can actually stack to are greyed out, and the durability slot stays inactive for items that have no durability at all.

Editing Player Kit

Editing Player Kit

Editing Player Kit

## Trim Slot Dropping a piece of armor into the trim slot turns the picker into a pattern row and a material row, both paginated. Picking one of each applies the trim to the armor, and a barrier on the right of the third row removes it again. Patterns and materials the player has no permission for are shown as a locked tile naming the permission they are missing.

Editing Player Kit

Editing Player Kit

Editing Player Kit

Editing Player Kit

## Saving Save and Go Back both write the kit and return to the kit list; Reset puts the kit back to how it looked when the screen was opened. Closing with Escape, disconnecting, or a server shutdown all save the kit exactly as saving would, so no work is lost by leaving the wrong way. Dying while a kit is open saves it too and closes the editor, and the player's own inventory comes back once they respawn.

Editing Player Kit

## Enchantment Limits Two options in the add-on configuration bound what the enchanter can hand out. They have no editor screen, so they are set in the file directly. ```yaml allowed-enchantments: [] max-enchantment-level: -1 ``` An empty whitelist offers every vanilla enchantment. Filling it in restricts the enchanter to the names listed, on top of the usual rule that an enchantment still has to fit the item. A level cap of -1 keeps each enchantment's own vanilla maximum; any positive value replaces that maximum for all of them, which is how you allow Sharpness X. > **Info:** The cap only binds the editor. Levels already stored in a player's kit are applied to the item as they are. ## Trim Permissions Armor trims are gated one pattern and one material at a time, and the nodes are shared with the rest of PhoenixDuels rather than being specific to player kits. | Permission | Description | | ---------------------------------------------- | ----------------------------------------------- | | phoenixplugins.trim.pattern.\ | Allows using the trim pattern matching ``. | | phoenixplugins.trim.material.\ | Allows using the trim material matching ``. | Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/player-kits/kit-editor --- # ๐Ÿ‘ฅ Public FFA ## Information The Public FFA add-on lets admins build free-for-all arenas that players walk into and fight in, each with its own kits, rules, regions, scoreboard and tablist. On top of the arenas it adds the Public Fights, Mob Killing and Hunger Games game modes, player bounties, scheduled King of the Hill events, and per-arena statistics and leaderboards.

Public FFA - Add-on

๐Ÿ‘‰ [You can purchase this add-on on Phoenix Store](https://www.phoenixplugins.com/product/public-ffa-addon) ## Requirements | Requirement | Needed for | | --- | --- | | PhoenixDuels Premium | Everything. The add-on refuses to load on any other edition. | | Vault and an economy plugin | Bounties. | | PlaceholderAPI | The [placeholders](statistics.md#placeholders), and placeholders inside scoreboards and tablists. | | WorldEdit or FastAsyncWorldEdit | Only the WorldEdit regeneration engine. The internal engine needs nothing. | ## Installation Drag and drop the jar file into the PhoenixDuels/addons folder, then restart your server. The add-on keeps its files in its own PhoenixDuels/public\_ffa folder. | File | Contents | | --- | --- | | `config.yml` | Database, worlds, command names, global arena settings, bounty limits and stats intervals. | | `ffa_arenas/` | One file per arena. | | `kits/` | One file per kit. | | `gamemodes/` | One file per game mode. | | `events/` | One file per event. | | `ffa_arena_groups.yml` | Arena groups. | | `ffa_bounties.yml` | Active bounties and who paid into them. | | `ffa_signs.yml` | Kit signs and the sign text templates. | | `menus/` | The player menus: `arenas.yml`, `kits.yml`, `gamemodes.yml`, `bounties.yml` and `confirmation.yml`. | | `translations/translations.en.yml` | Messages and editor text. | | `inventory_backups/` | Crash-safe copies of the inventories of players inside an arena. | > **Info:** This add-on supports [Folia](../../first-installation.md#version-support), which is still experimental. Everything else is set up in-game with /ffa editor: * [Arenas](arenas.md): regions, style, kits, rules, regeneration, Grid Mode and groups. * [Playing](playing.md): joining, leaving, kit signs, combat log, spectating and menus. * [Game Modes](game-modes.md): Public Fights, Mob Killing, Hunger Games and bounties. * [Events](events.md): scheduled King of the Hill. * [Statistics](statistics.md): stats, leaderboards and placeholders. ## Main Configuration Most of `config.yml` is also editable from **Settings** in the editor. /ffa reload applies changes without a restart. | Key | Default | What it does | | --- | --- | --- | | `database` | SQLite | Where stats are stored, a local SQLite file or a MySQL server. | | `plugin.worlds` | `DISABLED_WORLDS`, `world_nether` | Worlds the add-on works in, as a blacklist or a whitelist. An arena in a world that is filtered out refuses every way in. | | `plugin.stats-update-interval` | 60 | Seconds a daily, monthly or yearly stat placeholder is cached before it is read again. | | `plugin.leaderboard-fetch-interval` | 60 | Seconds a leaderboard placeholder is cached before it is read again. | | `commands` | | The name of each command and whether it is registered, plus `leave-alternative`. | | `global-arena-settings.commands` | `WHITELIST`, empty | Which commands players inside an arena may run. | | `global-arena-settings.restore-last-inventory` | true | Hand back the inventory a player had before entering. | | `global-arena-settings.spectator-tablist-prefix` | `&e[S] ` | Prefix in front of spectators' names in the tablist. | | `global-arena-settings.combat-log.enabled` | true | Combat tagging, see [Combat Log](playing.md#combat-log). | | `bounties` | 50, 10000, 60 | `min-amount`, `max-amount` and `claim-delay-seconds`, see [Bounties](game-modes.md#bounties). | ## Commands /ffa also answers to /phoenixffa and /pffa. Run on its own, it lists the subcommands the sender can use. | Command | Description | | --- | --- | | /ffa arenas | Opens the arena selector. Same as /ffaarenas. | | /ffa kits \ | Opens the kit selector of an arena. | | /ffa randomtp \ | Sends you into an arena. | | /ffa stats \ \[player] | Shows your stats in an arena, or those of an online player. | | /ffa top \ \[metric] \[period] | Shows the top 10 of an arena. Works from the console. | | /ffa bounties \ | Opens the bounty list of an arena. | | /ffa bounty set \ \ | Places a bounty on a player. | | /ffa gamemodes | Opens the game mode selector. | | /ffa gamemode join \ | Joins a Mob Killing or Hunger Games game mode. | | /ffa event start \ | Starts an event right away. Admin. | | /ffa editor | Opens the FFA editor. Admin. | | /ffa editlayout \ | Opens a player menu in the in-game layout editor. Admin. | | /ffa reload | Reloads the add-on. Admin. | | /ffa undogrid | Undoes your last Grid Mode generation. Admin. | | /ffaarenas | Opens the arena selector. | | /ffaspectate \ | Spectates an arena. | | /ffakilleffects | Opens the PhoenixDuels kill effects menu. | | /ffatrims | Opens the PhoenixDuels armor trims menu. | | /leave | Leaves the arena you are in, or stops spectating. | Every command can be renamed or switched off in `config.yml`, except /leave, which can only be renamed. Renaming /ffa does not touch its /phoenixffa and /pffa aliases. The kill effect and trims a player picks are shared with PhoenixDuels, so the same choice applies in duels and in FFA arenas. See [Kill Effects](../../features/kill-effects.md) and [Armor Trims](../../features/trims.md). ## Permissions | Permission | Description | | --- | --- | | phoenixffa.admin | The admin subcommands above, creating, editing and breaking kit signs, and running any command inside an arena. | | phoenixffa.arena.bypassfull | Joining a Restricted arena that is already full. | | phoenixduels.trims.use | Using /ffatrims. | Every other command needs no permission. Each Restricted arena and each kit can also require a permission of its own, set in its editor. Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/public-ffa --- # Arenas Arenas are created and edited from **Arenas** in /ffa editor. A disabled arena is switched off completely: players inside it are not tracked, and the selector, kit signs, /ffa randomtp and game modes skip it. ## Template The template holds the arena's regions and locations. **Create Template** only succeeds once the universal region, the battle region, at least one spawn location and the lobby location are set, and Grid Mode stays locked until it has. | Part | What it does | | --- | --- | | Universal Region | The arena itself. Walking or teleporting into it joins the arena, leaving it leaves the arena. Setting it the first time also sets the battle region to the same box. | | Battle Region | Must sit fully inside the universal region. With the Premade Kit loadout, the kit is handed out when a player enters it. It is also where the Hunger Games border starts and where Mob Killing mobs are kept. | | Safe Region | No player can hurt another while either of them stands in it, and no kit is handed out there. | | Spawn Locations | Random entry points when the arena has no lobby location, the Hunger Games starting spots and the Mob Killing mob spawns. | | Lobby Location | Where the arena selector, kit signs, /ffa randomtp and /leave send players, and where refused players are pushed back to. Players who log in inside the arena are moved here. | | Spectator Location | Where /ffaspectate and eliminated game mode players go. Spectating is off without it. Must be inside the universal region. | | Loot Chest Locations | The Hunger Games chests. Each one needs a real chest block. | ## Arena Style A **Public** arena has no limits: anyone can walk in. A **Restricted** arena unlocks four more settings on right-click. | Setting | What it does | | --- | --- | | Max Players | Players allowed in at once, spectators not counted. 0 means no limit. phoenixffa.arena.bypassfull ignores it. | | Minimum Players | Players a Mob Killing or Hunger Games game waits for before its countdown starts. Hunger Games always waits for at least 2. | | Start Countdown | Seconds that countdown lasts. | | Join Permission | A permission every player needs to get in. | Minimum Players and Start Countdown only matter to Mob Killing and Hunger Games. Only Restricted arenas take part in those game modes when they are linked through a [group](#arena-groups). ## Loadout and Kits | Loadout | What players fight with | | --- | --- | | Premade Kit | A kit linked to the arena, handed out when they enter the battle region. Their inventory is cleared on entry. | | Player Inventory | Whatever they walk in with. | | None | Nothing. Their inventory is cleared on entry. | **Linked Kits** decides which kits an arena offers. Players pick one through the [kit selector or a kit sign](playing.md#joining-an-arena). A player who picked nothing, or picked a kit whose permission they lack, gets the arena's fallback kit, and no kit at all when there is no fallback either. After a death the same kit is handed out again on the next entry to the battle region. Kits are built under **Kits** in the editor: items per slot including armor and off-hand, display icon, an optional permission, and kit rules that apply while that kit is the one the player was given. Kit items belong to the arena that handed them out. They disappear when dropped outside it, cannot be picked up by players outside it or by hoppers, and are taken away when the player leaves. ## Rules Rules change how fighting works, from cooldowns and extra hearts to soup, golden heads and Heal on Kill, which heals the killer by a share of their maximum health. The full list, with each rule's own options, is under **Rules** in the arena editor. Rules can sit on three levels: the arena, a sub-region, where they only apply while the player stands inside it, and a kit. ## Sub Regions Sub regions are boxes inside the universal region, each with its own rules, a regeneration toggle and actions that run when a player enters or leaves it. The universal, battle and safe regions appear in the list on their own, so they can carry rules and actions as well. When regions overlap, the player is in all of them: each region's rules apply and its actions run on entering and leaving it. The smallest one counts as the player's current region. The arena itself also has enter and leave actions, on the second page of the arena editor. Action lines use the `[TYPE] value` format, with the types `ACTION_BAR`, `BROADCAST`, `CLOSE_INVENTORY`, `COMMAND`, `GAMEMODE`, `MESSAGE`, `SOUND` and `TITLE`. `%player%` and PlaceholderAPI placeholders work in them. ## Time and Weather Each arena can lock the time to sunrise, day, noon, sunset, night or midnight, and the weather to clear or rain. Only players inside the arena see it, and it goes back to normal when they leave. ## Scoreboard and Tablist Both are set per arena on the second page of the arena editor, and both accept PlaceholderAPI placeholders and MiniMessage. The scoreboard has a header that cycles through its lines as an animation, and up to 15 lines. The tablist has a header, a footer, a refresh rate and a prefix in front of each player's name. | Placeholder | Scoreboard | Tablist | Value | | --- | --- | --- | --- | | %arena% | Yes | Yes | The arena's display name. | | %arena\_players% | Yes | Yes | Players in the arena, spectators excluded. | | %kills% | Yes | | The player's kills in this arena. | | %deaths% | Yes | | The player's deaths in this arena. | | %kdr% | Yes | | The player's kill/death ratio in this arena. | | %streak% | Yes | Yes | The player's current kill streak in this arena. | | %max\_streak% | Yes | | The player's best kill streak in this arena. | | %player% | | Yes | The player's name. | | %online% | | Yes | Players online on the server. | | %max\_online% | | Yes | The server's player limit. | ## Regeneration Regeneration is what lets players build and break blocks in an arena. While it is on, every region with its own regeneration toggle on is restored every few minutes, set by the timer. The battle region starts with its toggle on. | Engine | How it restores | | --- | --- | | Internal | Built in. Restores only the blocks that changed, spread over several ticks. | | WorldEdit | Pastes a schematic. Needs WorldEdit or FastAsyncWorldEdit, and is heavy on large arenas without FAWE. | Turning regeneration on, or a region's toggle on, captures the current state of the regions, and **Generate Schematics** captures it again after you change the build. A region with nothing captured is skipped. > **Warning:** Inside an enabled arena, blocks can only be placed or broken, and containers such as chests only opened, inside a region whose regeneration toggle is on, and only while the arena's regeneration is on. This applies to staff as well, so disable the arena while you build it. Explosions never break the protected blocks. `%phoenixffa_ffa_regeneration_%` shows the seconds left until the next restore. ## Grid Mode Grid Mode copies a finished arena into a grid of new arenas. Each copy gets the build, the arena's settings, and its regions, spawns, loot chests, lobby and spectator locations moved to the new spot. You choose the number of columns and rows, the original counting as the first cell, and the blocks of space between copies. The copy uses the arena's regeneration engine, so the WorldEdit engine needs WorldEdit installed here too. The new arenas go into the original arena's [group](#arena-groups), or into a new group named after it when it has none. /ffa undogrid, or the clickable message sent when the grid finishes, removes the new arenas and puts back what was there before. It works for five minutes, and only for the admin who generated the grid. ## Arena Groups A group bundles arenas, usually copies of the same map. Turn on grouping in the arena list, then click two arenas to group them, or an arena and a group to add it. An arena can only be in one group. The first arena in a group is its main arena. Its editor gets **Enforce Changes**, which copies its settings onto every other arena in the group while each keeps its own identifier. A group can be linked to a Mob Killing or Hunger Games game mode instead of linking its arenas one by one. Only its Restricted arenas take part, see [Game Modes](game-modes.md#linking-arenas). Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/public-ffa/arenas --- # Events Events are created under **Events** in /ffa editor. King of the Hill (KOTH) is the only event type so far. An event without a type never starts. ## Scheduling An event starts on its scheduled day, month, year and hour, checked once a minute. Without **On Repeat** it runs once. With it, it runs again every day, week or month from that first date. If the server was offline through several repeats, only the most recent one runs when it comes back, not every missed one. The display name is what announcements and the boss bar call the event. Without one, they use its identifier. /ffa event start \ starts an event right away, regardless of its schedule. It needs phoenixffa.admin and is refused when the event has no type, a KOTH event has no region, or the event is already running. ## King of the Hill A KOTH is won by standing alone on the hill until the capture time is reached. The start, the winner, and a contest that ends without one are announced to the whole server. | Setting | What it does | | --- | --- | | Region | The hill. It does not have to be inside an arena. A KOTH without a region is skipped when its time comes. | | Capture Seconds | Seconds a player has to hold the hill alone. 300 by default. | | Max Contest Duration | Seconds before the event ends with no winner. 1800 by default. | | Reset On Vacate | Whether progress drops to zero when the hill is left empty. Off keeps it, but only for the same player coming back. | | Rewards | Actions and items for the winner. Items that do not fit are dropped at their feet. | Progress only counts while exactly one player is on the hill. With two or more it is contested and the progress freezes. When a different player takes the hill on their own, the progress starts again from zero. Dead players, players in creative or spectator mode, and players spectating an FFA arena cannot capture. A boss bar with the event's state and progress is shown to every player within 64 blocks of the centre of the hill. Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/public-ffa/events --- # ๐Ÿคทโ€โ™‚๏ธ Miscellaneous Settings ## Heal on Kill Heal on Kill is an arena rule. It heals the killer by a share of their maximum health after every kill, where 100% is a full heal.

Heal on Kill

## Reset KillStreak on Quit When reset killstreak on quit is enabled, it will reset the player's killstreak when they disconnect from the server. It is part of the kill streak settings of a Public Fights game mode and applies to every arena linked to it.

Reset Killstreak on Quit

## Stats Message This option allows you to modify the `/ffa stats [player]` message. It is part of the message settings of a Public Fights game mode. The available placeholders are as follows: - `%arena%`: The arena's display name - `%player%`: The player's name - `%kills%`: The player's kills - `%deaths%`: The player's deaths - `%kdr%`: The player's kill/death ratio - `%current_streak%`: The player's current killstreak - `%best_streak%`: The player's best killstreak

Stats Message

Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/public-ffa/extra-settings/miscellaneous --- # โœ๏ธ Create a Kit Sign ## Set up a Kit Sign A kit sign sends a player into an FFA arena with the kit it names. The format to set up the kit sign is as follows.

Kit Sign Format

[FFA]
The ID of the FFA Arena
The ID of the Linked Kit
The kit has to be one of the kits linked to that arena, otherwise the sign is not registered. Creating a sign requires phoenixffa.admin. ## Modification If you want to modify the kit sign at any point, you can either edit it manually in the `ffa_signs.yml` file, or Shift + Right-click the sign. ## Using the Sign Right-clicking the sign selects its kit and sends the player to the arena's lobby location, or to a random spawn point when it has none. The sign goes through the same entry checks as every other way into the arena, and also refuses players without the kit's permission. ## Sign Text Every kit sign is drawn from one template, with `%arena%` and `%kit%` filled in. A sign whose arena or kit no longer exists switches to its own template, so a broken sign is obvious in-game. ```yaml sign-lines: - '&8[&4&lFFA&r&8]' - '&7%arena%' - '&a%kit%' - '&eRight-Click' ``` ## Removing a Sign Breaking the sign removes it. Players without phoenixffa.admin cannot break a kit sign. Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/public-ffa/extra-settings/sign-creation --- # Game Modes Game modes are created under **Gamemodes** in /ffa editor. Each one has a type, and one game mode can serve many arenas. | Type | How it runs | How it is linked | | --- | --- | --- | | Public Fights | Always on. Adds kill streaks, launch pads, bounties and public messages to ordinary FFA fighting. | From the arena: **Gamemode** in the arena editor. An arena has at most one. | | Mob Killing | A game players join. They fight waves of mobs together. | From the game mode: **Linked Arenas**. | | Hunger Games | A game players join. Last player standing wins. | From the game mode: **Linked Arenas**. | ## Public Fights An arena without a Public Fights game mode has no kill streaks, launch pads, bounties or public messages, and /ffa stats refuses it. ### Kill Streaks Each kill streak runs its actions when a player reaches exactly its kill count, so a list of 5, 10 and 20 rewards each milestone once per streak. A streak ends on death. **Reset Killstreak on Quit** also ends it when the player disconnects. Without it, a player picks the streak up again when they come back.

Reset Killstreak on Quit

### Launch Pads A launch pad is any spot where the top block sits on the bottom block, a slime block on a diamond block by default. A pressure plate or a slab works as the top block. Stepping on one throws the player in the direction they are looking. Forward and up power are capped at 4. With fall damage off, the player takes none on their first landing after the launch. ### Public Messages | Message | Sent when | Placeholders | | --- | --- | --- | | Death Message | A player is killed by another. Replaces the vanilla death message. | %victim%, %player% (the killer), %player\_health% (the killer's hearts) | | Lost Streak | A player with a kill streak dies. | %player%, %streak% | | Bounty claim | A bounty is claimed, see [Bounties](#bounties). | %killer%, %target%, %amount% | | Stats Message | A player runs /ffa stats. Only the sender sees it. | %arena%, %player%, %kills%, %deaths%, %kdr%, %best\_streak%, %current\_streak% | The first three are only sent when the victim is in one of the whitelisted worlds, or in any world while the list is empty. They go to players inside the arena, or to the whole server with **Global Broadcasting** on.

Stats Message

## Mob Killing and Hunger Games ### Joining a Game Players join with /ffa gamemode join \, or from /ffa gamemodes, which lists every Mob Killing and Hunger Games game mode with its status. | Status | Meaning | | --- | --- | | Open | A linked arena is free. Joining starts a new game there. | | Waiting | A game is waiting for players, with the current count and the minimum. | | In progress | Every linked arena is busy. | Joining puts the player in the first linked arena that is free or still waiting for players, starting a new game there when there is none. An arena is skipped when it is disabled, would refuse the player (see [Refusals](playing.md#refusals)), has neither a lobby nor a spawn location, or already has a game running. Joining is refused while the player is in a duel, in a queue, spectating an arena, or already in another Mob Killing or Hunger Games game. The game waits until the arena's Minimum Players have joined, then counts down for its Start Countdown. Players can keep joining during the countdown, and the countdown stops if too many leave. From the moment the game starts, the arena is locked to everyone else until it ends. When the game ends, every player is sent to the arena's lobby location and gets their inventory back. The win rewards, a list of actions and a list of items, are handed out after that, so a player who died as the game ended still gets them after respawning. Items that do not fit are dropped at their feet. Eliminated players spectate the rest of the game when the arena has a spectator location. ### Linking Arenas **Linked Arenas** takes arenas and [arena groups](arenas.md#arena-groups). A linked group adds only its Restricted arenas. Arenas linked on their own are tried first, in the order they were linked, then the arenas of each group. ### Mob Killing Players fight waves of mobs together. The game is won when the last wave is cleared, and lost when every player has died. All players are rewarded on a win, including those who died earlier. | Setting | What it does | | --- | --- | | Allowed Entities | The mob types a wave picks from. The game mode cannot be joined until at least one is chosen. | | Total Waves | Waves to clear to win. | | Base Mob Count | Mobs in the first wave. | | Mob Count Increase / Wave | Mobs added on each following wave. | | Wave Intermission | Seconds of rest between waves. | | Scale With Player Count | Adds Extra Mobs / Player for every player beyond the first. | | Spawn Batch Size and Interval | Mobs spawn a few at a time, this many every this many seconds, at random spawn locations. | Mobs that wander out of the battle region are teleported back to a spawn location. ### Hunger Games The last player alive wins. A Hunger Games game always waits for at least 2 players, even when the arena's Minimum Players is 1. When the countdown ends, players are spread over the arena's spawn locations and the loot chests are filled. A grace period follows in which players cannot hurt each other. | Setting | What it does | | --- | --- | | Loot Pool | Items with a weight each. A higher weight makes an item more likely. The game mode cannot be joined while the pool is empty. | | Min and Max Items Per Chest | How many picks each chest gets. Chests are emptied before they are filled. | | Grace Period | Seconds without PvP after the start. | | Border Shrink | Whether the border moves in. | | Shrink Duration | Seconds the border takes to reach its final size. | | Final Border Inset | Blocks the border moves in from each side of the battle region. | | Border Damage | Damage per second to players fully outside the border. They do not regenerate health while outside. | The border starts at the edges of the battle region once the grace period ends. An arena without a battle region has no border. > **Warning:** Every loot chest location needs a real chest block, otherwise it is skipped. Loot chests can always be opened, even outside a region with regeneration on. ## Bounties Players can put a price on another player's head in an arena. Bounties need Vault with an economy plugin, and the arena's Public Fights game mode needs both **Bounty Status** and **Player Bounty Enabled** on. Both toggles stay locked while Vault is missing. /ffa bounty set \ \ charges the placer the bounty amount of that game mode and adds it to the target's bounty in that arena. Several players can pay into the same bounty. Players cannot target themselves, and the target must have joined the server before. | Setting | Where | What it does | | --- | --- | --- | | Bounty Amount | The game mode | The fixed price of one placement. | | `bounties.min-amount`, `bounties.max-amount` | `config.yml` | The amount is held between these, 50 and 10000 by default. | | `bounties.claim-delay-seconds` | `config.yml` | Seconds after the first payment before the bounty can be claimed, 60 by default. | The player who kills the target in that arena receives the whole bounty. A kill before the claim delay is over pays nothing and leaves the bounty in place. Deleting an arena refunds its bounties to everyone who paid into them. /ffa bounties \ lists the active bounties of an arena with their total and contributors. Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/public-ffa/game-modes --- # Placeholders ## PlaceholderAPI Placeholders The following is the list of the available placeholders that Public FFA has. They need PlaceholderAPI and only return a value for online players. Replace `` and `` with an identifier. | Placeholders | Description | | ---------------------------------------------- | ---------------------------------------------------------------- | | %phoenixffa_ffa_player_arena% | Returns the identifier of the arena the player is in. | | %phoenixffa_ffa_player_arena_display% | Returns the display name of the arena the player is in. | | %phoenixffa_ffa_player_region% | Returns the identifier of the region the player is in. | | %phoenixffa_ffa_player_region_display% | Returns the display name of the region the player is in. | | %phoenixffa_ffa_is_in_\% | Returns whether the player is inside the arena. | | %phoenixffa_ffa_players_arena_\% | Returns the amount of players in the arena, spectators excluded. | | %phoenixffa_ffa_players_region_\% | Returns the amount of players in the region. | | %phoenixffa_ffa_regeneration_\% | Returns the seconds until the arena regenerates. | | %phoenixffa_ffa_stats_\_\_\% | Returns the player's stat in the arena over the period. | | %phoenixffa_ffa_leaderboard_\_\_\_\% | Returns the name of the player at that leaderboard position. | | %phoenixffa_ffa_leaderboard_\_\_\_\_value% | Returns the stat of the player at that leaderboard position. | | %phoenixffa_ffa_bounty_count_\% | Returns the amount of active bounties in the arena. | | %phoenixffa_ffa_bounty_total_\% | Returns the total of all active bounties in the arena. | | %phoenixffa_ffa_bounty_top_target_\% | Returns the name of the player with the highest bounty. | | %phoenixffa_ffa_bounty_top_amount_\% | Returns the highest bounty in the arena. | | %phoenixffa_ffa_bounty_self_\% | Returns the bounty on the player in the arena. | ## Periods and Stats | Period | Covers | | ------- | ---------------------- | | alltime | No time limit. | | daily | The last 24 hours. | | monthly | The last 30 days. | | yearly | The last 365 days. | The stat is one of `kills`, `deaths`, `kdratio`, `killstreak` or `beststreak`. In leaderboards and in the daily, monthly and yearly stats, `killstreak` returns the best streak, the same as `beststreak`. The period can be left out of a leaderboard placeholder, which then uses alltime. Leaderboards and the daily, monthly and yearly stats are read in the background, so they show `...` until the first read finishes. Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/public-ffa/placeholders --- # Playing ## Joining an Arena | Way in | What it does | | --- | --- | | Walking in | Crossing into the universal region joins the arena. | | /ffa arenas | Lists every enabled arena. Left-click sends the player in, right-click opens that arena's kit selector. | | /ffa kits \ | Opens the kit selector of an arena. Picking a kit sends the player in with it. | | Kit sign | Sends the player in with the kit the sign names, see [Kit Signs](#kit-signs). | | /ffa randomtp \ | Sends the player in. | Everything but walking in sends the player to the arena's lobby location, or to a random spawn location when it has none. A picked kit is handed out once they reach the battle region, and only on the Premade Kit loadout. ### Refusals Every way in, walking in included, is refused in these cases. A player who walks up to such an arena is pushed back to its lobby location. | Reason | When | | --- | --- | | Locked | A Mob Killing or Hunger Games game is running in the arena. Its own players can still move in and out. | | Disabled world | The arena's world is filtered out by the worlds setting in `config.yml`. | | No permission | A Restricted arena requires a permission the player lacks. | | Full | A Restricted arena has reached its Max Players. Spectators do not count, and phoenixffa.arena.bypassfull skips the check. | The kit selector and kit signs also refuse a kit whose permission the player lacks. ### Commands in an Arena By default, players inside an arena can only run /leave and the commands on the whitelist in **Settings > Arena Commands**, which can be switched to a blacklist instead. Players with phoenixffa.admin are exempt. ## Leaving an Arena A player leaves by running /leave, by walking or teleporting out of the universal region, or by disconnecting. The command name is set by `leave-alternative` in `config.yml`, and it only acts for players inside an arena or spectating one. /leave sends the player to the arena's lobby location, or to the [PhoenixDuels lobby](../../features/lobby.md) when the arena has none. It is refused while the player is combat-tagged. ### Restore Last Inventory With **Restore Last Inventory** on, in **Settings** in the editor, players get back the inventory they had before entering, on every way out. It applies to the Premade Kit and None loadouts, the two that clear the inventory on entry. Health, hunger, levels, game mode and potion effects are put back either way. While a player is inside, a copy of that inventory is also kept in `inventory_backups/`. If the server stops before they leave, the copy is handed back the next time they join and then deleted. ## Combat Log When a player hits another inside an arena, both are combat-tagged for 15 seconds, renewed on every hit. A tagged player cannot use /leave, and one who disconnects while tagged is killed on the spot, with a combat log death message. The combat log can be turned off in **Settings** in the editor. ## Kit Signs A kit sign sends a player into an FFA arena with the kit it names. Write the following on a sign:

Kit Sign Format

[FFA]
The ID of the FFA Arena
The ID of the Linked Kit
The kit has to be one of the kits linked to that arena, otherwise the sign is not registered. Creating, editing and breaking kit signs requires phoenixffa.admin. Writing the format without it leaves an ordinary sign. To change a sign later, Shift + Right-click it to reopen the text, or edit it in `ffa_signs.yml`. Breaking it removes it. Every kit sign is drawn from one template, with `%arena%` and `%kit%` filled in. A sign whose arena no longer exists, or whose kit is no longer linked to it, switches to its own template, so a broken sign is obvious in-game. ```yaml sign-lines: - '&8[&4&lFFA&r&8]' - '&7%arena%' - '&a%kit%' - '&eRight-Click' ``` ## Spectating /ffaspectate \ teleports a player to the arena's spectator location in PhoenixDuels [spectator mode](../../features/spectator.md), so it only works on arenas that have one, and not while the player is in an arena themselves. Spectators get no kit, do not count as players, and can only use /leave, which puts them back where they were with the inventory they had. Spectators show the spectator tablist prefix in front of their name, set in **Settings** in the editor. ## Menus The player menus are files in the `menus` folder, and each one can be rearranged in-game with /ffa editlayout \ or from **Menu Layouts** in the editor, which works like the [In-Game Menu Editor](../../configurations/in-game-menu-editor.md). Bedrock players get them as forms, see [GeyserMC (Bedrock)](../../configurations/geysermc-bedrock.md). | Menu | Opened by | Placeholders | | --- | --- | --- | | arenas | /ffa arenas, /ffaarenas | %arena% | | kits | /ffa kits, right-click in the arena selector | %kit%, %arena% | | gamemodes | /ffa gamemodes | %gamemode%, %type%, %status% | | bounties | /ffa bounties | %arena% in the title, %target%, %id%, %amount%, and %player% and %amount% on each contributor line | `confirmation.yml` is the "Are you sure?" screen used in the editor. It has no layout editor entry and is changed in the file only. /ffa reload reloads every menu. Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/public-ffa/playing --- # Statistics Kills, deaths, kill/death ratio, current kill streak and best kill streak are tracked per arena, for every kill that happens inside one. A kill streak ends on death. ## Commands /ffa stats \ \[player] shows a player's stats in an arena in chat, using the stats message of the arena's [Public Fights](game-modes.md#public-messages) game mode. It is refused for an arena without one, and the player has to be online. /ffa top \ \[metric] \[period] shows the top 10 of an arena. The metric defaults to kills and the period to alltime. | Metric | Ranks by | | --- | --- | | kills | Kills. | | deaths | Deaths. | | kdratio | Kills divided by deaths. | | killstreak | The current kill streak of the players in the arena right now. The period is ignored. | | beststreak | The best kill streak reached. | | Period | Covers | | --- | --- | | alltime | No time limit. | | daily | The last 24 hours. | | monthly | The last 30 days. | | yearly | The last 365 days. | Rankings include the kills and deaths of players who are in the arena right now, so a fight shows up before the player leaves. ## Placeholders These need PlaceholderAPI and only return a value for online players. Replace `` and `` with an identifier, `` and `` with a period and metric from the tables above, and `` with a rank starting at 1. | Placeholder | Returns | | --- | --- | | %phoenixffa\_ffa\_player\_arena% | The identifier of the arena the player is in, or N/A. | | %phoenixffa\_ffa\_player\_arena\_display% | The display name of the arena the player is in, or N/A. | | %phoenixffa\_ffa\_player\_region% | The identifier of the region the player is in, or N/A. | | %phoenixffa\_ffa\_player\_region\_display% | The display name of the region the player is in, or N/A. | | %phoenixffa\_ffa\_is\_in\_\% | true or false, whether the player is inside the arena. | | %phoenixffa\_ffa\_players\_arena\_\% | Players in the arena, spectators excluded. | | %phoenixffa\_ffa\_players\_region\_\% | Players in the region. | | %phoenixffa\_ffa\_regeneration\_\% | Seconds until the arena regenerates, or N/A. | | %phoenixffa\_ffa\_stats\_\\_\\_\% | The player's stat in the arena over the period. | | %phoenixffa\_ffa\_leaderboard\_\\_\\_\\_\% | The name of the player at that position. | | %phoenixffa\_ffa\_leaderboard\_\\_\\_\\_\\_value% | The stat of the player at that position. | | %phoenixffa\_ffa\_bounty\_count\_\% | Active bounties in the arena. | | %phoenixffa\_ffa\_bounty\_total\_\% | The total of all active bounties in the arena. | | %phoenixffa\_ffa\_bounty\_top\_target\_\% | The name of the player with the highest bounty, or N/A. | | %phoenixffa\_ffa\_bounty\_top\_amount\_\% | The highest bounty in the arena. | | %phoenixffa\_ffa\_bounty\_self\_\% | The bounty on the player in the arena. | The period can be left out of a leaderboard placeholder, which then uses alltime: `%phoenixffa_ffa_leaderboard_ffa1_kills_1%` is the name of the top killer of `ffa1`. Arena identifiers that contain underscores work as they are. In a stats placeholder, `killstreak` is always the player's current streak, whatever the period. In a leaderboard placeholder it ranks the current streaks of the players in the arena right now, like /ffa top. Leaderboards and the daily, monthly and yearly stats are read from the database in the background and kept for the intervals set in **Settings** in the editor, 60 seconds each by default. They show `...` until the first read finishes. Alltime stats are always live. Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/public-ffa/statistics --- # ๐ŸŽ‰ Public Parties ## Information The Public Parties add-on lets a party leader list their party to the whole server, so players can find it and join it without ever being invited. Parties can be fully open, or accept join requests the leader approves one by one. This add-on requires PhoenixDuels Premium.

Public Parties Add-On

## Installation To install this add-on, simply drag and drop the jar file into the PhoenixDuels/addons folder, then restart your server. These are the following files that this add-on will generate to your PhoenixDuels folder: * `PhoenixDuels/menus/publicparties/browser.yml` - The party browser opened by `/joinparty`. * `PhoenixDuels/menus/publicparties/bans.yml` - The banned players menu. * `PhoenixDuels/translations/publicparties.translations.en.yml` - The translation file for the add-on. It also adds a `public-parties` section to your `config.yml`, extends the existing `menus/party/party.yml` and `menus/party/info.yml` menus, and creates a `%prefix%_publicparties_table` table in your database. > **Warning:** The add-on replaces the party command and the party menus with its own versions while it is loaded, and puts the originals back when it is unloaded. If you already customised `menus/party/info.yml`, the new buttons are appended to it, but existing lines are never rewritten โ€” delete the file if you want the new layout generated from scratch. ## Visibility A party is always in one of three states. The leader switches between them with a command, or by clicking the visibility button in the party menu, which cycles through all three.
StateBehaviour
PrivateThe default. The party is hidden from the browser and can only be joined by invite.
PublicThe party is listed in the browser and anyone can join it instantly.
RequestsThe party is listed, but clicking it sends the leader a request to approve or deny instead of joining.
A listed party can be announced to every online player with `/party announce`. The announcement is skipped for the other members of that party and for anyone banned from it. ## Commands | Command | Description | | ----------------------------- | ------------------------------------------------------------------------------------------------ | | `/joinparty` | Opens the public parties browser. | | `/joinparty ` | Joins that player's party directly, or sends a request if the party is in Requests mode. | | `/joinparty accept ` | Accepts a pending join request. Leader only. | | `/joinparty deny ` | Denies a pending join request. Leader only. | | `/party public` | Lists the party and lets anyone join instantly. Leader only. | | `/party requests` | Lists the party, but every join has to be approved. Leader only. | | `/party private` | Unlists the party and drops every pending request. Leader only. | | `/party announce` | Announces a listed party to every online player. Leader only. | | `/party desc ` | Sets the description shown on the party's entry in the browser. Leader only. | | `/party desc clear` | Removes the description. Leader only. | | `/party ban ` | Bans a player from the party. Leader only. | | `/party unban ` | Lifts a ban. Leader only. | | `/party bans` | Opens the banned players menu. Leader only. | > **Info:** If you renamed the party command through `commands.party.alternative`, these sub-commands follow the new name. Every other party sub-command keeps working exactly as before. `/joinparty` has its own rename option, listed under Configuration. ## The Browser `/joinparty` opens a paginated list of every listed party, refreshed every second. Each entry shows the leader's head, the member count, the members themselves and the party's description. * **Sorting** - cycles between free slots, party size, leader name, instant join and needs approval. The last two only list parties of that kind, and are hidden when join requests are disabled. * **Hide Full Parties** - hides parties with no room left, on by default. Both buttons are per viewer, so two players browsing at the same time keep their own sorting and filtering. Bedrock players get the browser, the party menu and the banned players menu as forms, see [GeyserMC (Bedrock)](../../configurations/geysermc-bedrock.md). The entry lore supports `%player%`, `%members%`, `%max%`, `%members_list%` and `%description%`. The `%description%` line is dropped entirely when the party has no description set, and parties in Requests mode use their own separate entry item. ## Join Rules A join attempt is refused when: * The joiner is already in another party with other players in it. A party they are alone in is disbanded instead, the same as when accepting an invite. * The joiner is in a match or in the queue. * The target party is in a match, in the queue, or has a pending challenge. * The party is full, unless the joiner has the bypass permission. * The joiner is banned from that party. > **Warning:** The match and queue checks cannot be turned off. They exist because a party's roster changing mid-duel breaks the match. Free slots are counted as members **plus** pending invites, which is what the plugin itself enforces โ€” so a party showing an open slot in the browser really has one. ## Descriptions `/party desc ` gives the party a short line of text that shows up on its browser entry, so leaders can say what they are looking for instead of just showing a member count. The length limit and the whole feature are configurable. ## Join Requests In Requests mode, clicking a party in the browser sends its leader a message with clickable `[ACCEPT]` and `[DENY]` buttons, wired to `/joinparty accept` and `/joinparty deny`. Requests expire on their own after the configured time, and are dropped when the party goes private. ## Party Bans A ban stops a player from rejoining a party they were kicked from. Banning someone removes them from the party on the spot, drops any request they had pending, hides the party from their browser, and skips them when the party is announced. Bans last as long as the party exists and are cleared when it disbands. The leader can review and lift them from `/party bans`, or through the **Banned Players** button in the party menu, by clicking a head. ## Configuration The add-on adds a `public-parties` section to your `config.yml`.
Configuration keyDefaultNotes
advertisement.enabledtrueEnables /party announce.
advertisement.cooldown-seconds60How long a party has to wait between two announcements.
maximum-listed-parties0Caps how many parties can be listed at once. 0 is unlimited.
visibility-cooldown-seconds3How long a leader has to wait between two visibility changes, from the menu or a command. 0 turns it off.
browser.hide-full-partiestrueThe starting state of the browser's hide-full toggle.
browser.default-sortSLOTS_REMAININGSLOTS_REMAINING, MEMBERS, LEADER_NAME, INSTANT_JOIN or NEEDS_APPROVAL.
requests.enabledtrueTurning this off removes Requests from the visibility cycle entirely.
requests.expiration-seconds60How long a pending request stays valid.
description.enabledtrueEnables /party desc.
description.maximum-length48Characters allowed in a description.
permissions.enabledfalseGates joining and listing behind the permissions below. Off by default so existing setups keep working.
command.alternativejoinpartyRenames /joinparty, including the accept and deny buttons of join requests. Applied on the next restart.
## Permissions | Permission | Description | | ---------------------------------------- | ---------------------------------------------------------------------------------------- | | phoenixduels.publicparties.join | Allows joining public parties. Only enforced when `permissions.enabled` is on. | | phoenixduels.publicparties.advertise | Allows listing your own party. Only enforced when `permissions.enabled` is on. | | phoenixduels.publicparties.bypass-full | Allows joining a party that is already full. Always enforced. | | phoenixduels.publicparties.announce | Allows `/party announce`. Always enforced. | > **Warning:** `bypass-full` works by raising that party's slot limit by one, because the plugin hard-caps a party at its maximum. The extra slot stays with the party after the bypassing player leaves. ## Storage Visibility, descriptions and bans are written to the `%prefix%_publicparties_table` table through whichever database you have configured, SQLite or MySQL. The table is created and migrated on its own the first time the add-on loads. State is saved when the add-on unloads and restored when it loads again, so reloading the add-on does not silently drop every public party back to private. Rows are deleted as they are read, so parties that died while the add-on was unloaded do not pile up. > **Info:** This does not survive a full server restart, and cannot: parties themselves are never persisted by the plugin, so after a restart there is no party left for a saved row to attach to and every row is discarded. Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/public-parties --- # ๐Ÿ” Rematch & Requeue ## Information The Rematch & Requeue add-on adds two quality-of-life commands, `/duelrematch` and `/duelrequeue`, so players can jump straight back into a match instead of navigating menus after every game. This add-on requires PhoenixDuels Premium.

Rematch & Requeue Add-On

## Installation To install this add-on, simply drag and drop the jar file into the PhoenixDuels/addons folder, then restart your server. This add-on generates the following file: * `PhoenixDuels/translations/rematchrequeue.translations.en.yml` - The translation file for the add-on. ## Commands | Command | Description | | -------------------- | --------------------------------------------------------------------------------------------------------------- | | `/duelrematch` | Re-challenges your most recent 1v1 opponent to the same mode. Only available for a short window (10 seconds) after the match ends. Only works after a clean 1v1 โ€” team and party matches don't have a single "last opponent" to re-challenge. | | `/duelrequeue` | Toggles **Auto-Requeue**. While enabled, you're automatically placed back in queue for the same mode after every match you finish. | ## Auto-Requeue Auto-Requeue is a per-player toggle, saved with the rest of a player's settings. Once turned on with `/duelrequeue`, the player is silently re-queued for whichever mode they just finished playing at the end of every match, until they toggle it off again. Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/rematch-requeue --- # ๐Ÿ›‘ Sign Queues ## Information The Sign Queues add-on allows the admins to create signs that players can use to queue for a game mode. This add-on requires PhoenixDuels Premium.

Sign Queues - Add-on

๐Ÿ‘‰ [You can purchase this add-on on Phoenix Store](https://www.phoenixplugins.com/product/signqueues-addon) ## Installation To install this add-on, simply drag and drop the jar file into the PhoenixDuels/addons folder, then restart your server. These are the following files that this add-on will generate to your PhoenixDuels folder: - `PhoenixDuels\sign_queue.yml` - Signs and their format can be found on that file. - `PhoenixDuels\translations\signqueue.translations.en.yml` - The translation file for the add-on. > **Info:** This add-on supports [Folia](../../first-installation.md#version-support), which is still experimental. ## Sign Queues Once you have installed the add-on on your server, you will be able to set up signs for queuing similar to the ones below. The plugin supports any type of sign.

Sign Queues in-game

## Sign Text Once a sign is registered, its four lines are rebuilt from a single template shared by every queue sign, so changing the template restyles all of them at once. The [placeholders](#placeholders) work on each line. ```yaml lines: - '&0<&f&lQueue&r&0>' - '&7&l%mode%' - '&7%queue% queueing...' - '&fClick to join' ``` A sign whose mode no longer exists, usually because the mode was renamed or deleted, falls back to a second template instead, so a broken sign is obvious in-game rather than silently doing nothing. ```yaml invalid-lines: - '&0<&f&lQueue&r&0>' - '&cInvalid mode' - '' - '&e&nContact staff!' ``` Signs are redrawn whenever somebody joins or leaves the queue they point at, not on a timer, so the counter on a sign is always current without any polling cost. ## Create Queue Sign The format to set up the queue sign is as follows.

Sign Queue Format

[QUEUE]
The ID of your gamemode
Ranked/Unranked
Solo/Duo/Trio/Quad
### Example If you want to create a queue sign for players to play 1v1 ranked in Crystal mode, it would look like the following:

Example for Crystal Ranked 1v1 Sign Queue<

Sign Queue format in the sign_queue.yml ```yaml '1': location: world: world x: 612.0 y: 102.0 z: -6.0 yaw: 0.0 pitch: 0.0 mode: crystal queue-type: RANKED team-size: SOLO ```
### Modification If you want to modify the queue sign at any point, you can either edit it manually in the `sign_queue.yml` file, as shown in the example above, or Shift + Right-click the sign. ### Placeholders: Here is a list of the placeholders that you can use on the signs. | Placeholder | Description | | ----------- | -------------------------------------------- | | %type% | Returns Ranked, Unranked | | %team% | Returns Solo, Duo, Trio, Quad | | %mode% | Returns the gamemode's display name | | %queue% | Returns the amount of players queuing. | | %queuesize% | Returns the amount of players that can queue | ### Joining and Leaving Right-clicking a sign puts the player in that queue. Right-clicking it again while already queued for that exact mode, type and team size takes them back out, so a single sign covers both directions and no separate leave item is needed. Clicking a sign whose mode no longer exists only warns the player; it never queues them for anything. ### Removing a Sign Breaking the sign removes the registration along with the block. Players without phoenixduels.admin cannot break a queue sign at all, so a registered sign is safe from anyone with build rights in the lobby. > **Info:** Creating and editing queue signs also requires phoenixduels.admin. Writing the format on a sign without it leaves an ordinary sign behind. Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/sign-queues --- # โœ๏ธ Create Queue Sign ## Set up a Queue Sign The format to set up the queue sign is as follows.

Sign Queue Format

[QUEUE]
The ID of your gamemode
Ranked/Unranked
Solo/Duo/Trio/Quad
### Example If you want to create a queue sign for players to play 1v1 ranked in Crystal mode, it would look like the following:

Example for Crystal Ranked 1v1 Sign Queue<

Sign Queue format in the sign_queue.yml ```yaml '1': location: world: world x: 612.0 y: 102.0 z: -6.0 yaw: 0.0 pitch: 0.0 mode: crystal queue-type: RANKED team-size: SOLO ```
## Modification If you want to modify the queue sign at any point, you can either edit it manually in the `sign_queue.yml` file, as shown in the example above, or Shift + Right-click the sign. ## Placeholders: Here is a list of the placeholders that you can use on the signs. | Placeholder | Description | | ----------- | -------------------------------------------- | | %type% | Returns Ranked, Unranked | | %team% | Returns Solo, Duo, Trio, Quad | | %mode% | Returns the gamemode's display name | | %queue% | Returns the amount of players queuing. | | %queuesize% | Returns the amount of players that can queue | ## Joining and Leaving Right-clicking a sign puts the player in that queue. Right-clicking it again while already queued for that exact mode, type and team size takes them back out, so a single sign covers both directions and no separate leave item is needed. Clicking a sign whose mode no longer exists only warns the player; it never queues them for anything. ## Removing a Sign Breaking the sign removes the registration along with the block. Players without phoenixduels.admin cannot break a queue sign at all, so a registered sign is safe from anyone with build rights in the lobby. > **Info:** Creating and editing queue signs also requires phoenixduels.admin. Writing the format on a sign without it leaves an ordinary sign behind. Source: https://www.phoenixplugins.com/docs/phoenix-duels/add-ons/sign-queues/create-queue-sign --- # ๐ŸŒ API > **Danger:** The API is only available for the premium version of the plugin. Build your own extensions for Phoenix Duels with our public API. ## Maven Repository ```xml phoenixplugins https://repo.phoenixplugins.com/ ``` ## Dependency ```xml com.phoenixplugins.phoenixduels api 1.0.0-SNAPSHOT ``` ## Advanced Access (Internal Classes) Our public API covers the recommended integration points for addons. If you need deeper access to internal classes and systems, we recommend using a direct `systemPath` dependency to your local Phoenix Duels plugin JAR. ```xml com.phoenixplugins.phoenixduels internal 1.0.0-SNAPSHOT system ${project.basedir}/libs/PhoenixDuels-1.0.0-SNAPSHOT.jar ``` Place the plugin JAR in your project's `libs` folder before building. By using internal access through `systemPath`, you can work with plugin registries that are not part of the public API, such as: * `MenuRegistry`: register custom menus and menu configurations. * `CommandsRegistry`: register custom commands. * `RuleRegistry`: register custom gamemode rules. * `LoadoutRegistry`: register custom loadout types. * `EditorRegistry`: register custom editor sections. > **Warning:** Internal classes can change between versions without API compatibility guarantees. When possible, prefer public API integrations first. ## Custom Addons Custom Addons are extensions that allow you to extend, modify, or enhance Phoenix Duels behavior with your own Java code. ### Before You Start 1. Add the API [dependency](#dependency). 2. Create your addon project (Maven or Gradle). 3. Make sure your final artifact is a shaded or standalone JAR when needed. ### addon.yml Create an `addon.yml` file in your project resources folder. ```yaml name: AddonName main: your.path.AddonExample author: [YourName] version: 1.0.0 description: Small description (optional) website: https://your-website.com (optional) ``` Required fields: * `name`: Display name of your addon. * `main`: Fully qualified path to your addon main class. * `author`: One or more addon authors. * `version`: Addon version. ### Main Class Example The `main` value in `addon.yml` must point to your class that extends `Addon`. ```java package your.path; import com.phoenixplugins.phoenixduels.api.sdk.plugin.addons.Addon; public class AddonExample extends Addon { @Override public void init() { // Register rules, menus, modules, or listeners. } @Override public void load() { // Runtime registrations and startup logic. } @Override public void unload() { // Cleanup logic. } @Override public void reload() { // Optional runtime reload logic. } @Override public String getRequiredPluginVersion() { return "1.0.0"; } } ``` ### Build and Install 1. Build your addon JAR with your normal project build command. 2. Move the compiled JAR into `plugins/PhoenixDuels/addons`. 3. Restart the server. 4. Check console logs to confirm the addon was loaded successfully. ### Next Step Continue with [๐Ÿงช Examples](examples.md) for practical event and profile integrations. Source: https://www.phoenixplugins.com/docs/phoenix-duels/api --- # ๐Ÿ”ง Custom Addons > **Danger:** The API is only available for the premium version of the plugin. Custom Addons are extensions that allow you to extend, modify, or enhance Phoenix Duels behavior with your own Java code. ## Before You Start 1. Add the API dependency from the [API page](README.md). 2. Create your addon project (Maven or Gradle). 3. Make sure your final artifact is a shaded or standalone JAR when needed. ## addon.yml Create an `addon.yml` file in your project resources folder. ```yaml name: AddonName main: your.path.AddonExample author: [YourName] version: 1.0.0 description: Small description (optional) website: https://your-website.com (optional) ``` Required fields: * `name`: Display name of your addon. * `main`: Fully qualified path to your addon main class. * `author`: One or more addon authors. * `version`: Addon version. ## Main Class Example The `main` value in `addon.yml` must point to your class that extends `Addon`. ```java package your.path; import com.phoenixplugins.phoenixduels.api.sdk.plugin.addons.Addon; public class AddonExample extends Addon { @Override public void init() { // Register rules, menus, modules, or listeners. } @Override public void load() { // Runtime registrations and startup logic. } @Override public void unload() { // Cleanup logic. } @Override public void reload() { // Optional runtime reload logic. } @Override public String getRequiredPluginVersion() { return "1.0.0"; } } ``` ## Build and Install 1. Build your addon JAR with your normal project build command. 2. Move the compiled JAR into `plugins/PhoenixDuels/addons`. 3. Restart the server. 4. Check console logs to confirm the addon was loaded successfully. ## Next Step Continue with [๐Ÿงช Examples](examples.md) for practical event and profile integrations. Source: https://www.phoenixplugins.com/docs/phoenix-duels/api/custom-addons --- # ๐Ÿ“ก Events ## Events Every event below lives under `com.phoenixplugins.phoenixduels.api.events` and is listened to like any other Bukkit event. See [Examples](examples.md) for working listeners. > **Danger:** The API is only available for the premium version of the plugin. ## Match Lifecycle These fire in the order they are listed. Every one of them extends `MatchEvent` and exposes `getMatch()`.
EventCancellableFired when
MatchCreateEventYesA match object has been built but no players have been moved yet. Cancelling stops the match from ever running.
MatchPreStartEventYesJust before players are teleported in, while every start requirement is being checked. See the note below on cancelling with a reason.
MatchStartEventYesThe match is about to begin.
MatchPhaseStartEventNoThe match moves from one state to another. Exposes getOldState() and getNewState().
MatchPreEndEventNoThe match has been decided but has not been cleaned up yet, so match data is still readable.
MatchEndEventNoThe match is over. getConnectedPlayers() returns everyone still online at that point.
`MatchPhaseStartEvent` reports one of six states: `NOT_STARTED`, `ROUND_START`, `ROUND_IN_PROGRESS`, `POST_ROUND`, `ROUND_END` and `FINISHED`. > **Info:** `MatchPreStartEvent` also has `setCancelledReason(String)`. Using it instead of `setCancelled(true)` cancels the match **and** shows your own message to the players, which is how the CombatLogX hook explains that someone is in combat. ## Players in a Match These extend `MatchPlayerEvent`, so they expose both `getMatch()` and `getPlayer()`. None of them are cancellable.
EventFired when
MatchPlayerKillEventA player kills someone. getVictim() returns who died.
MatchPlayerDeathEventA player dies. getKiller() may be null. setDeathMessage(String[]) replaces the broadcast with your own text.
MatchPlayerLeaveEventA player leaves the match. isGuest() tells you whether they were a spectator rather than a participant.
MatchSpectatorJoinEventSomeone starts spectating the match.
MatchSpectatorLeaveEventSomeone stops spectating the match.
## Elo
EventFired when
MatchPlayerChangeEloEventA match changes a player's rating in one mode. Exposes getPlayer(), getOldElo(), getNewElo() and getMatch().
PlayerGlobalEloChangeEventA player's global elo changes, including through the admin commands. Exposes getPlayer(), getOldElo() and getNewElo().
Both give you an `OfflinePlayer`, because a rating can change while the player is not connected. ## Queue
EventFired when
ProfileQueueStartEventA player or party enters the matchmaking queue.
ProfileQueueStopEventA player or party leaves it, whether by finding a match or by cancelling.
Both expose `getProfile()` for what was queued for, and `getParticipants()` for who queued. Neither is cancellable. ## Party These extend `PartyEvent` and expose `getParty()`. None of them are cancellable.
EventFired when
PartyCreatedEventA party is created.
PartyDisbandEventA party is disbanded. Carries the list of participants it had.
PartyParticipantAddedEventA participant joins the party. Exposes getParticipant().
PartyParticipantAcceptedEventA participant accepts their invitation. Exposes getParticipant().
PartyParticipantRemovedEventA participant leaves or is kicked. Exposes getParticipant().
PartyLeaderChangedEventLeadership passes to someone else. Exposes getOldLeaderUniqueId() and getNewLeaderUniqueId().
## Add-ons
EventFired when
RematchWindowEventA rematch window opens for a player at the end of a match. Exposes getPlayer() and getDurationSeconds(). Requires the Rematch & Requeue add-on.
## Cancellable events Only three events can be cancelled, and all three cancel a match before it runs: MatchCreateEvent, MatchPreStartEvent and MatchStartEvent. There is deliberately no way to cancel a kill, a death, or a player leaving. If you need to stop something during a fight, write a [custom rule](README.md#custom-addons) instead. Source: https://www.phoenixplugins.com/docs/phoenix-duels/api/events --- # ๐Ÿงช Examples > **Danger:** These examples target the public API package (`com.phoenixplugins.phoenixduels.api.*`). ## 1) Track match start and phase transitions ```java import com.phoenixplugins.phoenixduels.api.events.MatchPhaseStartEvent; import com.phoenixplugins.phoenixduels.api.events.MatchStartEvent; import com.phoenixplugins.phoenixduels.api.match.MatchState; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; public final class MatchLifecycleListener implements Listener { @EventHandler public void onStart(MatchStartEvent event) { if (event.getMatch().getTeamsPlayers().isEmpty()) { event.setCancelled(true); } } @EventHandler public void onPhase(MatchPhaseStartEvent event) { if (event.getNewState() == MatchState.ROUND_IN_PROGRESS) { // Start your per-round metrics. } } } ``` ## 2) Capture kills and deaths ```java import com.phoenixplugins.phoenixduels.api.events.MatchPlayerDeathEvent; import com.phoenixplugins.phoenixduels.api.events.MatchPlayerKillEvent; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; public final class CombatStatsListener implements Listener { @EventHandler public void onDeath(MatchPlayerDeathEvent event) { // event.getPlayer() died, event.getKiller() can be null. } @EventHandler public void onKill(MatchPlayerKillEvent event) { // Track kill streaks or challenge progress here. } } ``` ## 3) Observe queue entry and exit ```java import com.phoenixplugins.phoenixduels.api.events.queue.ProfileQueueStartEvent; import com.phoenixplugins.phoenixduels.api.events.queue.ProfileQueueStopEvent; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; public final class QueueMetricsListener implements Listener { @EventHandler public void onQueueStart(ProfileQueueStartEvent event) { int participants = event.getParticipants().size(); String modeId = event.getProfile().getSelectedModeId(); } @EventHandler public void onQueueStop(ProfileQueueStopEvent event) { // Store queue duration and stop reason in your analytics. } } ``` ## 4) React to global ELO changes ```java import com.phoenixplugins.phoenixduels.api.events.PlayerGlobalEloChangeEvent; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; public final class EloChangeListener implements Listener { @EventHandler public void onGlobalElo(PlayerGlobalEloChangeEvent event) { int delta = event.getNewElo() - event.getOldElo(); if (delta >= 50) { // Trigger your own reward or announcement pipeline. } } } ``` ## 5) Handle party lifecycle events ```java import com.phoenixplugins.phoenixduels.api.events.party.PartyCreatedEvent; import com.phoenixplugins.phoenixduels.api.events.party.PartyLeaderChangedEvent; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; public final class PartyListener implements Listener { @EventHandler public void onPartyCreated(PartyCreatedEvent event) { int slots = event.getParty().getMaximumSlots(); } @EventHandler public void onLeaderChanged(PartyLeaderChangedEvent event) { // Sync your own group service with the new party leader. } } ``` ## 6) Read match player state safely ```java import com.phoenixplugins.phoenixduels.api.events.MatchStartEvent; import com.phoenixplugins.phoenixduels.api.match.players.MatchPlayer; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; public final class MatchRosterListener implements Listener { @EventHandler public void onMatchStart(MatchStartEvent event) { for (MatchPlayer player : event.getMatch().getTeamsPlayers()) { if (player.isDisconnected()) { continue; } String name = player.getName(); int kills = player.getKills(); int deaths = player.getDeaths(); } } } ``` ## 7) Use profile data from queue events ```java import com.phoenixplugins.phoenixduels.api.events.queue.ProfileQueueStartEvent; import com.phoenixplugins.phoenixduels.api.profiles.MatchProfile; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; public final class ProfileAuditListener implements Listener { @EventHandler public void onQueued(ProfileQueueStartEvent event) { MatchProfile profile = event.getProfile(); boolean hasPending = profile.containsPendingParticipants(); boolean hasOffline = profile.containsOfflineParticipants(); if (hasPending || hasOffline) { profile.sendMessage("Your group is not fully ready yet."); } } } ``` ## 8) Register your listener through plugin entrypoint ```java import com.phoenixplugins.phoenixduels.api.PhoenixDuelsAPI; import org.bukkit.event.Listener; public final class ListenerBootstrap { public void register(Listener listener) { PhoenixDuelsAPI.getPluginInstance().getEventBus().registerListener(listener); } } ``` ## 9) Internal systemPath: register menus, commands, and rules When you include the plugin JAR via `systemPath`, you can access internal registries. Because you are depending on the built plugin JAR, use the shaded package names exposed by that JAR. ```java import com.phoenixplugins.phoenixduels.lib.xseries.XMaterial; import com.phoenixplugins.phoenixduels.registry.CommandsRegistry; import com.phoenixplugins.phoenixduels.registry.MenuRegistry; import com.phoenixplugins.phoenixduels.registry.RuleRegistry; import com.phoenixplugins.phoenixduels.internal.Key; import com.phoenixplugins.phoenixduels.sdk.platforms.server.commands.ServerCommand; import com.phoenixplugins.phoenixduels.sdk.platforms.server.commands.ServerCommandManager; import java.util.Collections; public final class InternalBootstrap { public void load() throws Exception { MenuRegistry.getInstance().registerMenu( "my_custom_menu", new MyCustomMenu.MyCustomMenuConfiguration(), "menus/custom/my_custom_menu.yml", MyCustomMenu::new ); CommandsRegistry.registerCommand(new ServerCommand("mymode") { @Override public boolean execute(ServerCommandManager manager, org.bukkit.command.CommandSender sender, String label, String[] args) { sender.sendMessage("Custom command executed."); return true; } }, true); RuleRegistry.registerRule(Key.of("MY_CUSTOM_RULE"), MyCustomRule::new, new RuleRegistry.RuleDetails(XMaterial.BLAZE_ROD, "My Custom Rule", Collections.singletonList("Example custom rule registered from addon."))); } } ``` This internal path is powerful but version-sensitive, so lock your plugin version and retest after updates. ## What is not supported by API-only integrations * Do not cast API interfaces (`Match`, `MatchProfile`, `Party`) to internal implementation classes. * Do not depend on internal registries or core-only packages as your primary integration path. * Do not mutate internal state by reflection; rely on events and documented API methods. * Do not run heavy blocking logic in event handlers during match or queue events. Source: https://www.phoenixplugins.com/docs/phoenix-duels/api/examples --- # ๐Ÿ—ƒ๏ธ Configuration Files ## Configurations
FileWhat it holds
config.ymlThe server-wide settings: database, worlds, match rules, party, betting, commands and performance.
maps/*.ymlOne file per map, holding its regions, spawns, arenas and regeneration settings.
modes/*.ymlOne file per mode, holding its loadout, rules, rounds, scoreboard and commands.
feature_toggles.ymlSwitches for individual plugin behaviours such as the countdown freeze or arena knockback.
templates.ymlThe default scoreboard that new modes are created from.
spectator_hotbar.ymlThe items a player is given while spectating a match.
elo.ymlThe elo settings.
sounds.ymlEvery sound the plugin plays.
menus/*.ymlOne file per menu.
kits/*.ymlOne file per premade kit.
replay.ymlMatch replay recording. Premium
discord.ymlDiscord match result webhooks. Premium
translations/*.ymlEvery message the plugin sends, per language.
cache.ymlWritten by the plugin, holding things such as the lobby spawn point. Not meant to be edited by hand.
> **Info:** After editing any of these by hand, run /pduels reload. If you only touched a menu file, /pduels reload menus is much quicker and safer on a live server. ## Feature Toggles `feature_toggles.yml` switches off individual behaviours of the plugin that most servers want, but some do not. Every option is a **disable** switch, so `false` means the behaviour stays on, which is the default for all of them. The same options are available in the editor, under Settings > Feature Toggling. ```yaml disable-player-freeze: false disable-leather-armor-coloring: false disable-vanilla-stat-tracking: false disable-invitations-in-match: false disable-arena-knockback: false ``` ### Player Freeze Players are normally frozen in place during the pre-fight countdown so neither side can reposition before the fight starts. Set `disable-player-freeze` to true to let them move freely while the countdown runs. ### Leather Armor Coloring Leather armor handed out by a kit is normally dyed to match the team colour, so teams are easy to tell apart. Set `disable-leather-armor-coloring` to true to keep the armor exactly as the kit defines it. ### Vanilla Stat Tracking Kills and deaths inside a duel normally count toward the player's vanilla Minecraft statistics as well as the plugin's own. Set `disable-vanilla-stat-tracking` to true to keep duels out of the vanilla statistics screen and out of anything else reading them, such as an advancement or a scoreboard objective. ### Invitations in Match Set `disable-invitations-in-match` to true to stop players receiving duel invitations while they are already fighting, so a pop-up never lands mid-fight. ### Arena Border Knockback Players who reach the edge of the battle region are normally pushed back in, which keeps a fight inside the arena without walls. Set `disable-arena-knockback` to true to remove that push. Do this only if your arena is physically enclosed, otherwise players can walk out of the fight. ## Templates `templates.yml` holds the **default match scoreboard**: the animated header and the lines that every newly created mode starts with. It is a template, not a live setting. Changing it does not touch modes that already exist, because each mode keeps its own copy of the scoreboard in its own file. Edit this file to change what the *next* mode you create will look like, and edit the mode itself to change one that already exists. ```yaml scoreboard: header-frames: - '&5&lPHOENIX DUELS' - '&d&lP&5&lHOENIX DUELS' - '&d&lPH&5&lOENIX DUELS' lines: - '' - '&7โŒš &fTime Left: &7%time_left%' - '' - '&f%opponents%' - '' - '&a๐Ÿช“ &fMode: &a%mode%' - '&2๐Ÿ•น &fMap: &2%map%' - '' - ' &dwww.phoenixplugins.com ' ``` ### Header Frames `scoreboard.header-frames` is a list of titles played one after another, one frame per tick, looping back to the start when it runs out. The default list spells out an animated shimmer across the words by shifting which letters are the lighter colour, and pads the end with repeated identical frames to hold the title still between shimmers. For a static title, use a single frame. ### Lines `scoreboard.lines` is the body of the scoreboard, top to bottom. An empty string leaves a blank line. Every [internal placeholder](../../plugins/placeholders.md) works here, as does any PlaceholderAPI placeholder installed on your server. ### Editing an existing mode To change the scoreboard of a mode that already exists, edit that mode instead, either from Editor > Edit Modes > Mode > Scoreboard or in its file under `modes/`. The default scoreboard can also be edited from Settings in the editor. > **Info:** If you edit a scoreboard and nothing changes in game, you are almost certainly editing this template rather than the mode that is actually being played. ## Spectator Hotbar `spectator_hotbar.yml` defines the items a player is given while they are [spectating a match](../../features/spectator.md). Their real inventory is saved beforehand and given back the moment they stop spectating. ```yaml leave-item: slot: 4 material: BARRIER custom-model-data: 0 display-name: '&cLeave' lore: - '&7Click here to leave this game.' - '' - '&7Or do /leave.' actions: [] items: {} ``` ### Leave Item `leave-item` is handled by the plugin itself: clicking it removes the player from the match they are watching, whatever else you configure on it. You can change its slot, material, name and lore freely, but its behaviour is fixed. To remove it entirely, set its slot to a value outside the hotbar, such as `-1`. ### Custom Items Everything under `items` is yours. Each entry is a normal item definition with an `actions` list, using the same [action types](../../plugins/action-types.md) as any menu item, and runs those actions when the spectator clicks it. ```yaml items: players: slot: 0 material: PLAYER_HEAD display-name: '&aPlayers' lore: - '&7Jump between the players of this match.' actions: - '[MENU] spectator_players' back-to-lobby: slot: 8 material: RED_DYE display-name: '&cBack to Lobby' actions: - '[COMMAND] player;leave' ``` Slots run from `0` on the far left of the hotbar to `8` on the far right. Anything outside that range is ignored, so the item simply never appears. > **Info:** The `spectator_players` menu used above is a built-in menu that lists everyone in the match being watched, so a spectator can jump straight to a specific player. Source: https://www.phoenixplugins.com/docs/phoenix-duels/configurations/configuration-files --- # ๐Ÿ“ Feature Toggles ## Feature Toggles `feature_toggles.yml` switches off individual behaviours of the plugin that most servers want, but some do not. Every option is a **disable** switch, so `false` means the behaviour stays on, which is the default for all of them. The same options are available in the editor, under Settings > Feature Toggling. ```yaml disable-player-freeze: false disable-leather-armor-coloring: false disable-vanilla-stat-tracking: false disable-invitations-in-match: false disable-arena-knockback: false ``` ## Player Freeze Players are normally frozen in place during the pre-fight countdown so neither side can reposition before the fight starts. Set `disable-player-freeze` to true to let them move freely while the countdown runs. ## Leather Armor Coloring Leather armor handed out by a kit is normally dyed to match the team colour, so teams are easy to tell apart. Set `disable-leather-armor-coloring` to true to keep the armor exactly as the kit defines it. ## Vanilla Stat Tracking Kills and deaths inside a duel normally count toward the player's vanilla Minecraft statistics as well as the plugin's own. Set `disable-vanilla-stat-tracking` to true to keep duels out of the vanilla statistics screen and out of anything else reading them, such as an advancement or a scoreboard objective. ## Invitations in Match Set `disable-invitations-in-match` to true to stop players receiving duel invitations while they are already fighting, so a pop-up never lands mid-fight. ## Arena Border Knockback Players who reach the edge of the battle region are normally pushed back in, which keeps a fight inside the arena without walls. Set `disable-arena-knockback` to true to remove that push. Do this only if your arena is physically enclosed, otherwise players can walk out of the fight. Source: https://www.phoenixplugins.com/docs/phoenix-duels/configurations/configuration-files/feature-toggles --- # ๐Ÿ“ Main Configuration ## Main Configuration `config.yml` holds the server-wide settings. Almost everything here is also editable in game from /pduels editor > Settings, which is the safer route on a live server; this page is for when you would rather edit the file directly. Run /pduels reload after editing, or /pduels reload menus if you only touched menu files. > **Warning:** Leave `product-license` alone. It is written by the plugin and identifies your purchase. See [Licensing](../../plugins/licensing.md). ## General ```yaml notify-if-new-version: true join-reminder: true language: EN_US debug: false ```
OptionDescription
notify-if-new-versionTells players with phoenixduels.admin when a newer version is available, shortly after they join.
join-reminderShows the Lite version's welcome message on join. Has no effect on Premium.
languageWhich translation file the plugin loads. Lines missing from it fall back to English. See Languages & Translations.
debugAdds verbose logging to the console. Leave it off unless support asks for it.
## Database The available types are sqlite and mysql. SQLite needs no setup and is fine for a single server; MySQL is a Premium feature. ```yaml database: type: sqlite address: localhost name: phoenixduels_db port: 3306 username: phoenixuser password: phoenixpassword table-prefix: '' hikari: maximumPoolSize: 20 minimumIdle: 5 idleTimeout: 600000 maxLifetime: 1800000 connectionTimeout: 30000 fetch-timeout: 5000 ``` **table-prefix** is put in front of every table name. It is what lets two separate Phoenix Duels installations share one MySQL database without colliding. Set it before the first start, because changing it later makes the plugin create a fresh, empty set of tables and your existing data is left behind under the old names. The **hikari** block tunes the connection pool and only applies to MySQL. The defaults suit most servers. `maximumPoolSize` is the usual thing to raise on a large network, and `fetch-timeout` is how long a query may take before the plugin gives up on it. See [What tables does the plugin create in my database?](../../plugins/questions-and-answers/README.md#what-tables-does-the-plugin-create-in-my-database) for the tables that get created. ## Worlds Restricts the plugin to certain worlds, which is useful if you run Multiverse and only want duels in a dedicated world. ```yaml worlds: should-use: DISABLED_WORLDS enabled: [] disabled: - world_nether ``` Valid options for `should-use` are ENABLED\_WORLDS and DISABLED\_WORLDS. With `ENABLED_WORLDS`, only the worlds in the `enabled` list are used and everything else is ignored. With `DISABLED_WORLDS`, every world is used except the ones in `disabled`. ## Allowed Types Removes an entire category of play. To run a ranked-only server, leave `RANKED` as the only entry. ```yaml allowed-types: - CHALLENGE - UNRANKED - RANKED ``` ## Match Every option below is documented in detail, with screenshots, on the [Match Settings](../../features/settings/match/README.md) page. The keys are listed here for editing the file directly. ```yaml match: default-finishing-seconds: 5 extended-finishing-seconds: 60 maximum-allowed-rounds: 10 rounds-format: FIRST_TO restore-last-inventory: true require-empty-inventory: false launch-fireworks-for-winner: true spectator-engine: DEFAULT tablist-scoping-enabled: true spectator-tablist-prefix: '&e[S] ' prevent-same-ip-ranked: false sneak-to-ready: false prevent-party-queueing: false floor-kill: true ```
OptionDescription
default-finishing-secondsHow long players stay in the arena after a match ends.
extended-finishing-secondsUsed instead of the default when the ending needs more time on screen, such as a betting payout.
maximum-allowed-roundsThe highest rounds value a player may pick for a custom match.
rounds-formatFIRST_TO makes the rounds value the number of round wins needed to clinch the match. BEST_OF makes it the total number of rounds played, with the majority deciding the winner.
restore-last-inventorySaves the player's inventory before a match and gives it back afterwards.
require-empty-inventoryRefuses a duel invitation unless the player's inventory is empty.
launch-fireworks-for-winnerFires fireworks around the winner.
spectator-engineDEFAULT uses real spectator gamemode. LEGACY keeps the player in survival as an invisible ghost. Lite is always LEGACY.
tablist-scoping-enabledLimits the tab list of players in a match to that arena.
spectator-tablist-prefixShown before a spectator's name in the tab list.
prevent-same-ip-rankedStops ranked matchmaking pairing players who share an IP address.
sneak-to-readyEnds the pre-fight countdown as soon as everyone has sneaked.
prevent-party-queueingStops parties queueing for Unranked and Ranked.
floor-killInstantly eliminates a player who lands on the arena floor.
### Whitelist / Blacklist Commands Controls which commands players may run during a match. To block flying mid-duel, for example: ```yaml match: commands: mode: BLACKLIST whitelist-commands: [] blacklist-commands: - fly - heal ``` Valid options for `mode` are BLACKLIST and WHITELIST. Only the list matching the chosen mode is read. ### Nametags and Chat ```yaml match: custom-nametags: enabled: true prefix: '%color%[%team%] ' chat: enabled: true scope: TEAM format: '&8[&a&lArena&8] &e%player%&8: &f%message%' ``` `chat.scope` takes TEAM, where only teammates see the message, or ARENA, where everyone in the match does. See [Custom Nametags](../../features/settings/match/README.md#custom-nametags) and [Team Chat](../../features/settings/match/README.md#team-chat). ## Party ```yaml party: require-permission-to-create: false default-slots: 5 chat-format: '&7[Party] &f%player%&7: &f%message%' permission-slots: '0': amount: 10 permission: phoenixduels.partymembers.10 '1': amount: 15 permission: phoenixduels.partymembers.15 ``` Covered in full on the [Party](../../features/party/) page. ## Betting ```yaml betting: money-enabled: true items-enabled: true items-betting: max-items-per-player: 10 ``` Money betting requires Vault. See [Betting](../../features/betting.md). ## Ranked Restriction Keeps players out of Ranked until they have won a number of Unranked games. ```yaml ranked: unranked-requirement: enabled: false amount: 10 bypass-permission: phoenixduels.ranked.bypass ``` ## Invitations ```yaml invitation-expiration-time: 60 ``` How many seconds a duel or party invitation stays valid before it lapses. ## Performance ```yaml performance: internal-pool-size: 5 cache: use-memory-for-performance: true stats-update-interval: 60 leaderboard-fetch-interval: 60 regeneration: internal: blocks-per-cycle: 4096 max-chunks-per-cycle: 16 ```
OptionDescription
performance.internal-pool-sizeHow many threads the plugin uses for its background work, such as database reads.
cache.use-memory-for-performanceCaches components in memory instead of rebuilding them. Recommended, but you can turn it off on a very low-memory server.
stats-update-intervalSeconds between refreshes of cached player statistics.
leaderboard-fetch-intervalSeconds between leaderboard refreshes. Raise it if leaderboard queries are heavy; lower it if your holograms feel stale.
regeneration.internal.blocks-per-cycleHow many blocks the internal regeneration engine restores per tick. Lower this if regeneration causes lag spikes.
regeneration.internal.max-chunks-per-cycleHow many chunks it may touch per tick. Lower this alongside the option above.
> **Info:** The two `regeneration.internal` values are the ones to change if [regeneration is causing lag](../../plugins/questions-and-answers/README.md#why-regeneration-causes-lag-to-my-server). Halving them makes regeneration slower but much smoother. ## Commands Every command can be disabled or renamed. See the [Commands](../../plugins/commands.md) page for the full table of keys and defaults. ```yaml commands: require-permission: false party: enabled: true alternative: match ``` ## Bedrock How Bedrock players joining through Geyser see the menus. See the [GeyserMC (Bedrock)](../geysermc-bedrock.md) page for every option. ## Other Files `config.yml` is not the only file. The plugin also writes: * [Map Configuration](map-configuration.md) and [Mode Configuration](mode-configuration.md) - one file per map and per mode. * [Feature Toggles](README.md#feature-toggles) - `feature_toggles.yml`. * [Templates](README.md#templates) - `templates.yml`, the default scoreboard. * [Spectator Hotbar](README.md#spectator-hotbar) - `spectator_hotbar.yml`. * `elo.yml` - the elo settings, covered on the [Elo](../../features/elo.md) page. * `sounds.yml` - covered on [Customize Sounds](../customize-sounds.md). * `replay.yml` and `discord.yml` - Premium only, covered on [Statistics](../../features/statistics.md) and [Discord Match Log](../../features/discord-match-log.md). ## Translations All player-facing text lives in the translation file for your chosen language, under `translations/`. Chat messages, titles, menu text and holograms are all edited there rather than in `config.yml`. Source: https://www.phoenixplugins.com/docs/phoenix-duels/configurations/configuration-files/main-configuration --- # ๐Ÿ“ Map Configuration ## Example Map Each map has its own file inside the `maps` folder. The example below is trimmed, since the `display` item and a long arena list make a real file much taller. ```yaml sort-order: 1000 enabled: true type: FREE_MODE identifier: map_7245 display-name: Map display: ==: org.bukkit.inventory.ItemStack id: minecraft:minecart count: 1 template: universal-region: minimum: x: -20.0 y: -14.0 z: -26.0 maximum: x: 19.0 y: 15.0 z: 26.0 battle-region: minimum: x: -2.0 y: -12.0 z: 12.0 maximum: x: 6.0 y: 3.0 z: 21.0 ffa-positions: [] teams: '0': positions: '0': x: 14.08244880949405 y: -13.0 z: 14.815054676272695 yaw: 68.54266 pitch: -3.449963 '1': positions: '0': x: 12.878836385874612 y: -13.0 z: 15.231936686241397 yaw: 73.492676 pitch: -21.599962 '2': positions: [] '3': positions: [] extras: {} regeneration: false post-round-regeneration: true pre-match-regeneration: false regen-engine: INTERNAL teleport-to-lobby: false allowed-modes: - classic team-colors: - RED - BLUE - GREEN - YELLOW arenas: '0': reference: world: world x: 199 y: 95 z: 357 dont-edit: assistance-stage: 4 blob-key: 6b7b172167a74f498cdc6c0327256529 auto-generation: enabled: false world: '' min-spacing: 250 ``` ## Options
OptionDescription
sort-orderWhere this map sits in the map list. Lower numbers come first.
enabledWhether players can be sent to this map. A disabled map is still visible in the editor.
typeFREE_MODE, where you place every arena yourself, or GRID_MODE, where the plugin lays them out for you. See Grid Mode.
identifierThe map's unique id. Used by allowed-modes, commands and placeholders.
display-nameThe name players see.
displayThe item shown for this map in menus. Written by the editor; easier to change there than by hand.
templateThe build itself: the two regions, the team spawns, and the optional FFA and spectator positions. See Edit the Arena.
allowed-modesWhich modes may be played here. An empty list means none, so the map is never picked.
team-colorsThe colour assigned to each team slot, in order.
arenasEvery physical copy of this map, each with the world and coordinates it was pasted at.
teleport-to-lobbySend players to the lobby after a match instead of back to where they were before it.
dont-editWritten by the plugin. Leave it alone.
## Regeneration
OptionDescription
regenerationWhether the arena is restored after use at all. This must be on before players can break or place blocks in it.
post-round-regenerationRestore the arena after every round rather than only at the end of the match.
pre-match-regenerationAlso restore the arena at the start of a match, during the first countdown. A safety net in case a previous regeneration failed.
regen-engineINTERNAL uses the built-in engine, which restores blocks gradually and needs no other plugin. WORLDEDIT pastes a schematic, which is heavier on large arenas and requires WorldEdit or FAWE.
See [Arena Regeneration](../../main-features/create-a-map/arena-regeneration.md) for the full explanation, and [Main Configuration](main-configuration.md) for the two performance settings that control how fast the internal engine works. ## Auto Generation When auto generation is on and every arena of this map is busy, the plugin pastes a new permanent one into the world you nominate rather than making players wait.
OptionDescription
auto-generation.enabledWhether new arenas are generated on demand.
auto-generation.worldThe world new arenas are pasted into.
auto-generation.min-spacingThe minimum distance in blocks kept between every arena in that world.
> **Warning:** Arenas created this way are permanent. On a busy server this grows the world file over time, so give it a dedicated, ideally void, world. Source: https://www.phoenixplugins.com/docs/phoenix-duels/configurations/configuration-files/map-configuration --- # ๐Ÿ“ Mode Configuration ## Example Mode Each mode has its own file inside the `modes` folder. The example below is trimmed: the `display` item and the scoreboard's animated header are both much longer in a real file. ```yaml sort-order: 1 enabled: true identifier: crystal display-name: Crystal display-description: - This is a custom arena mode. display: ==: org.bukkit.inventory.ItemStack id: minecraft:end_crystal count: 1 allowed-player-type: - UNRANKED_SOLO - UNRANKED_DUO - RANKED_SOLO - RANKED_DUO - CUSTOM_SOLO - SOLO_CHALLENGE - PARTY_CHALLENGE - PARTY_FFA - PARTY_TEAM_FIGHT loadout: type: PREMADE_KIT kit-id: crystal scoreboard: enabled: true header-frames: - '&5&lPHOENIX DUELS' - '&d&lP&5&lHOENIX DUELS' lines: - '' - '&fTime Left: &a%time_left%' - '' - '&f%opponents%' - '' - '&fMode: &a%mode%' - '&fMap: &a%map%' rules: - 'ENDER_PEARL_COOLDOWN;{5}' permission: required: false permission: phoenixduels.mode.example rounds-to-win: 1 pre-fight-delay-seconds: 10 duration-seconds: 300 cooldown-seconds: 0 public-broadcast: true commands: when-starting: [] when-ending: [] when-winning: [] when-losing: [] ``` ## Options
OptionDescription
sort-orderWhere this mode sits in the mode menus. Lower numbers come first.
enabledWhether players can play it. A disabled mode stays visible in the editor.
identifierThe mode's unique id. Used by placeholders, commands and a map's allowed-modes.
display-nameThe name players see.
display-descriptionThe lore shown under the mode in the menus.
displayThe item shown for this mode in menus. Written by the editor.
allowed-player-typeWhich kinds of match may use this mode. Remove an entry to block it.
loadoutWhat players fight with. See below.
scoreboardThis mode's own scoreboard. New modes start from templates.yml.
rulesThe gamemode rules applied, with their settings in braces.
permissionSet required to true to restrict the mode to holders of permission.
rounds-to-winThe rounds value. What it means depends on the server's match.rounds-format setting.
pre-fight-delay-secondsThe countdown before the fight starts.
duration-secondsHow long a round may run before it is called.
cooldown-secondsHow long a player must wait before playing this mode again. 0 means no cooldown.
public-broadcastAnnounce the result of every match in this mode to the server.
commandsCommands run by the console at each stage of a match.
## Loadout `loadout.type` decides what players are given when the match starts: * **PREMADE_KIT** - everyone fights with the kit named by `kit-id`, which points at a file in the `kits` folder. * **PLAYER_INVENTORY** - players fight with whatever they are already carrying. `kit-id` is not used. Add-ons register more types. Player Kits adds PLAYER_KIT and SHARED_PLAYER_KIT. ## Player Types `allowed-player-type` controls both the team sizes and the kinds of match this mode appears in.
ValueAllows
UNRANKED_SOLO / DUO / TRIO / QUADUnranked queue at 1v1, 2v2, 3v3 and 4v4.
RANKED_SOLO / DUO / TRIO / QUADRanked queue at the same sizes.
CUSTOM_SOLO / DUO / TRIO / QUADCustom matches at the same sizes.
SOLO_CHALLENGEA direct /duel between two players.
PARTY_CHALLENGEOne party challenging another.
PARTY_FFAA free-for-all inside one party.
PARTY_TEAM_FIGHTSplitting one party into two teams.
PARTY_MULTI_TEAM_FIGHTSplitting one party into up to four teams. Off by default on new modes.
> **Info:** `PARTY_MULTI_TEAM_FIGHT` also needs the map to have third and fourth team spawn positions defined, otherwise there is nowhere to put the extra teams. Source: https://www.phoenixplugins.com/docs/phoenix-duels/configurations/configuration-files/mode-configuration --- # ๐Ÿ“ Spectator Hotbar ## Spectator Hotbar `spectator_hotbar.yml` defines the items a player is given while they are [spectating a match](../../features/spectator.md). Their real inventory is saved beforehand and given back the moment they stop spectating. ```yaml leave-item: slot: 4 material: BARRIER custom-model-data: 0 display-name: '&cLeave' lore: - '&7Click here to leave this game.' - '' - '&7Or do /leave.' actions: [] items: {} ``` ## Leave Item `leave-item` is handled by the plugin itself: clicking it removes the player from the match they are watching, whatever else you configure on it. You can change its slot, material, name and lore freely, but its behaviour is fixed. To remove it entirely, set its slot to a value outside the hotbar, such as `-1`. ## Custom Items Everything under `items` is yours. Each entry is a normal item definition with an `actions` list, using the same [action types](../../plugins/action-types.md) as any menu item, and runs those actions when the spectator clicks it. ```yaml items: players: slot: 0 material: PLAYER_HEAD display-name: '&aPlayers' lore: - '&7Jump between the players of this match.' actions: - '[MENU] spectator_players' back-to-lobby: slot: 8 material: RED_DYE display-name: '&cBack to Lobby' actions: - '[COMMAND] player;leave' ``` Slots run from `0` on the far left of the hotbar to `8` on the far right. Anything outside that range is ignored, so the item simply never appears. > **Info:** The `spectator_players` menu used above is a built-in menu that lists everyone in the match being watched, so a spectator can jump straight to a specific player. Source: https://www.phoenixplugins.com/docs/phoenix-duels/configurations/configuration-files/spectator-hotbar --- # ๐Ÿ“ Templates ## Templates `templates.yml` holds the **default match scoreboard**: the animated header and the lines that every newly created mode starts with. It is a template, not a live setting. Changing it does not touch modes that already exist, because each mode keeps its own copy of the scoreboard in its own file. Edit this file to change what the *next* mode you create will look like, and edit the mode itself to change one that already exists. ```yaml scoreboard: header-frames: - '&5&lPHOENIX DUELS' - '&d&lP&5&lHOENIX DUELS' - '&d&lPH&5&lOENIX DUELS' lines: - '' - '&7โŒš &fTime Left: &7%time_left%' - '' - '&f%opponents%' - '' - '&a๐Ÿช“ &fMode: &a%mode%' - '&2๐Ÿ•น &fMap: &2%map%' - '' - ' &dwww.phoenixplugins.com ' ``` ## Header Frames `scoreboard.header-frames` is a list of titles played one after another, one frame per tick, looping back to the start when it runs out. The default list spells out an animated shimmer across the words by shifting which letters are the lighter colour, and pads the end with repeated identical frames to hold the title still between shimmers. For a static title, use a single frame. ## Lines `scoreboard.lines` is the body of the scoreboard, top to bottom. An empty string leaves a blank line. Every [internal placeholder](../../plugins/placeholders.md) works here, as does any PlaceholderAPI placeholder installed on your server. ## Editing an existing mode To change the scoreboard of a mode that already exists, edit that mode instead, either from Editor > Edit Modes > Mode > Scoreboard or in its file under `modes/`. The default scoreboard can also be edited from Settings in the editor. > **Info:** If you edit a scoreboard and nothing changes in game, you are almost certainly editing this template rather than the mode that is actually being played. Source: https://www.phoenixplugins.com/docs/phoenix-duels/configurations/configuration-files/templates --- # ๐ŸŽ‘ Customize Menus ## Plugin Menus All the menus that can be customized for the plugin are located in the menus folder of Phoenix Duels. > **Info:** The layout of every player menu can also be changed in-game with the [In-Game Menu Editor](in-game-menu-editor.md).
## Menu Settings Menu settings can be found in any type of menu. From there, you can specify the type of menu you want, the title of the menu, the number of rows it will have, the refresh rate, and the actions that will run when the user clicks to preview it. ```yaml settings: type: SETTINGS title: 'Your Settings' rows: # 1, 2, 3, 4, 5, 6 refresh: enabled: false rate: 20 on-open-actions: [] ``` You can change the rows number if you want to adjust the rows that the menu will have. ## Pagination Pagination is another main option that menus have. With this, you can create multiple pages, set your preview page item, the next page item, and a material that will fill specific slots. ## Items With the items, you can create custom entries to be included in your menu. These could be items to close the menu or items that display where players can purchase keys. ```yaml items: close-menu: slot: '49' material: ARROW amount: 1 custom-model-data: 0 item-model: '' glow: false hide-attributes: false display-name: '&aClose Menu' lore: - '&7Click here to close this menu.' - '' - '&6Left-Click: &eClose menu.' actions: - '[CLOSE_INVENTORY]' ``` `item-model` lets you point an item at a resource pack's custom item model (Minecraft 1.21.2+'s `item_model` component) instead of, or alongside, the older `custom-model-data`. ## Menu Keys Each menu has a **key** as well as a file. The key is what the [`[MENU]`](../plugins/action-types.md) action takes, so this is the list to reach for when you want a lobby item or a kill effect to open a specific screen. **Playing**
KeyFile
queuemenus/queue.yml
playmenus/play.yml
select_modemenus/select_mode.yml
select_mapmenus/select_map.yml
unranked_select_player_modemenus/unranked/select_player_mode.yml
unranked_select_arena_modemenus/unranked/select_arena_mode.yml
ranked_select_player_modemenus/ranked/select_player_mode.yml
ranked_select_arena_modemenus/ranked/select_arena_mode.yml
create_matchmenus/custom/create_match.yml
custom_select_arena_modemenus/custom/select_arena_mode.yml
custom_challenge_opponentmenus/custom/challenge_opponent.yml
duel_playermenus/custom/duel_player.yml
items_bettingmenus/items_betting.yml
**Party**
KeyFile
partymenus/party/party.yml
party_infomenus/party/info.yml
party_invite_playermenus/party/invite_player.yml
party_manage_membermenus/party/manage_member.yml
party_ffamenus/party/ffa.yml
party_teamfightmenus/party/teamfight.yml
party_multiteammenus/party/multiteam.yml
party_multiteam_spectatorsmenus/party/multiteam_spectators.yml
**Player**
KeyFile
settingsmenus/settings.yml
statsmenus/stats.yml
leaderboardmenus/leaderboard.yml
lost_itemsmenus/lost_items.yml
ongoing_matchesmenus/ongoing_matches.yml
spectator_playersmenus/spectator_players.yml
confirmation_menumenus/confirmation.yml
select_option_menumenus/select_option.yml
**Kits**
KeyFile
kit_previewmenus/kit/preview.yml
kit_items_editormenus/kit/items_editor.yml
player_kit_layoutmenus/player_kit_layout.yml
**Add-ons** These only exist once the matching add-on is installed.
KeyFile
ranksmenus/elo/ranks.yml
player_interactionmenus/lobby/player_interaction.yml
manage_player_kitsmenus/playerkits/manage_kits.yml
player_kit_categoriesmenus/playerkits/kit_categories.yml
player_kit_armor_filtermenus/playerkits/kit_armor_filter.yml
edit_player_kitmenus/playerkits/edit_kit.yml
edit_player_kit_itemmenus/playerkits/edit_kit_item.yml
edit_player_kit_item_amountmenus/playerkits/edit_kit_item_amount.yml
match_lobbymenus/match_lobby.yml
match_lobby_settingsmenus/match_lobby_settings.yml
manage_membermenus/manage_member.yml
> **Warning:** Some of these menus are opened by the plugin with data attached to them, such as which mode was picked. Opening one of those directly with an `[MENU]` action can leave it empty, because that data is missing. The safe ones to open by hand are the top-level menus a player would normally reach themselves, such as `queue`, `party`, `stats`, `settings`, `leaderboard` and `ongoing_matches`. Source: https://www.phoenixplugins.com/docs/phoenix-duels/configurations/customize-menus --- # ๐Ÿ”Š Customize Sounds ## Sounds Every sound the plugin plays (joining/leaving queue, invitations, defeat, and more) is customizable from `sounds.yml`. ```yaml sounds: invitation_accepted: '0': - ENTITY_ARROW_HIT_PLAYER;1.0;1.0 defeat: '0': - BLOCK_NOTE_BLOCK_BASS;1.0;0.5 '1': - BLOCK_NOTE_BLOCK_SNARE;1.0;1.5 ``` Each event (`invitation_accepted`, `defeat`, etc.) can have multiple numbered entries. The number is how many ticks after the event fires that sound plays, so you can build a short jingle out of several sounds instead of a single note โ€” as `defeat` does above. Each entry follows the `SOUND_NAME;volume;pitch` format. ## Sound Events These are all the events you can attach sounds to. Removing an event's entries, or leaving it empty, makes it silent.
EventPlayed when
requestA duel or party invitation arrives.
invitation_acceptedAn invitation is accepted.
invitation_declinedAn invitation is declined.
join_queueThe player enters a queue.
leave_queueThe player leaves a queue.
spectator_joinSomeone starts spectating the match.
startThe match begins.
winningThe match ends and the player won.
defeatThe match ends and the player lost.
drawThe match ends in a draw.
> **Info:** Sound names are the Bukkit sound names for your server version, such as `ENTITY_ARROW_HIT_PLAYER`. A name that does not exist on your version is skipped rather than throwing an error, so a silent sound is usually a misspelt or version-specific name. Source: https://www.phoenixplugins.com/docs/phoenix-duels/configurations/customize-sounds --- # ๐Ÿ› ๏ธ GeyserMC (Bedrock) > **Info:** These options are in the bedrock section of config.yml. They have no editor option. ## Overview Bedrock players joining through Geyser get the main player menus as native Bedrock forms instead of chest menus. Forms need Floodgate or Geyser to be installed on the same server as the plugin. Without either, everyone gets the chest menus. Menus without a form stay chest menus. On those, a button with several click actions asks Bedrock players which one they want, since Bedrock has no shift-click or right-click on touch and controller. Every text prompt, such as the money wager, opens as a form text field. **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 icons: enabled: true fallback-url: "" head-url: "https://mc-heads.net/head/%texture%" ``` ## How the Forms Work | Menu | Bedrock form | | --- | --- | | Queue | A button for unranked and ranked. | | Player mode | A button per team size, solo to quad. | | Arena mode | A button per category and mode, showing the queued and playing players. | | Duel creation | One form with the mode, the map, the rounds, item betting, the money wager and external spectators. | | Duel mode and map selection | A button per category, mode or map, with Random first. | | Player settings | A toggle for duel requests and one for party requests. | | Stats | The stats as text. | | Ongoing matches | A button per match, showing its players. | | Spectator teleport | A button per player in the match. | | Party | A button to create a party. | | Confirmation | A confirm and a cancel button. | Add-ons that bring player menus use the same settings: | Add-on | Menu | Bedrock form | | --- | --- | --- | | Elo Ranks | Ranks | Every rank as text. | | Lobby Items | Player interaction | A duel and a party invitation button. | | Player Kits | Your player kits | A button per kit, then a choice to select or edit it. | | Public Parties | Party | Create a party and join parties. | | Public Parties | Browser | A button per party, plus sorting and hide full parties. | | Public Parties | Banned players | A button per banned player, which asks before unbanning. | | Public FFA | Arena selector | A button per arena, showing its players. | | Public FFA | Bounties | The bounties as text. | | Public FFA | Confirmation | A confirm and a cancel button. | Public FFA reads its form text from the bedrock section of its own translations file. Buttons use the names set in the menu files, with colors kept and hex colors removed, since forms cannot show them. Button actions still run, and any extra button you added to one of these menus with an action shows up in its form. The text around them, such as the back button, comes from the bedrock section of the translations file. Kit previews, the kit editor, the player kit item editor, item betting, lost items, the leaderboard and the party management menus stay chest menus. If a form cannot be sent, the player gets the chest menu instead and the console says so. ## 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. The queue, stats, ongoing matches and party forms, and the ranks, player interaction, player kits and FFA arena forms of the add-ons, get a button to switch to chest menus, and /pduels 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. Menus that use your own inventory, such as the kit editor and item betting, keep their size. ## 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. Items with custom model data or 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-duels/configurations/geysermc-bedrock --- # In-Game Menu Editor > **Info:** The editor changes the same menu files described in [Customize Menus](customize-menus.md). A menu saved in-game is live straight away, with no reload. ## Opening the Editor There are two ways in, both needing phoenixduels.admin: * **Editor > Menu Layouts** lists every player menu by its key. Left-click one to edit it. * /pduels editLayout \ opens one menu directly, by its [menu key](customize-menus.md#menu-keys). Add-on menus are listed once their add-on is installed. The kit items editor and the spectator hotbar are not part of it. The menu opens as it looks to players, with every button in place. The slots where the menu shows its own content, such as the modes, maps or players, appear as lime panes. > **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. ## 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](../plugins/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, and Delete only appears on decoration. The plugin's own buttons, such as the page arrows, 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. The name, lore and actions stay. * **On an empty slot** to add the item as new decoration, 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 decoration: click it to select it, then click empty slots to put it there too. | | 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. | A slot group always keeps at least one slot, and a button locked to a single slot cannot be repeated. 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, such as the fill item of a paginated list. Editing one restyles every copy of it. Text entries are the lines the menu adds by itself rather than a button you place. ## 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 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. 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-duels/configurations/in-game-menu-editor --- # ๐ŸŒ Languages & Translations ## Translations Every line the plugin can print lives in one file: ``` PhoenixDuels/translations/translations.en.yml ``` Messages to players, command replies, the menus and the whole in-game editor are all in there. Edit it, run /pduels reload, and the new text is live. To stop a message from appearing at all, set it to `''` (empty quotes). > **Warning:** /pduels reload menus does **not** reload translations. Use the plain /pduels reload after editing a translation file. Every add-on brings its own file into the same folder, named after itself, so the Bed Fight messages are in `bedfight.translations.en.yml` and the Player Kits ones in `playerkits.translations.en.yml`. They work exactly like the main file. ## Language The language the plugin loads is set in config.yml, or from **Editor > Settings > Language**. ```yaml language: EN_US ``` The picker lists every language the plugin knows about:
CodeLanguageFile
EN_USEnglish (United States)translations.en.yml
AR_SAArabic (Saudi Arabia)translations.ar.yml
PT_BRPortuguese (Brazil)translations.br.yml
PT_PTPortuguese (Portugal)translations.pt.yml
ES_ESSpanish (Spain)translations.es.yml
FR_FRFrench (France)translations.fr.yml
DE_DEGerman (Germany)translations.de.yml
IT_ITItalian (Italy)translations.it.yml
NL_NLDutch (Netherlands)translations.nl.yml
SV_SESwedish (Sweden)translations.sv.yml
PL_PLPolish (Poland)translations.pl.yml
CS_CZCzech (Czechia)translations.cs.yml
RU_RURussian (Russia)translations.ru.yml
TR_TRTurkish (Turkey)translations.tr.yml
EL_GRGreek (Greece)translations.el.yml
HI_INHindi (India)translations.hi.yml
ID_IDIndonesian (Indonesia)translations.id.yml
VI_VNVietnamese (Vietnam)translations.vi.yml
JA_JPJapanese (Japan)translations.ja.yml
KO_KRKorean (South Korea)translations.ko.yml
ZH_CNChinese (Simplified)translations.zh.yml
The file name uses the short form rather than the code, which is worth knowing before you go looking for it โ€” PT_BR writes `translations.br.yml`, not `translations.pt_br.yml`. > **Warning:** Only the languages included in the build you are running can be picked. The rest are dark grey in the editor and clicking skips straight past them. 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 Everything sits under the short language code at the top of the file, 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: unknown-argument: "&cUnknown argument!" no-permission: "&cYou don't have permission to do this! &8(&e%permission%&8)" ``` ```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 `%player%`, `%permission%` and `%message%` 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 โ€” the console prints `Missing value for key "..."` and writes the English default straight into your file โ€” but it is the file your work lives in. See [What does the "Missing translation" warning mean?](../plugins/questions-and-answers/README.md#what-does-the-missing-translation-warning-mean) ## The editor is translated too Everything under the `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 Duels 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 Duels` | Text fading from one colour to another | | `Warning` | Bold and underlined | | `Victory!` | 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 | | ------------------------- | ------------------------------------------------ | | Chat messages | Kill messages, command feedback, broadcasts | | Match scoreboard | The sidebar title and lines shown during a duel | | Lobby scoreboard | From the Lobby Items add-on | | Menu titles, names, lore | Anywhere the editor lets you write text | ### Where it doesn't work Titles, subtitles, the action bar, boss bars, nametags and the tab list still only understand `&` codes. Those are sent as raw legacy text, so a tag in one of them is shown to the player exactly as you typed it. ### 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 an item name 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-duels/configurations/languages --- # ๐ŸŽจ Rich Text (MiniMessage) ## Information Phoenix Duels 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 Duels` | Text fading from one colour to another | | `Warning` | Bold and underlined | | `Victory!` | 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 | | ------------------------- | ------------------------------------------------ | | Chat messages | Kill messages, command feedback, broadcasts | | Match scoreboard | The sidebar title and lines shown during a duel | | Lobby scoreboard | From the Lobby Items add-on | | Menu titles, names, lore | Anywhere the editor lets you write text | ## Where it doesn't work Titles, subtitles, the action bar, boss bars, nametags and the tab list still only understand `&` codes. Those are sent as raw legacy text, so a tag in one of them is shown to the player exactly as you typed it. ## 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 an item name 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-duels/configurations/rich-text --- # ๐Ÿ’Ž Features
Matches & ModesArenas & MapsPlayers & Setup
Standalone for a Practice ServerArena Regeneration (with FAWE)Elo System
Duel: 1v1, 2v2, 3v3, 4v4, Party FFAInternal regeneration, with no dependencyCustom elo ranking
Duel with premade & custom kits.Grid Mode to create many arenas at onceStatistics
Multiple GamemodesDuplicate an ArenaLeaderboard
50+ Gamemode RulesArena ProtectionPlaceholders for leaderboard and stats.
Queue SystemBattle Region and Universal RegionParty System
Quick Play optionMulti Spawn LocationPlayer Settings
Create custom matchesFFA PositionLobby Items
Multiple rounds supportCustomize the ArenaKit Preview and in-game Kit Editor
Ranked and Unranked requirementsEdit the Arena in-gamePre-configured premade kits
Custom cooldown to play a modeVoid world supportCustom Kits that you can create and play with.
Permission requirementsLobby SpawnpointCustomizable menus, with an in-game layout editor
Custom Scoreboard per modeMap configuration file per mapCustom Actions
Winner/Loser/Start commands.Rich Text (MiniMessage) support
Match CommandsHex color support &#ADF3FD
Team ChatWhitelist/Blacklist Commands
Custom NametagsAlternative Commands
Spectator ModeSupport PlaceholderAPI for commands.
Public match status broadcastMySQL and SQlite Database
Toggle duel requests.Bedrock Support
Kill EffectsSecurity System in case of crashes.
Custom SoundsEasily editable files
Money & Item BettingLost Items recovery storage
Match History & RecapsDiscord match result webhooks
Match Replays (BetterReplay)Developer API with 26 events
No hard dependency
## Add-ons
Add-onWhat it adds
GamemodesSpleef, Bed Fight, TnT Run, Boxing, The Bridge, Floor is Lava, and Pillar of Fortune.
Elo RanksRank tiers driven by elo, with a ranks menu and placeholders.
Player KitsLet the users build and save their own kits, sorted by category.
Lobby ItemsHotbar items for the lobby, with inventory stages.
Sign QueuesJoin a queue by clicking a sign.
Rematch & RequeueOffer a rematch or a requeue once the match ends.
Public FFAFree-for-all arenas players walk into, with kits, kill streaks, bounties, King of the Hill events, and Mob Killing and Hunger Games game modes.
## 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-duels/features --- # ๐Ÿ’ฐ Betting ## Betting When two players or two parties arrange a custom match, they can put something on the line. Betting comes in two independent flavours, money and items, and each can be switched off for the whole server. ```yaml betting: money-enabled: true items-enabled: true items-betting: max-items-per-player: 10 ``` Both options are also editable in the editor, under Settings > Universal Settings. ## Money Betting Money betting requires Vault together with an economy plugin. > **Warning:** Without Vault installed, money betting does nothing at all. Nothing is withdrawn and nothing is paid out, and the plugin does not warn you at startup, so the option can look like it is working when it is not. The stake is withdrawn from every participant when the match starts, and the full pot is paid to the winning side when it ends. A player who cannot afford the stake blocks the match from starting, and the message names them. ## Item Betting Item betting opens the `items_betting` menu, where each player drops in the items they want to wager. `items-betting.max-items-per-player` caps how many items a single player may stake. Once the match ends, the losing side's stakes go to the winners, and the winners get their own stakes back. ## Refunds Stakes are returned in full when a match does not produce a winner. That covers a draw, a match cancelled before it began, and a match that was forcibly ended. If a player's inventory is full when their items are returned, or they are offline when a payout is made, the items go to their [Lost Items](lost-items.md) storage instead. They are never dropped on the ground and never destroyed. ## Finishing Time A match that ends with a betting payout uses the **Extended Finishing Seconds** value rather than the default one, so players have time to read the result before they are moved out of the arena. Source: https://www.phoenixplugins.com/docs/phoenix-duels/features/betting --- # ๐Ÿช Discord Match Log ## Discord Match Log Phoenix Duels can post the result of every finished match to a Discord channel through a webhook. This is a Premium feature. Results are queued and sent in the background, so a slow or unreachable Discord never holds up a match. ## Setup ### Create the webhook In Discord, open **Server Settings > Integrations > Webhooks**, create one for the channel you want the results in, and copy its URL. ### Paste it into discord.yml Open `discord.yml` in the PhoenixDuels folder, put the URL into `match-result.url`, and set `match-result.enabled` to true. ### Reload Run /pduels reload, then finish a match to confirm the embed arrives. You can also switch the feature on and off from the editor, under Settings > Plugin Settings > Discord Match Log. The URL itself is only editable in the file. ## discord.yml ```yaml match-result: enabled: false url: '' username: Phoenix Duels avatar-url: '' embed: title: Duel Results color: '#5865F2' show-participants: true ```
OptionDescription
enabledWhether finished matches are posted at all.
urlThe Discord webhook URL. Leave it empty to disable delivery.
usernameThe name the webhook posts under.
avatar-urlAn image URL used as the webhook's avatar. Leave it empty to use the webhook's own avatar.
embed.titleThe title line of the embed.
embed.colorThe colour of the embed's side bar, as a hex value.
show-participantsAdds a Participants field listing every team in the match and the players on it. Turn it off to keep the embed to the winner alone.
## The embed Every result carries the mode, the map, the duel type, the winning team with its players, and how long the match lasted. With show-participants on, a final field lists all teams, one per line: ``` [A] (Foxi) [B] (kristopher) ``` Players are named as they were when the match started, so someone who logged out mid-duel still appears. ## Troubleshooting If results are not arriving, check the console after a match finishes. The most common causes are: * **The URL is empty or malformed.** A webhook URL must be the full `https://discord.com/api/webhooks/...` address, not just a link to the channel. * **The webhook was deleted in Discord.** Deleting a webhook does not disable the option here, so the plugin keeps posting to an address that no longer exists. * **Rate limiting.** Discord limits how quickly a single webhook can be posted to. The queue absorbs normal traffic, but sustained bursts can still be throttled by Discord. > **Info:** Match logging is separate from match history. Turning it off does not affect the statistics, the match history, or the recaps, which are always recorded. Source: https://www.phoenixplugins.com/docs/phoenix-duels/features/discord-match-log --- # ๐Ÿฅ‡ Elo ## Elo System Elo is a system used to calculate the relative skill levels of players in competitive games, where ratings are adjusted based on match outcomes. Every player holds a **separate rating per mode**, so being strong at one mode says nothing about their rating in another. Only Ranked matches change a rating. Unranked and custom matches never do. ## elo.yml The elo settings live in their own file, `elo.yml`, in the PhoenixDuels folder. The options sit at the top level of that file, with nothing wrapping them. ```yaml k-factor: 32 min-rating: 0 max-rating: 3500 default-rating: 500 tolerance: 200 ``` They are also editable in the editor, under Settings > Elo Settings. * **k-factor (32)** - Determines how much a rating moves after each match. A higher K-factor means larger swings, so ratings settle faster but are noisier. * **min-rating (0)** - The lowest rating a player can fall to. * **max-rating (3500)** - The highest rating a player can climb to. * **default-rating (500)** - The rating a player starts on, in every mode, before they have played it. * **tolerance (200)** - The ranked matchmaking window. See below. ## Tolerance Tolerance is not a margin of error on a rating. It is how far apart two sides in the ranked queue may be before the plugin refuses to pair them. When someone queues for Ranked, the plugin looks at everyone else waiting for the same mode and player type, and only considers those whose **average rating** is within `tolerance` of theirs. With the default of 200, a player rated 500 can be matched against anyone between 300 and 700, and nobody outside that band. > **Warning:** On a small or quiet server this is the setting that stops ranked queues from popping. Two players can sit in the queue indefinitely if their ratings are more than `tolerance` apart. Raising it widens the net at the cost of less even matches. ## Global Elo `%phoenixduels_ranked_global_elo%` is a single number summarising a player across every mode, and it is the **average** of their per-mode ratings, not a sum and not a rating of its own. The average is taken across every mode that allows a ranked player type. Modes the player has never touched still count, at `default-rating`, which pulls the average toward the default. A player rated 900 in the only mode they play, on a server with four ranked modes, has a global elo of 600 rather than 900. ## Managing Ratings Ratings can be adjusted from the console or in game: /pduels setRating \ \ \\ /pduels addRating \ \ \\ /pduels removeRating \ \ \\ /pduels resetRating \ \ \\ /pduels reset \ - resets every mode at once. ## Ranked Requirements You can keep newer players out of Ranked until they have won a number of Unranked games. See [Main Configuration](../configurations/configuration-files/main-configuration.md). ## Ranks To turn ratings into visible tiers such as Bronze or Diamond, install the [Elo Ranks](../add-ons/elo-ranks/README.md) add-on. Source: https://www.phoenixplugins.com/docs/phoenix-duels/features/elo --- # ๐Ÿ’ฅ Kill Effects ## Kill Effects Kill Effects play a visual effect at the victim's location whenever a player gets a kill. Players pick their own effect from a menu, and it triggers automatically on every kill until they change it. ## Selecting an Effect Run `/duelkilleffects` to open the selection menu, or `/duelkilleffects select ` to pick one directly by its ID. Only effects the player has permission for are shown or selectable.

Kill Effects

## Permissions Each kill effect has its own permission, so you can gate specific effects behind ranks or as store rewards. The node is built from the effect's ID: ``` phoenixplugins.killeffect. ``` For example, Bell Toll of Doom is phoenixplugins.killeffect.bell-toll-of-doom. None is always available and needs no permission, so a player can always turn their effect off. ## Effect List
IDNameEffect
arcane-burstArcane BurstA ring of runes charges up, then explodes into portal particles.
balloon-popBalloon PopA small colorful sphere pops outward with a snap.
bell-toll-of-doomBell Toll of DoomA spectral bell tolls twice overhead as dark mist rolls outward.
blood-burstBlood BurstA burst of red dust particles erupts from your victim.
confetti-partyConfetti PartyA burst of colorful confetti.
curse-markCurse MarkWitch particles circle the spot where your victim fell.
ender-vortexEnder VortexA purple vortex of portal particles swirls upward with a teleport sound.
explosionExplosionA large explosion effect with zero damage or block impact.
firework-saluteFirework SaluteA real firework launches above the spot your victim fell.
frost-novaFrost NovaA ring of frost expands outward from where your victim fell.
frozen-spike-ringFrozen Spike RingA ring of ice spikes drops from above and shatters on landing.
ghast-fireballGhast FireballA fireball charges from within your victim and rockets outward.
guardians-wrathGuardian's WrathPrismarine spikes erupt from the ground around your victim.
guillotineGuillotineAn axe is thrown at your victim and sticks into the ground.
headshot-flashHeadshot FlashA sniper tracer streaks in and cracks at head height.
iron-cage-dropIron Cage DropIron bars crash down into a cage, hold a beat, then spring apart.
judgment-anvilJudgment AnvilA tumbling anvil crashes down from above, shattering the ground.
lightning-strikeLightning StrikeA bolt of lightning strikes down on the spot your victim fell.
meteorMeteorA flaming meteor crashes down onto your victim's remains.
money-rainMoney RainTreasure explodes outward in a shower of coins.
phoenix-rebirthPhoenix RebirthFlames rise in a spiral, like a phoenix taking flight.
pinata-burstPinata BurstA colorful pinata swings up and bursts into a shower of candy.
soul-reaperSoul ReaperBlue soul particles spiral upward with an eerie sound.
tornadoTornadoA swirling tornado of cloud particles spins up from the death spot.
totem-surgeTotem SurgeA totem flares to life and fails anyway.
vault-breachVault BreachA vault bursts open, blasting gems outward in every direction.
void-pullVoid PullA void erupts from your victim and expands outward, then fades.
noneNoneNo kill effect will play. This is the default.
> **Info:** Every effect is visual only. None of them deal damage, set fires, or change blocks, so they are safe to hand out on any server. Source: https://www.phoenixplugins.com/docs/phoenix-duels/features/kill-effects --- # ๐Ÿ–Œ๏ธ Kit Editor ## Kit Editor With the Kit Editor, players can modify the layout of existing kits or create their own custom kits.

Kit Editor

## Pre Kit Layouts On pre-kit layouts, users can access all their available pre-kit layouts. These layouts represent the kits used in different game modes.

Pre Kit Layouts

## Player Kits (Add-On) From player kits, users can create their own custom kits using a selection of items pre-configured by admins.

Player Kits

Source: https://www.phoenixplugins.com/docs/phoenix-duels/features/kit-editor --- # ๐Ÿ  Lobby ## Set Spawnpoint Setting up the spawn point in the Duels is simple. Just stand on the block you want to use as the spawn point and run the command **/pduels setLobby**. Once you do this, that position will become your spawn point.

Spawn Point

The spawn point location is saved in the **cache** file after you set it successfully. ## Disable Teleportation If you don't want your users to be teleported to the lobby when they join the server, make sure to set the following option in the plugin's configuration to **false**. ```yaml lobby: teleport-on-join: true ``` Source: https://www.phoenixplugins.com/docs/phoenix-duels/features/lobby --- # ๐ŸŽ’ Lost Items ## Lost Items Lost Items is a per-player storage that catches anything the plugin owed a player but could not physically hand over. Nothing is ever deleted: it is held in the database until the player claims it with /duellostitems. ## What ends up in there Items are moved to the Lost Items storage in three situations: * **A returned bet.** When a match with item betting is cancelled, every stake is handed back. If a player's inventory is full at that moment, the stake goes to Lost Items instead of dropping on the floor. * **A full inventory.** Any time the plugin gives a player items outside a match and there is no room for them. * **A payout the player was not around for.** When a match ends and the winner has already disconnected, the winnings are stored rather than lost. ## Claiming them Three seconds after joining the server, a player with anything waiting receives a message telling them so. Running /duellostitems opens the storage, and clicking an item moves it into their inventory. The command is enabled with `commands.lostitems.enabled` and can be renamed with `commands.lostitems.alternative`. When `commands.require-permission` is on, using it requires phoenixduels.commands.duellostitems. > **Info:** If a player reports that the plugin "ate" their items after a crash or a cancelled duel, Lost Items is the first place to look. Source: https://www.phoenixplugins.com/docs/phoenix-duels/features/lost-items --- # ๐Ÿฅณ Party ## Create Party To create a party and play with your friends, simply execute the /party create command. This will create a party with you as the leader, allowing you to invite other users to join.

Party

## Manage your Party Now, the party management menu will come up. From that menu you can: Invite other users, split the party, disband the party, challenge another party, or play private party ffa.

Party Management

Disbanding now asks for confirmation first, since it kicks every member and can't be undone. ## Party Commands | Command | Description | | --------------------------- | ----------------------------------------------------------------- | | `/party create` | Creates a party with you as the leader. | | `/party invite ` | Invites a player to your party. | | `/party accept ` | Accepts an invitation. | | `/party decline ` | Declines an invitation. | | `/party leave` | Leaves the party you are in. | | `/party kick ` | Removes a member. Leader only. | | `/party kickoffline` | Removes every member who is currently offline. Leader only. | | `/party disband` | Disbands the party. Leader only. | | `/party chat ` | Sends a message to the party only. | | `/party challenge` | Challenges another party. Leader only. | | `/party fight` | Opens the team fight picker, splitting the party into two teams. | | `/party multifight` | Splits the party into up to four teams. (Premium) | | `/party ffa` | Starts a private free-for-all with your party. | | `/party help` | Lists the commands available to you right now. | `/party play` is an alias of `/party fight` and needs Premium. `/party help` only lists what you can actually use, so it shows a shorter list when you are not in a party. ## Team Fight vs Multi Team There are two ways to split your own party into fighting teams: * **Team Fight** (`/party fight`) - splits the party into two teams. * **Multi Team** (`/party multifight`) - splits the party into up to four teams instead of just two, for free-for-all-style team battles within your own party. Both are covered in full on [team-fights.md](team-fights.md "mention"). ## Party Chat `/party chat ` sends a message that only party members see. The format is set once for the server in the party settings, and understands `%player%` and `%message%`. ## Invitation Expiration Invitations do not sit around forever; how long a player has to accept one before it lapses is set in the party settings. ## Restricting Party Creation Party creation is open to everyone by default. Turning on the permission requirement in the party settings limits it to players with phoenixduels.party.create, which is the usual way to make parties a donor feature. ## Limit members to a Party To set a party limit, you can change the default value in the pluginโ€™s settings or modify it directly in the configuration file. ```yaml party: default-slots: 5 ```

Editor > Settings

## Increase Party Size To increase the party size for an individual player, you can assign them a specific permission. You can create multiple options in the configuration for the maximum number of players allowed. ```yaml party: default-slots: 5 permission-slots: '0': amount: 10 permission: phoenixduels.partymembers.10 '1': amount: 15 permission: phoenixduels.partymembers.15 ``` Source: https://www.phoenixplugins.com/docs/phoenix-duels/features/party --- # โš”๏ธ Team Fights ## The Two Fight Types A party can fight itself in two ways, both started from the party menu: * **Team Fight** (`/party fight`) - exactly two teams, blue against red, up to 12 players each. * **Multi Team Fight** (`/party multifight`) - up to four teams, red, blue, green and yellow, up to 6 players each.

Party > Info

Party > Info

> **Warning:** `/party multifight` requires PhoenixDuels Premium. It also takes an optional team count, `/party multifight <2-4>`. Both open a picker where the party is already split for you. Nobody is committed to a team until the match is started, so the picker is where you sort out who plays with whom. ## Picking Teams Each team is a coloured pane with the team's name and how full it is. Click a pane to join that team yourself. Team Fight puts the two teams on either side of one row; Multi Team Fight gives each team its own row, with the pane on the left.

Party > Team Fight

Party > Multi Team Fight

The leader moves other people around instead of only themselves: click a member's head to select them, then click the pane of the team they should end up in. Each head also shows that player's elo, whether they are the leader, and whether they are online. ## Team Swapping Team Swapping is a lock for the whole party. While it is unlocked, any member can move themselves between teams. Locking it leaves only the leader able to move anyone, which is what you want once the teams are settled and you do not want someone re-shuffling as the match starts.

Party > Team Fight

## Spectators Party members placed in Spectators watch the match instead of playing, which is how you handle an odd number of players or someone who just wants to sit one out. Left-click the eye to join or leave the spectators, and right-click it to see who is currently in there. Sitting out is always a personal choice, so this is never blocked by the team swapping lock; the leader can still move a selected member in or out from the same item.

Party > Team Fight

## Starting the Match Start Match continues to the usual mode and arena picker, and the match begins with the teams exactly as they are in the picker. At least two teams need members; if everyone has ended up on one team, the match will not start.

Party > Team Fight

Party > Multi Team Fight

## Fighting Another Party Challenge Party is the other direction: instead of splitting your own party, you pick another party on the server and the two fight each other.

Party > Info

Source: https://www.phoenixplugins.com/docs/phoenix-duels/features/party/team-fights --- # ๐Ÿ“ Player Settings ## Player Settings Player Settings are a set of rules that allow users to customize their dueling experience. Players open the menu with /duelsettings, or from the settings item in their lobby hotbar. ## Duel Requests With Duel Requests players can enable or disable duel invitations from other users. By default, this option is disabled.

Player Settings

The same toggle is available as a command, /toggleduelrequest, and readable as a placeholder, `%phoenixduels_rejecting_duel_requests%`. ## Party Requests With Party Requests players can enable or disable party invitations from other users, exactly as above but for parties. It is off by default, meaning invitations come through normally. Its command is /togglepartyrequest, and its placeholder is `%phoenixduels_rejecting_party_requests%`. ## Customising the menu Both toggles are ordinary menu items and live in `menus/settings.yml`, so their slot, material, name and lore can all be changed. Adding your own items to that menu works like any other [menu](../configurations/customize-menus.md). Source: https://www.phoenixplugins.com/docs/phoenix-duels/features/player-settings --- # โš™๏ธ Settings In the settings, you can navigate and configure the plugin options. The settings are split into five categories: * **Match Settings** - everything that applies while a duel is running. [Click Here](match/README.md) * **Universal Settings** - [betting](../betting.md), party defaults and the ranked requirements. * **Elo Settings** - the K-factor, rating bounds and the ranked matchmaking tolerance. See [Elo](../elo.md). * **Plugin Settings** - commands, worlds, language, leaderboard refresh, performance, [Discord match logging](../discord-match-log.md) and match replays. * **Feature Toggling** - switches individual plugin behaviours on and off. [Click Here](#feature-toggling)

Editor > Settings

## Feature Toggling The last settings category is a short list of behaviours the plugin performs by default and that some servers would rather it did not. Every entry is a **disable** switch, shown as Is Disabled in its tooltip: left-click flips it, and leaving it at No keeps the behaviour. The same values live in [Feature Toggles](../../configurations/configuration-files/README.md#feature-toggles) as `feature_toggles.yml`, so editing either one is the same change.

Editor > Settings

### Player Freeze Players are held in place during the pre-fight countdown so neither side can reposition before the fight starts. Disable it to let them move while the countdown runs.

Editor > Settings > Toggling

### Leather Armor Coloring Leather armor handed out by a kit is dyed to match the team colour so teams stay easy to tell apart. Disable it to keep the armor exactly as the kit defines it.

Editor > Settings > Toggling

### Vanilla Stat Tracking Kills and deaths in a duel count toward the player's vanilla Minecraft statistics as well as the plugin's own. Disable it to keep duels out of the vanilla statistics screen, and out of anything reading them such as an advancement or a scoreboard objective.

Editor > Settings > Toggling

### Invitations in Match Duel invitations still reach a player who is already fighting. Disable it so a pop-up never lands mid-fight.

Editor > Settings > Toggling

### Arena Border Knockback Players who reach the edge of the battle region are pushed back in, which keeps a fight inside the arena without needing walls. Disable it to remove that push, and only do so if the arena is physically enclosed, otherwise players can walk out of the fight.

Editor > Settings > Toggling

Source: https://www.phoenixplugins.com/docs/phoenix-duels/features/settings --- # ๐Ÿ”€ Feature Toggling ## Feature Toggling The last settings category is a short list of behaviours the plugin performs by default and that some servers would rather it did not. Every entry is a **disable** switch, shown as Is Disabled in its tooltip: left-click flips it, and leaving it at No keeps the behaviour. The same values live in [feature-toggles.md](../../configurations/configuration-files/feature-toggles.md "mention") as `feature_toggles.yml`, so editing either one is the same change.

Editor > Settings

## Player Freeze Players are held in place during the pre-fight countdown so neither side can reposition before the fight starts. Disable it to let them move while the countdown runs.

Editor > Settings > Toggling

## Leather Armor Coloring Leather armor handed out by a kit is dyed to match the team colour so teams stay easy to tell apart. Disable it to keep the armor exactly as the kit defines it.

Editor > Settings > Toggling

## Vanilla Stat Tracking Kills and deaths in a duel count toward the player's vanilla Minecraft statistics as well as the plugin's own. Disable it to keep duels out of the vanilla statistics screen, and out of anything reading them such as an advancement or a scoreboard objective.

Editor > Settings > Toggling

## Invitations in Match Duel invitations still reach a player who is already fighting. Disable it so a pop-up never lands mid-fight.

Editor > Settings > Toggling

## Arena Border Knockback Players who reach the edge of the battle region are pushed back in, which keeps a fight inside the arena without needing walls. Disable it to remove that push, and only do so if the arena is physically enclosed, otherwise players can walk out of the fight.

Editor > Settings > Toggling

Source: https://www.phoenixplugins.com/docs/phoenix-duels/features/settings/feature-toggling --- # โš”๏ธ Match Settings All match-related settings can be found in this category, where you can navigate and configure them.

Editor > Settings

## Default Finishing Seconds With the Default Finishing Seconds setting, you can define for how long players will need to wait before leaving the arena.

Editor > Settings > Match Settings

## Extended Finishing Seconds With the Extended Finishing Seconds setting, you can define a longer wait time before players leave the arena, used instead of the default in specific situations (such as when a match ends with a betting payout to display). ## Maximum Allowed Rounds With the Maximum Allowed Rounds setting, you can define the maximum number of rounds a match can have. This is useful to prevent players from setting a match with an infinite number of rounds, which can cause arenas to be occupied for a long time.

Editor > Settings > Match Settings

## Rounds System With the Rounds System setting, you define how the rounds a player picks are interpreted: * **First To** - the number is how many round wins are needed to clinch the match (the original behavior). * **Best Of** - the number is the total rounds played, and whoever wins the majority of them wins the match. ## Launch Fireworks for Winner With the launch fireworks for winner setting, you can enable or disable the fireworks that are launched for the winner at the end of a match. By default, this setting is enabled.

Editor > Settings > Match Settings

## Edit Match Commands With the edit match commands setting, you can configure the commands that can be executed or not being executed during a match. * **Match Commands Feature** - [Click Here](#match-commands)

Editor > Settings > Match Settings

## Restore Last Inventory With the restore last inventory setting, you can enable or disable the option for players to restore their inventory after a match. By default, this setting is enabled, allowing players to easily get back their items after a match. This option works with the Player Inventory as the game modes Loadout Type.

Editor > Settings > Match Settings

## Require Empty Inventory With the require empty inventory setting, you can enable or disable the requirement for players to have an empty inventory before joining a match. By default, this setting is disabled, allowing players to join matches with items in their inventory.

Editor > Settings > Match Settings

## Floor Kill With the floor kill setting, you can enable or disable instant elimination for players who fall onto an arena's floor (below the battle region). By default, this setting is enabled. Disable it if you'd rather handle falls yourself with a gamemode rule, such as **Touch Void Die**. ## Spectator Engine With the Spectator Engine setting, you choose which system is used to spectate a match: * **Default** (recommended) - the regular Minecraft spectator gamemode. * **Legacy** - the player is turned into a "ghost" and kept in survival mode instead.

Editor > Settings > Match

## Per Arena Tab List With this setting, a player's tab list, while in a match or spectating one, only shows that arena's players and spectators instead of every player on the server. ## Spectator Tab List Prefix With this setting, you can define a prefix shown before a spectator's name in the tab list, so players and spectators are easy to tell apart at a glance. ## Prevent Same IP in Ranked When enabled, ranked matchmaking will never pair players sharing the same IP address into the same match. ## Sneak to Ready When enabled, the pre-fight countdown ends immediately once every player in the match sneaks, instead of always waiting it out. ## Prevent Party Queueing When enabled, parties are not allowed to queue up for Unranked or Ranked modes. ## Vanished Players Players you cannot see, because a staff plugin has vanished them, are left out of the suggestions for /duel and /party, so a vanished admin does not show up as a duel target. This is automatic and has no option; it follows whatever your vanish plugin tells the server. A player who is still vanished when a round starts is brought back out of vanish first, since a match with an invisible participant in it is not playable. ## Match Commands ### Match Commands Type With the Match Commands Type, you can decide whether the commands will be whitelisted or blacklisted.

Editor > Settings > Match Commands

### Whitelisted / Blacklisted Commands With this option you can either add commands to the whitelist or blacklist, depending on the Match Commands Type you have selected.

Editor > Settings > Match Commands

### Note By default, the plugin blocks all commands for non-OP players. If players are able to execute certain commands during a match, it is because that plugin did not properly register that command. In that case, make sure to add it to the blacklist manually. ## Custom Nametags The Custom Nametags setting displays a nametag above the playerโ€™s name and in the tab list. The player's name also takes their team colour, above the head and in the tab list. Party FFA has no teams, so names keep their normal colour there. Custom nametags are not shown on Folia.

Editor > Settings > Custom Nametags

### Custom Nametags Status This option allows you to define whether the nametags will be enabled or not in the matches. By default, this option is enabled.

Editor > Settings > Custom Nametags

### Custom Nametags Format This option allows you to customize the nametags format. The default format for the custom nameplates is `%color%[%team%]` which are internal placeholders. If you want to use the custom nametags on an external plugin that supports PlaceholderAPI, you can use `%phoenixduels_nametag_color%[%phoenixduels_nametag_letter%]` instead.

Editor > Settings > Custom Nametags

## Team Chat Team Chat allows all players who are part of the game to communicate with each other in chat. Additionally, spy messages are sent to the console, and users with the `phoenixduels.admin.spy` permission can also see all Team Chat messages.

Editor > Settings > Team Chat

### Team Chat Status This option allows you to define whether the team chat will be enabled or not in the matches. By default, this option is enabled.

Editor > Settings > Team Chat

### Team Chat Format This option allows you to customize the team chat format. The default format for the team chat is `&8[&a&lArena&8] &e%player%&8: &f%message%` which are internal placeholders.

Editor > Settings > Team Chat

### Match Chat Scope This option defines who receives chat messages sent during a match: * **Team** - only your teammates receive it. * **Arena** - everyone in the match, including opponents and spectators, receives it. Source: https://www.phoenixplugins.com/docs/phoenix-duels/features/settings/match --- # ๐Ÿท๏ธ Custom Nametags ## Custom Nametags The Custom Nametags setting displays a nametag above the playerโ€™s name and in the tab list. The player's name also takes their team colour, above the head and in the tab list. Party FFA has no teams, so names keep their normal colour there. Custom nametags are not shown on Folia.

Editor > Settings > Custom Nametags

## Custom Nametags Status This option allows you to define whether the nametags will be enabled or not in the matches. By default, this option is enabled.

Editor > Settings > Custom Nametags

## Custom Nametags Format This option allows you to customize the nametags format. The default format for the custom nameplates is `%color%[%team%]` which are internal placeholders. If you want to use the custom nametags on an external plugin that supports PlaceholderAPI, you can use `%phoenixduels_nametag_color%[%phoenixduels_nametag_letter%]` instead.

Editor > Settings > Custom Nametags

Source: https://www.phoenixplugins.com/docs/phoenix-duels/features/settings/match/custom-nametags --- # ๐Ÿค– Match Commands ## Match Commands Type With the Match Commands Type, you can decide whether the commands will be whitelisted or blacklisted.

Editor > Settings > Match Commands

## Whitelisted / Blacklisted Commands With this option you can either add commands to the whitelist or blacklist, depending on the Match Commands Type you have selected.

Editor > Settings > Match Commands

## Note By default, the plugin blocks all commands for non-OP players. If players are able to execute certain commands during a match, it is because that plugin did not properly register that command. In that case, make sure to add it to the blacklist manually. Source: https://www.phoenixplugins.com/docs/phoenix-duels/features/settings/match/match-commands --- # ๐Ÿ’ฌ Team Chat ## Team Chat Team Chat allows all players who are part of the game to communicate with each other in chat. Additionally, spy messages are sent to the console, and users with the `phoenixduels.admin.spy` permission can also see all Team Chat messages.

Editor > Settings > Team Chat

## Team Chat Status This option allows you to define whether the team chat will be enabled or not in the matches. By default, this option is enabled.

Editor > Settings > Team Chat

## Team Chat Format This option allows you to customize the team chat format. The default format for the team chat is `&8[&a&lArena&8] &e%player%&8: &f%message%` which are internal placeholders.

Editor > Settings > Team Chat

## Match Chat Scope This option defines who receives chat messages sent during a match: * **Team** - only your teammates receive it. * **Arena** - everyone in the match, including opponents and spectators, receives it. Source: https://www.phoenixplugins.com/docs/phoenix-duels/features/settings/match/team-chat --- # โš™๏ธ Settings ## Settings In the settings, you can navigate and configure the plugin options. The settings have five categories: * **Match Settings** - [Click Here](match/README.md)

Editor > Settings

Source: https://www.phoenixplugins.com/docs/phoenix-duels/features/settings --- # ๐Ÿ‘๏ธ Spectator Mode ## Spectator Mode Anyone can watch a match in progress without taking part in it. Spectators are invisible to the players, cannot interfere with the fight, and are moved out with everyone else when the match ends. ## Joining a Match There are three ways in: * /spectate \ - jump straight to whoever that player is fighting. * /duelmatches - open a menu listing every match currently running, and click one to watch it. * The `spectator_players` menu, opened from the spectator hotbar, to jump between the players of the match you are already watching. Spectators arrive at the arena's **Spectator Position** if one was defined when the map was set up. If none was set, they spawn on top of the player they are watching. ## Spectator Hotbar While spectating, players are given a small hotbar defined in `spectator_hotbar.yml`. Out of the box it contains a single **Leave** item, and you can add as many more as you like. See [Spectator Hotbar](../configurations/configuration-files/README.md#spectator-hotbar) for the file format. ## Who can spectate **External Spectator** - Custom matches carry their own switch for whether outsiders may watch at all. It is toggled in the match creation menu, and when it is off, only the participants can see the fight. > **Info:** A player who disconnects during a match cannot come back to it as a spectator. This is deliberate: it stops a player from leaving a fight and immediately returning to watch their own opponents. ## Permissions phoenixduels.region.bypass lets a player walk into the region of any ongoing match without joining it as a spectator, which is the usual way staff get eyes on a fight. When `commands.require-permission` is on, /spectate requires phoenixduels.commands.duels. ## Related Settings The [Match Settings](settings/match/README.md) page covers the **Spectator Engine**, the **Spectator Tab List Prefix**, and the **Per Arena Tab List** option, all of which change how spectators behave and how they appear to others. Source: https://www.phoenixplugins.com/docs/phoenix-duels/features/spectator --- # ๐Ÿ“– Statistics ## Your Stats You can check your stats by clicking the item frame in your hotbar or using the `/stats` command. This will show all your statistics for unranked, ranked, and challenge modes.

Your Stats

## Leaderboard The leaderboard lets you view the top players in unranked or ranked modes for a specific time period. You can filter by kills, deaths, wins, losses, and Elo. For a more customized leaderboard, use the PlaceholderAPI placeholders provided by the plugin. Leaderboards are cached rather than queried on every lookup. How often they refresh is set by `leaderboard-fetch-interval` in the [main configuration](../configurations/configuration-files/main-configuration.md), which is the setting to lower if a hologram feels out of date, and to raise if the queries are heavy.

Leaderboard Menu

## Match History Every finished match is always recorded to a player's match history, no matter what other settings are configured. Kills, deaths, wins, losses and draws are counted from it on both versions. Browsing it is a Premium feature: use `/duelhistory` to browse your own history, or `/duelhistory ` to browse someone else's. From the history list, each match entry is interactive: * **Left-Click** - watches that match's video replay, if one was recorded. * **Right-Click** - opens the **Recap**: a read-only snapshot of that player's inventory, armor, health, and potion effects at the exact moment the match ended. For a player who quit or used /leave mid-match, it is taken at the moment they left. ## Match Replays Separately from match history stats, Phoenix Duels can record a video-style replay of a match that anyone can watch afterwards from the history list. This is a Premium feature and needs the free **BetterReplay** plugin installed. Without it, recording stays off while match history and recaps keep working normally. ### Settings **Match Recording** turns recording on and off for the whole server. **Retention** is how many days a recording is kept, seven by default. A daily sweep deletes anything older and clears the replay from the match history entry it belonged to, so the entry stays in the history with only its recap left. **Maximum Match Length** caps how long a single recording can run, thirty minutes by default. A match that goes past it keeps playing normally; only the recording stops. All three live in `replay.yml`: ```yaml enabled: true retention-days: 7 max-match-length-minutes: 30 ``` ### Watching a Replay Replays play back in the real arena, at the coordinates the match was recorded in, because BetterReplay has no separate world to stage them in. Two things follow from that. The arena instance is reserved for the whole time somebody is watching, exactly as a live match reserves it, so nobody gets dropped into a duel on top of the viewer. If the arena is already busy when a player tries to watch, playback is refused rather than queued. A viewer therefore takes an arena out of circulation. On a map with a single instance this is noticeable at peak hours, so it is worth pairing replays with a map that has several arenas. Watching is gated behind phoenixduels.replay.watch. Source: https://www.phoenixplugins.com/docs/phoenix-duels/features/statistics --- # ๐Ÿ›ก๏ธ Armor Trims ## Armor Trims Armor Trims let a player decorate the armor they fight in without changing anything about how it performs. A trim is purely cosmetic, it is remembered per player, and it is reapplied automatically every time that player is handed the matching piece of armor in a match. > **Warning:** Armor Trims are a Premium feature. ## The Trims Menu /dueltrims opens a grid with one row per armor slot and one column per armor material, so a player chooses a trim for, say, Netherite Boots independently of their Iron Boots. Each tile previews the trim currently applied to that exact piece.

Armor Trims

Picking a tile asks for a pattern and then a material; the two together make the trim. Right-clicking a tile that already has one clears it, after a confirmation.

Armor Trims > Select a Trim Pattern

Armor Trims > Select a Trim Material

Armor Trims

Because trims are stored per slot and per material, a player only ever sees their own choice on the pieces they actually get handed. A mode whose kit gives out Diamond Chestplates ignores whatever they picked for Leather. ## Kit Layouts Players who arrange their own premade kit layouts can also apply a trim from the armor slots of the layout editor, so the trim travels with that layout rather than being a global choice. This entry point is gated separately from the menu. ## Permissions Trims are locked down at three levels: getting into the menu at all, and then each individual pattern and material. A pattern or material the player has no permission for still appears in the picker, shown as locked and naming the permission it needs, so players can see what is available to unlock. | Permission | Description | | ----------------------------------------- | ---------------------------------------------------- | | phoenixduels.trims.use | Allows opening the trims menu. | | phoenixduels.kitlayouts.trims | Allows applying trims from a premade kit layout. | | phoenixplugins.trim.pattern.\ | Allows using the trim pattern matching ``. | | phoenixplugins.trim.material.\ | Allows using the trim material matching ``. | The pattern and material nodes use the vanilla registry key, so the Sentry pattern is `phoenixplugins.trim.pattern.sentry` and the Redstone material is `phoenixplugins.trim.material.redstone`. These two are shared with the other Phoenix plugins rather than being specific to Duels, so a player granted them once has them everywhere. > **Info:** Trims are also available inside the Player Kits add-on's kit editor, using the same permission nodes. Source: https://www.phoenixplugins.com/docs/phoenix-duels/features/trims --- # ๐Ÿ”Œ First Installation ## Installation 1. Download the jar from our website 2. Install PhoenixDuels-?.jar into your "Plugins" folder. 3. Start your server 4. Configure the plugin by yml file or by in-game editor `/phoenixduels editor` 5. Restart the plugin **/pduels reload** ## Add-on Installation 1. Select the add-ons you wish to install. 2. The add-ons will be included in the same jar. 3. Drag and drop the jar in the plugins folder 4. The PhoenixDuels jar will generate the add-ons in the `PhoenixDuels\addons` folder 5. [Optional] If you wish to download the add-ons separately, you can put them manually to that folder.

Download PhoenixDuels 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, and any Paper forks. 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
> **Info:** Older versions were supported up to an earlier release of the plugin. If you are still on 1.20.3 or below, keep using that release. Source: https://www.phoenixplugins.com/docs/phoenix-duels/first-installation --- # ๐Ÿน Create a Kit ## What a Kit Is A kit is a saved inventory: armour, hotbar, contents and offhand, stored once and given to both players when a match starts. Kits live on the server, not inside a mode, so one kit can be used by as many modes as you like. Each one is saved to its own file under plugins/PhoenixDuels/kits/. A mode only uses a kit if its loadout is set to **Premade Kit**; the other loadout types hand players their own inventory instead. See [create-a-mode](create-a-mode/ "mention").

Editor

## Creating a Kit The kits screen lists every kit on the server. Click **Add Kit** to create one, and it opens straight into the kit's own screen.

Editor > Kits

Editor > Kits

Turning **Reordering** on switches the list into sort mode: click one kit, then another, and the two swap places. The order set here is the order kits appear in anywhere players pick one.

Editor > Kits

> **Warning:** The Lite edition is limited to 5 kits. Kits beyond that are not loaded on startup. ## Identifier The unique id of the kit, and what a mode stores when it links to it. It cannot contain spaces and cannot match another kit. Changing it later is safe from the editor, but any mode already linked to the old id has to be pointed at the new one.

Editor > Kits > Kit

## Display The name and icon players see wherever the kit is shown. This is display only; the identifier is what everything else refers to.

Editor > Kits > Kit

## Kit Items This is the kit itself. Left-click opens the items editor, and the lore shows how many items are currently stored. Shift + right-click skips the editor and copies your own inventory straight onto the kit, replacing whatever was there.

Editor > Kits > Kit

### Kit Items Editor The editor mirrors a player inventory rather than a plain chest: * The **top row** holds the equipment. The four slots on the left are boots, leggings, chestplate and helmet, in that order, and the slot on the right is the offhand, labelled Extra Slot. * The **middle three rows** are the inventory contents. * The **bottom row** is the hotbar, in the order the player will see it. Empty slots are shown as coloured panes so the shape stays readable. Drag and drop an item onto any slot to set it, and drag it back out to clear it.

Kit Items Editor

**Import from Inventory** fills the whole kit from what you are currently carrying, which is the fastest way to build one: gear yourself up in creative, then import.

Kit Items Editor

**Clear All Items** empties the kit. There is no undo, so re-import or rebuild it afterwards.

Kit Items Editor

## Custom Kit Layouts When this is on, players may reorder this kit for themselves through the [kit-editor.md](../features/kit-editor.md "mention"), keeping the same items but arranging them the way they play. Turn it off for a kit whose exact arrangement matters, such as one built around a specific hotbar slot.

Editor > Kits > Kit

> **Warning:** Custom Kit Layouts requires PhoenixDuels Premium. Creating and editing kits itself is available on every edition. ## Permission Requirement Holds a permission node for this kit, together with a toggle for whether it is required. Left-click switches the toggle, right-click sets the node.

Editor > Kits > Kit

## Using the Kit in a Mode Open the mode you want, set its **Loadout** to Premade Kit with a left-click, then right-click the same item to pick which kit it uses. The loadout shows the linked kit's id next to the type, or No kit linked if you have not chosen one yet. A mode left in that state has nothing to hand out at the start of a match, so always finish the link.

Editor > Modes > Mode

Source: https://www.phoenixplugins.com/docs/phoenix-duels/main-features/create-a-kit --- # ๐Ÿ—บ๏ธ Create a Map ## Create Map A map can contain several arenas where players can fight according to a game mode. It makes it much easier to duplicate arenas and have multiple ones with the same map. To create a map, simply click on the stained glass and create your map!

Editor > Edit Maps

## Reordering You can use the reordering option to sort the maps in your desired order for the maps menu. This will change the position of the maps both in the editor, and when the user is selecting a map.

Editor > Edit Maps

## Customize the Arena ### Identifier With this option, you can set an identifier for the arena. Note that the arena identifier is unique and used internally by the plugin, and its different from the display name. For example, if your arena's name is Candy Land the identifier should be set to candy\_land. > **Danger:** If your server is in production, we don't recommend changing this value.

Editor > Maps > Arena

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

Editor > Maps > Arena

### Display Icon With display icon, you can set a specific material as your maps icon.

Editor > Maps > Arena

### Allowed Modes With **Allowed Modes**, you can select which game modes users are permitted to play on that specific arena. This feature lets you control the types of gameplay available in each arena, ensuring the right modes are enabled for the intended experience.

Editor > Maps > Arena

In the example above, only players queuing for Classic mode will have access to that arena. ### Teleport to Lobby When enabled, this option teleports users to the designated lobby location set for the Duels plugin. otherwise, they return to their previous location. \ Quick Tip: The lobby can be set with /pduels setLobby

Editor > Maps > Arena

## Edit the Arena ### Template: This option allows you to adjust settings for the universal region, battle region, FFA position, and spectator position. Additionally, you can now configure multiple team positions and assign colors to each team.

Editor > Maps > Arena

### Redefine Region This option lets you redefine the universal and battle regions, and the FFA, spectator locations.
### Add Team Spawn Positions This option lets you set up to 4 spawn locations for players, ideal for 4v4 matches, ensuring each player spawns at a different location

Editor > Maps > Arena > Template

### Change Team Color This option allows you to customize the color assigned to each team. By default Team 1 is Red and Team 2 is Blue.

Editor > Maps > Arena > Template

## Duplicate an Arena This option allows you to duplicate your current arena and place it elsewhere, making it easier to create new arenas quickly with similar settings to the original.

Editor > Maps > Arena

> **Danger:** The following action will paste the schematic of the original arena over whatever is already there. Make sure you are standing in empty space where you actually want the new arena.

Editor > Maps > Arena

### Undoing a Duplication If the copy lands somewhere it should not have, such as on top of your spawn, it can be taken back. The message confirming the duplication is clickable and runs /pduels undoarena, which you can also type yourself. Undoing removes the new arena instance from the map and restores whatever was standing at that spot before the paste, because the plugin snapshots the destination first. > **Warning:** The undo is available for **five minutes**, and only to the player who performed the duplication. After that the copy is an ordinary arena instance and has to be deleted from the arena list by hand, leaving the pasted blocks behind. ## Auto Generation Auto Generation handles the case where every arena of a map is already in use. Rather than making players wait, the plugin pastes a new permanent instance into a world you nominate and hands the match to it. It is separate from the grid wizard and available to any map, Free Mode or Grid Mode. Instances created this way are permanent: they stay registered after the match ends and are reused like any other arena, so a busy map grows once and then settles. > **Warning:** Auto Generation requires PhoenixDuels Premium, since it would otherwise let other editions exceed their arena limit. ### Opening the Settings The settings live on the map itself, not on an individual arena.

Editor > Maps > Map

### The Options **Auto Generation Status** turns the feature on for this map.

Editor > Maps > Map > Auto Generation

**Generation World** picks which world the new instances are pasted into, chosen from a list of the worlds on your server. Pointing this at a dedicated flat or void world keeps generated arenas out of the way of your builds.

Editor > Maps > Map > Auto Generation

**Minimum Spacing** is the smallest gap allowed between a new instance and anything already placed in the generation world, defaulting to 250 blocks.

Editor > Maps > Map > Auto Generation

### Prerequisite Auto Generation needs a captured copy of the arena to paste. Maps on the internal regeneration engine get this once their regeneration state is built, and maps on the WorldEdit engine need WorldEdit installed with a generated schematic. Without one, nothing is generated and players queue as normal. Source: https://www.phoenixplugins.com/docs/phoenix-duels/main-features/create-a-map --- # โ˜˜๏ธ Arena Regeneration > **Warning:** **Requirements**: Only if you use the **WorldEdit** regeneration engine, this requires [FastAsyncWorldEdit](https://www.spigotmc.org/resources/fastasyncworldedit.13932/) to be installed. The **Internal** engine needs no external dependency. ## Arena Regeneration If you enable **Arena Regeneration**, the arena will return to its initial state after each match. Any changes players made, such as placing or breaking blocks, explosions, and more, will be undone. For the regeneration to function correctly, it's essential to properly define both the **Universal Region** and the **Battle Region**. Failing to do so may cause the regeneration to not work as expected.

Editor > Maps > Arena

Editor > Maps > Map > Regeneration

Each map lets you pick the **Regeneration Engine** used to restore it: * **Internal** - a built-in regeneration system that gradually restores blocks, with no external dependency, for better performance on smaller arenas. * **WorldEdit** - schematic-based regeneration. This has a higher performance impact on large arenas, so if you use this engine, use **FAWE (Fast Async WorldEdit)** instead of standard WorldEdit โ€” it's significantly more lightweight and optimized, reducing the chance of lag during arena regeneration.

Editor > Maps > Map > Regeneration

## Internal Engine The internal engine is the default and needs nothing installed. Rather than pasting the whole arena back every time, it tracks the blocks that actually changed during the match and restores only those, spread over several ticks so a large arena does not land in a single frame. An untouched arena costs almost nothing to regenerate, and the cost scales with how much players broke rather than with how big the map is. It builds its picture of the arena when the map is captured, and that capture is tied to the exact size of the universal region. Resize the region afterwards and regeneration refuses to run until the state is recaptured from the regeneration screen, rather than restoring the arena to the wrong shape. How fast it works through the restore is tunable, in blocks per cycle and chunks per cycle. The defaults of 4096 and 16 suit most servers; lowering them spreads a large restore over more ticks at the cost of taking longer. ```yaml regeneration: internal: blocks-per-cycle: 4096 max-chunks-per-cycle: 16 ``` ## Post Round Regeneration Regenerates the arena after every round instead of only at the end of the whole match. Leave it on for modes where blocks matter round to round, such as Bed Fight or The Bridge. Turning it off means damage accumulates across the rounds of a single match and is only cleaned up once, when the match ends.

Editor > Maps > Map > Regeneration

## Pre Match Regeneration Also regenerates the arena at the start of a match, during the first round's countdown. This is a safety net rather than a normal part of the cycle: if a previous regeneration was interrupted, by a crash or a restart mid-match, the arena would otherwise be handed to the next pair of players in a broken state. It costs an extra regeneration pass per match, so it is off by default.

Editor > Maps > Map > Regeneration

## Schematic Maps on the WorldEdit engine keep a schematic file of the arena. The regeneration screen can generate a fresh one, which is what you use after editing the build so the new version is what gets restored.

Editor > Maps > Map > Regeneration

## Auto Generation A map with regeneration set up can also paste itself an extra arena when every existing instance is busy. That is covered on its own page: [Auto Generation](README.md#auto-generation). ## Quick Tip If the regeneration feature is causing performance issues on your server, be sure to check the following post for solutions:\ \ [Why does regeneration cause lag on my server?](../../plugins/questions-and-answers/README.md#why-regeneration-causes-lag-to-my-server) Source: https://www.phoenixplugins.com/docs/phoenix-duels/main-features/create-a-map/arena-regeneration --- # โ™ป๏ธ Auto Generation ## What Auto Generation Does Auto Generation handles the case where every arena of a map is already in use. Rather than making players wait, the plugin pastes a new permanent instance into a world you nominate and hands the match to it. It is separate from the grid wizard and available to any map, Free Mode or Grid Mode. Instances created this way are permanent: they stay registered after the match ends and are reused like any other arena, so a busy map grows once and then settles. > **Warning:** Auto Generation requires PhoenixDuels Premium, since it would otherwise let other editions exceed their arena limit. ## Opening the Settings The settings live on the map itself, not on an individual arena.

Editor > Maps > Map

## The Options **Auto Generation Status** turns the feature on for this map.

Editor > Maps > Map > Auto Generation

**Generation World** picks which world the new instances are pasted into, chosen from a list of the worlds on your server. Pointing this at a dedicated flat or void world keeps generated arenas out of the way of your builds.

Editor > Maps > Map > Auto Generation

**Minimum Spacing** is the smallest gap allowed between a new instance and anything already placed in the generation world, defaulting to 250 blocks.

Editor > Maps > Map > Auto Generation

## Prerequisite Auto Generation needs a captured copy of the arena to paste. Maps on the internal regeneration engine get this once their regeneration state is built, and maps on the WorldEdit engine need WorldEdit installed with a generated schematic. Without one, nothing is generated and players queue as normal. Source: https://www.phoenixplugins.com/docs/phoenix-duels/main-features/create-a-map/auto-generation --- # ๐Ÿ”จ Create an arena ## Set up an Arena The first step is to set up the arena, defining the region the plugin will recognize as the designated location for dueling.

Creating Template Menu

### Map Type Before defining any locations, a new map asks you to pick its type: * **Free Mode** - the default. You manually define every arena instance's locations yourself, as described in the steps below. * **Grid Mode** (Premium) - the plugin automatically pastes copies of your arena in a grid, based on a column/row count and the spacing between them, instead of you placing each instance by hand. See [grid-mode.md](grid-mode.md "mention"). ### Step 1: As shown in the screenshot below, the Universal Region refers to the entire arena build that you'll need to define. This helps protect your arena and makes cloning it quicker and easier.

Creating Template Menu

The process to set it up is similar to creating a region using WorldGuard for a build, ensuring smooth setup and management of your arena.

Left-Click to define the first position

Right-Click to define the second position

As shown above, I selected a cubic region that spans from one side of the arena to the other. This is how you define the Universal Region, which includes the entire arena build. ### Step 2: As shown in the screenshot below, the Battle Region is the designated area where players will duel.

Creating Template Menu

Defining this region is done in the same way as for the Universal Region, by selecting a cubic area that covers the intended battle zone within the region.

Left-Click to define the first position

Right-Click to define the second position

As shown above, I selected a cubic region that spans from one side of the arena to the other. This is how you define the Battle Region, which includes the part of the arena that the players duel. ### Step 3: Next, we will set up the First and Second Team Positions. These are the specific locations where players will spawn when the duel begins, ensuring both teams are placed correctly for the start of the match.

Creating Template Menu

Sneak + Left-Click to set the position

As shown, all you need to do is stand on the block where you want the team position to be. The plugin will automatically copy your player's current position and set it as the team's spawn point. Repeat this same process to set the **Second** Team Position as well. You can add more than one position to a team. Every position you add becomes another spawn point for that team, which is what a 2v2, 3v3 or 4v4 arena needs so teammates do not all land on the same block. ### Step 4: (Optional) The same menu also offers a **Third** and **Fourth** Team Position, set exactly like the first two. These are only used by **Multi Team Fight**, where a party splits into up to four teams instead of two. If you never intend to run `/party multifight` on this map, you can skip them. > **Warning:** A mode with `PARTY_MULTI_TEAM_FIGHT` enabled cannot be played on a map that has no third and fourth team positions, because there is nowhere to put the extra teams. ### Step 5: (Optional) This step is optional, but you can set up the FFA position where users will spawn when playing FFA mode with their party.

Creating Template Menu

### Step 6: (Optional) This step is optional, but you can set a specific position for spectators to spawn in the map. If no location is specified, spectators will spawn directly on top of the player they are watching.

Creating Template Menu

### Step 7: Now that the required steps are done, you can create your arena template.

Creating Template Menu

Your arena is now ready to be customized! ## Quick Tip Still struggling to understand the difference between the universal arena and the battle arena? Be sure to check the following for clarification: [What is the difference between the Battle Region and the Universal Region?](../../plugins/questions-and-answers/README.md#what-is-the-difference-between-battle-region-and-the-universal-region) Source: https://www.phoenixplugins.com/docs/phoenix-duels/main-features/create-a-map/create-an-arena --- # ๐ŸŽจ Customize the Arena ## Identifier With this option, you can set an identifier for the arena. Note that the arena identifier is unique and used internally by the plugin, and its different from the display name. For example, if your arena's name is Candy Land the identifier should be set to candy\_land. > **Danger:** If your server is in production, we don't recommend changing this value.

Editor > Maps > Arena

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

Editor > Maps > Arena

## Display Icon With display icon, you can set a specific material as your maps icon.

Editor > Maps > Arena

## Allowed Modes With **Allowed Modes**, you can select which game modes users are permitted to play on that specific arena. This feature lets you control the types of gameplay available in each arena, ensuring the right modes are enabled for the intended experience.

Editor > Maps > Arena

In the example above, only players queuing for Classic mode will have access to that arena. ## Teleport to Lobby When enabled, this option teleports users to the designated lobby location set for the Duels plugin. otherwise, they return to their previous location. \ Quick Tip: The lobby can be set with /pduels setLobby

Editor > Maps > Arena

Source: https://www.phoenixplugins.com/docs/phoenix-duels/main-features/create-a-map/customize-the-arena --- # ๐ŸŒ€ Duplicate an Arena ## Arena Duplication This option allows you to duplicate your current arena and place it elsewhere, making it easier to create new arenas quickly with similar settings to the original.

Editor > Maps > Arena

> **Danger:** The following action will paste the schematic of the original arena over whatever is already there. Make sure you are standing in empty space where you actually want the new arena.

Editor > Maps > Arena

## Undoing a Duplication If the copy lands somewhere it should not have, such as on top of your spawn, it can be taken back. The message confirming the duplication is clickable and runs /pduels undoarena, which you can also type yourself. Undoing removes the new arena instance from the map and restores whatever was standing at that spot before the paste, because the plugin snapshots the destination first. > **Warning:** The undo is available for **five minutes**, and only to the player who performed the duplication. After that the copy is an ordinary arena instance and has to be deleted from the arena list by hand, leaving the pasted blocks behind. Source: https://www.phoenixplugins.com/docs/phoenix-duels/main-features/create-a-map/duplicate-an-arena --- # ๐Ÿ–Œ๏ธ Edit the Arena ## Template: This option allows you to adjust settings for the universal region, battle region, FFA position, and spectator position. Additionally, you can now configure multiple team positions and assign colors to each team.

Editor > Maps > Arena

## Redefine Region This option lets you redefine the universal and battle regions, and the FFA, spectator locations.
## Add Team Spawn Positions This option lets you set up to 4 spawn locations for players, ideal for 4v4 matches, ensuring each player spawns at a different location

Editor > Maps > Arena > Template

## Change Team Color This option allows you to customize the color assigned to each team. By default Team 1 is Red and Team 2 is Blue.

Editor > Maps > Arena > Template

Source: https://www.phoenixplugins.com/docs/phoenix-duels/main-features/create-a-map/edit-the-arena --- # ๐Ÿงฑ Grid Mode ## What Grid Mode Does A Free Mode map needs every arena instance placed and defined by hand, which is the slow part of running a practice server at scale. A Grid Mode map takes the one arena you already built, captures it, and pastes it across a flat grid of copies, registering each one as a playable instance as it goes. You still build and define exactly one arena. Everything after that is generated. > **Warning:** Grid Mode requires PhoenixDuels Premium. On other editions the option is visible but locked. ## Step 1: Pick the Type A new map asks for its type before anything else. Choosing Grid Mode here changes the rest of the wizard; the choice is made once, when the map is created.

Editor > Edit Maps > [1/3] Choosing mode

Editor > Edit Maps > [1/3] Choosing mode

## Step 2: Build the Template This step is the same as a Free Mode map: define the universal region, the battle region, the team spawns, and optionally the FFA and spectator positions, then create the template. What you define here is what gets copied, so the universal region has to enclose the entire build. Anything outside it is not part of the arena and will not be pasted. ## Step 3: Lay Out the Grid The last wizard screen asks for three numbers. **Spacing Between Arenas** is the gap left between one copy and the next, in blocks. It is added to the universal region's own width, so the real distance between two arena origins is the region size plus this value. Leave enough room for anything that travels outside the build, such as arrows or ender pearls, or players in one arena will end up interfering with the next.

Editor > Edit Maps > [3/3] Preparing grid

**Columns (X axis)** and **Rows (Z axis)** are how many copies to generate along each axis. The total number of arenas is columns multiplied by rows. Neither can be set below 2.

Editor > Edit Maps > [3/3] Preparing grid

Editor > Edit Maps > [3/3] Preparing grid

The Generate button only becomes active once all three are set, and lists which of them are still missing until then. Grid generation is flat: every copy sits at the same Y as the original.

Editor > Edit Maps > [3/3] Preparing grid

The arena you already built counts as the first cell, so generating a 5 by 5 grid from it produces 24 new instances rather than 25. ## Undoing a Generation Generation runs in the background and reports progress as it goes. When it finishes, it sends a clickable message that runs /pduels undogrid, which removes everything that run pasted. This is the moment to check the spacing: once you move on, the copies are ordinary arena instances and have to be deleted individually. Auto Generation, which pastes a fresh arena when every existing one is busy, is available to Grid Mode maps as well and is covered on its own page: [Auto Generation](README.md#auto-generation). Source: https://www.phoenixplugins.com/docs/phoenix-duels/main-features/create-a-map/grid-mode --- # ๐ŸŽฎ Create a Mode ## Arena Modes **Arena Modes** are a set of rules that allow you to customize and create unique game modes for duels. By configuring these rules, you can make each mode fit your specific gameplay preferences and create varied player experiences.

Editor > Edit Modes

## Reordering You can use the reordering option to sort the modes in your desired order for the modes menu. This will change the position of the modes both in the editor, and when the user is selecting a mode.

Editor > Edit Modes

## Identifying a mode Like arenas, you can assign a unique **identifier**, **display name**, **description**, and **material** icon to the mode. This makes the game mode stand out and easily identifiable, adding a personalized touch and making it unique among others.

Editor > Edit Modes > Mode

## Loadout Type Every mode has a **Loadout Type**, which decides what players are holding when the fight begins. Two come with the plugin: * **Premade Kit** - everyone is given the same kit, chosen from the kits on your server. This is what almost every competitive mode uses, because both sides start identical. See [Create a Kit](../create-a-kit.md). * **Player Inventory** - players fight with whatever they were already carrying. Used for survival-style duels where players bring their own gear. > **Warning:** With Player Inventory, players are fighting with their real items, so a death means a real loss. The **Keep Inventory** rule and the **Restore Last Inventory** setting are both worth reviewing before you enable a mode like this. Add-ons can add more. [Player Kits](../../add-ons/player-kits/README.md) adds Player Kit, where each player uses a kit they built themselves, and Shared Player Kit, where everyone uses the host's. ## Mode Rules With **rules**, you can take customization to the next level, allowing you to create modes like **Soup PvP**, **Boxing**, or even unique challenges like **dying to Water**. The possibilities are endless, thanks to the 50+ rules available to help you fine-tune and personalize each mode to suit your mode's needs.

Editor > Edit Modes > Mode > Rules

The rule picker is sorted alphabetically (A-Z), so a specific rule is quick to find as the list grows.
Gamemode Rules (55) Names below match the picker exactly, and are listed in the same A-Z order it uses. Rules marked (Premium) only appear on the Premium edition. * **1.8 PvP Mechanics** (Premium) - Restores 1.8-style combat by removing the attack cooldown, sweep attacks and shield blocking. Likely to trigger anti-cheat plugins. * **Arrow to Block** (Premium) - Any block hit by an arrow breaks instantly. * **Arrows disappear on ground** - Arrows despawn the moment they touch the ground instead of lying around to be picked back up. * **Bow Cooldown** (Premium) - Bow shots have a cooldown, shown on the shooter's action bar. * **Clean Drops on Regeneration** (Premium) - Removes any dropped items still on the ground when the arena regenerates. * **Damage Indicators** (Premium) - Pops the damage dealt up as a floating number next to the player who was hit. * **Disable break/place blocks** - All block placement and breaking is disabled. * **Disable crafting slots** - The 2x2 crafting grid is blocked. * **Disable elytra** - Elytras will not work. * **Disable Ender Pearl** - Ender pearls are blocked. * **Disable Item Drop** - Players cannot drop items out of their inventory. * **Disable totem of undying** - The Totem of Undying will not save a player. * **Drop Player Loot** (Premium) - Drops the player's inventory on the ground when they die. * **Dying by touching lava** - Instant death on touching lava. * **Dying by touching void** - Instant death on touching the void. * **Dying by touching water** - Instant death on touching water. * **Ender Pearl cooldown** - Ender pearls have a cooldown. * **Extra Damage** (Premium) - Raises the damage dealt to opponents by a percentage you set. * **Extra hearts** (Premium) - Custom maximum health and health scale. * **Feed on Kill** (Premium) - Killing an opponent restores a percentage of the killer's hunger. * **Fireball** (Premium) - Right-clicking the ground with a fire charge throws a fireball. * **Get Target Kills** (Premium) - The first team to reach a target kill count wins the round. * **Glowing** (Premium) - Every player glows, visible through walls, for the duration of the match. * **God Apple cooldown** - Enchanted golden apples have a cooldown. * **Golden Apple cooldown** - Golden apples have a cooldown. * **Golden Head** (Premium) - An instantly consumable head that gives a golden apple effect. * **Heal Indicators** (Premium) - Pops the health regained up as a floating number next to the player who healed. * **Heal on Kill** (Premium) - Killing an opponent heals the killer by a percentage you set. * **Health does not regenerate** - Health never regenerates naturally. * **Health Indicators** (Premium) - Shows a floating health tag above every teammate and enemy for the whole match. * **Hunger does not go down** - The hunger bar never depletes. * **Immune to losing health** - Players cannot lose health when damaged. * **Keep Inventory** - Players keep their items when they die. Only has an effect on modes using the Player Inventory loadout. * **Kit Reset on Kill** (Premium) - Killing an opponent resets the killer's kit back to its original state. Only applies to modes using a premade kit, and pairs with Heal on Kill to also restore health. * **Lifesteal** (Premium) - Heals the attacker for a portion of the damage dealt, whether the hit landed with melee or a projectile. * **No Durability Loss** (Premium) - Items take no durability damage for the whole match. * **No fall damage** - Fall damage is cancelled. * **No hit delay** - Hits have no delay, used for combo modes. * **Only arrow damage** - Players only take damage from arrows. * **Only Self-Placed Block Breaking** (Premium) - Players can only break blocks they placed themselves. * **Potion Effects** (Premium) - Custom potion effects applied to players for the match. * **Pressure plate instant win** - Stepping on a golden pressure plate wins the round instantly. * **Remove Empty Bottle** (Premium) - Empty bottles are taken out of the inventory as soon as a potion is drunk. * **Soup restores health** - Consuming soup restores health. * **Timed Block** (Premium) - Placed blocks disappear after 10 seconds and return to the player's inventory. * **TNT Auto Ignite** (Premium) - TNT ignites the moment a player places it. * **Unlimited Blocks** (Premium) - Blocks placed by players are refunded immediately, so they never run out. * **Water slowly damage** (Premium) - The longer a player stays in water, the more damage they take. The remaining rules come from add-ons and only appear once that add-on is installed. * **Bed Fight** - Destroy the enemy bed, and win the game. (Add-On) * **Boxing** - Land a set number of punches; the first to reach the target wins. (Add-On) * **Floor is Lava** - The battle region floor slowly fills with lava, one layer at a time. (Add-On, Premium) * **Pillar of Fortune** - Every player periodically receives a random item or block. (Add-On, Premium) * **Spleef** - When players destroy snow blocks, snowballs go directly to their inventory. (Add-On) * **The Bridge** - Race across a void gap to score in the enemy portal. (Add-On) * **TNT Run** - TNT despawns under the player as they walk. (Add-On)
## Mode Commands With **mode commands**, you can set up various commands to trigger at different stages of the game. You can run commands when the game starts, when it ends, for the winner of the duel, and the loser of the duel. This feature is especially useful for granting winners extra rewards when they win a duel.

Editor > Edit Modes > Mode > Commands

## Mode Restriction If you want to make a specific mode exclusive to certain players, you can use the **Permission Requirement**. This feature ensures that only players with the designated permission can select and play that mode, making it accessible to a specific group of people. This is useful for creating VIP or special game modes.

Editor > Edit Modes > Mode

## Player Types With player types, you can further restrict certain modes to be played only by specific team sizes, such as 1v1, 2v2, 3v3, 4v4, or FFA. This is highly recommended if you have maps that can only accommodate a certain number of players.

Editor > Edit Modes > Mode

Editor > Edit Modes > Mode > Player Types

## Broadcast Results Enable this option to send a public broadcast message announcing the results of a match, typically indicating the winner of the game.

Editor > Edit Modes > Mode

## Delete Mode With this option, you can remove the mode. Note that this action cannot be undone.

Editor > Edit Modes > Mode

## Enabled With this option, you can disable the mode. The mode will still be visible to the editor, but users wont be able to play.

Editor > Edit Modes > Mode

## Match Settings With match settings, you can customize various aspects of the match.

Editor > Edit Modes > Mode > Match Settings

### Default Rounds To Win. This option allows you to set the amount of default rounds players will have when they duel or queue for this specific gamemode.

Editor > Edit Modes > Mode > Match Settings

### Pre Fight Delay Sections This option allows you to set a timer, requiring users to wait for a specified duration before the match begins. Items cannot be dropped or picked up during this countdown, on every round.

Editor > Edit Modes > Mode > Match Settings

### Duration Seconds This option lets you set a custom duration for how long the match will last.

Editor > Edit Modes > Mode > Match Settings

### Cooldown Seconds This option allows you to set a cooldown period that users must wait before rejoining the mode.

Editor > Edit Modes > Mode > Match Settings

## Scoreboard Each mode comes with its own customizable scoreboard. If you prefer not to use this feature, simply disable it. You can also manually change the scoreboard by browsing that specific gamemodes yml file.

Editor > Edit Modes > Mode > Scoreboard

Source: https://www.phoenixplugins.com/docs/phoenix-duels/main-features/create-a-mode --- # ๐Ÿน Create a Kit ## Inventory Kit To create premade kits for the game modes, simply set up the inventory kit type to Premade Kit. Then, shift + right-click, and the plugin will copy your inventory and create it as a kit for the chosen mode.\ If you wish to edit it, rightt-click.
## Edit kit With the **Inventory Kit** you can create a kit that player's will play with. Premade kits can be used in cases that players's wont be playing with their custom made ones.

Editor > Modes > Mode

## Custom Kit Layout When this option is enabled, player will be able to create their own layout for that specific kit. By default this option is enabled.

Editor > Modes > Mode

Source: https://www.phoenixplugins.com/docs/phoenix-duels/main-features/create-a-mode/create-a-kit --- # โšฝ Match Settings ## Match Settings With match settings, you can customize various aspects of the match.

Editor > Edit Modes > Mode > Match Settings

## Default Rounds To Win. This option allows you to set the amount of default rounds players will have when they duel or queue for this specific gamemode.

Editor > Edit Modes > Mode > Match Settings

## Pre Fight Delay Sections This option allows you to set a timer, requiring users to wait for a specified duration before the match begins. Items cannot be dropped or picked up during this countdown, on every round.

Editor > Edit Modes > Mode > Match Settings

## Duration Seconds This option lets you set a custom duration for how long the match will last.

Editor > Edit Modes > Mode > Match Settings

## Cooldown Seconds This option allows you to set a cooldown period that users must wait before rejoining the mode.

Editor > Edit Modes > Mode > Match Settings

Source: https://www.phoenixplugins.com/docs/phoenix-duels/main-features/create-a-mode/match-settings --- # ๐Ÿ“‹ Scoreboard ## Scoreboard Each mode comes with its own customizable scoreboard. If you prefer not to use this feature, simply disable it. You can also manually change the scoreboard by browsing that specific gamemodes yml file.

Editor > Edit Modes > Mode > Scoreboard

Source: https://www.phoenixplugins.com/docs/phoenix-duels/main-features/create-a-mode/scoreboard --- # ๐ŸŒŽ Integrate with Worlds (Legacy) If youโ€™re not planning to run Phoenix Practice as a standalone gamemode and instead want to use it on worlds, follow the tutorial below. ### Step 1: Make sure you have created a dedicated world specifically for Phoenix Practice and its arenas. ### Step 2: To avoid inventory issues, we recommend installing [Multiverse Inventories](https://modrinth.com/plugin/multiverse-inventories), allowing separate inventories for each world. ### Step 3: To prevent conflicts with other plugins, we recommend installing [Per World Plugins](https://www.spigotmc.org/resources/perworldplugins.96161/) and only keeping the essential plugins needed for the Practice world. ### Step 4: This step is optional, but you can enable it if needed. Phoenix Practice has a built-in system to restrict the plugin to a specific world. Use this option if you donโ€™t need to disable other plugins in the practice world with Per World Plugins. ```yaml worlds: should-use: ENABLED_WORLDS enabled: - practice_world disabled: [] ``` Source: https://www.phoenixplugins.com/docs/phoenix-duels/main-features/integrate-with-worlds-legacy --- # ๐Ÿ• Start a Match ## Queue You can queue for Unranked or Ranked matches, either solo or with your party. After selecting the game type, you can choose the player mode: 1v1, 2v2, 3v3, or 4v4 and then a specific mode.

Queue for 1v1 in Classic Mode

## Duel Invite You can use `/duel ` to directly challenge a specific user. After running the command, you will be able to: * Select the Gamemode you want to play. * Select the specific Map you want to play. * Specify the amount of rounds you want to play. * Specify if you want to have money betting. * Specify if you want to have item betting. * Specify whether the match accepts **External Spectators**.

/duel menu

When an invitation is sent to the opponent, they will need to accept it in order for the game to start. If the opponent has already invited you with the same mode and rounds, and neither invitation has a bet, sending yours back accepts theirs and the duel starts straight away.

Duel Invitation

Instead of clicking the invitation, the opponent can also answer it with /duel accept \ or /duel decline \. This is worth telling Bedrock players about, since they cannot always click chat messages. ### External Spectators The **External Spectator** option decides whether anyone outside the match may watch it. Turn it off for a private grudge match and only the participants can see the fight; anyone trying to `/spectate` into it is refused. See [Spectator Mode](../features/spectator.md). ### Skipping the menu If you already know what you want, you can pass it straight to the command and the invitation is sent immediately: /duel \ \[mode] \[rounds] So `/duel Notch crystal 3` challenges Notch on the Crystal mode with a rounds value of 3, without opening anything. What that 3 means depends on the server's `match.rounds-format` setting: with the default **First To** it is three round wins, and with **Best Of** it is three rounds played. ## Party Party FFA With your party, you can also easily create a match and play a private FFA in a specific mode.

Start a Private FFA

## Challenge Party With this option, you can select another party and fight them directly.

Start a Challenge

Source: https://www.phoenixplugins.com/docs/phoenix-duels/main-features/start-a-match --- # ๐Ÿ—„๏ธ Migration ## Information A merge was done to simplify the plugin and allow people to have access to features on each plugin. With that said, our plugin will not be an all in one plugin for duels because that is impossible, everyone have different needs and want things on their own. So our job will be to provide you with enough customization so you can implement your own implementations alongside other plugins. The merge has its own changes, some features ended up being added via addons which you will receive for free (the ones that match your product). ## Phoenix Duels (Old) For Phoenix Duels users, the /duels menu will not longer exist. If you want 2v2+ fights, they need to be done via the party system. Now we understand that removing this legacy duels menu might be a problem for several servers that already got used to. With that said we have a [legacy addon](https://www.myphoenixstore.com/en/items/legacy-teams-addon/download) that brings back this functionality but under the hood it works based on the party system. This addon will not be maintained and is marked as legacy, only bugs will be fixed for a short period before the release. ## Phoenix Practice For Phoenix Practice users, not many things really changed, the new Phoenix Duels was built on top of Phoenix Practice code, however a lot of things still ended up changing, one of the things are the menus. There are some menus that now got more simple and direct to the point. In any case if you don't think they match what you're looking for, you're more than welcome to create your own menus using a third-party plugin such as DeluxeMenus. *** ## Plugin Migration A MANUAL migration is required because several components changed, internally and config wise. If you don't want to migrate anything, just do a backup of your PhoenixDuels folder and do a clean install. It is expected that you will have to re-configure several components of the plugin in order to make it fully work like before, mainly menus. However rest assured that your maps and modes should be fully migrated correctly. We didn't changed too much, only a few refactorment which should be migrated with no problem. Some warnings before we start anything, a few things that changed: ``` For Phoenix Practice: - permissions now start with "phoenixduels." - placeholders now start with "phoenixduels_" - Default scoreboard title/scoreboard is now at templates.yml - Elo Rating is now at elo.yml ``` ### Back Up Before starting with the manual migration, make sure that you have already done a back up of your PhoenixDuels/PhoenixPractice folder. ### (Optional) - Phoenix Practice If you're migrating from Phoenix Practice, you will have to copy manually your content to the folder `PhoenixDuels`. ### Migration File Create a file under PhoenixDuels folder called `.start-migration` ### Restart the Server ### New Phoenix Duels After the plugin loads, all of your content will be moved to `PhoenixDuelsOld` and your new PhoenixDuels will be almost empty for now. In this moment you will see an addons folder too. ### For Phoenix Duels users: * You will have access to TntRun Addon (on your dashboard, in case you want) * You will have access to Spleef Addon (on your dashboard, in case you want) * You will have access to LegacyTeams Addon (on your dashboard, although we don't recommend going with it for now and give a try the plugin) ### For Phoenix Practice users: * You will have access to Bed Fight Addon (on your dashboard, in case you want) * You will have access to Boxing Addon (on your dashboard, in case you want) * You will have access to LobbyItems Addon (on your dashboard, in case you want) * You will have access to PlayerKits Addon (on your dashboard, in case you want) * You will have access to Spleef Addon (on your dashboard, in case you want) ### Completion Create a file under PhoenixDuels folder called `.complete` ### Restart the Server After that most things should start getting migrated. But as mentioned a few things will need to be configured manually. (Menus for instance, will need to be fully migrated manually) ## Note You will still have access to the old legacy versions for a while, we understand you might not want to migrate it for now and you might want to stay on these versions. However this versions will not receive any more updates/new features and only a few bug fixes in order to smooth your gameplay. Both PhoenixDuels (Legacy) and PhoenixPractice will no longer be supported starting January 1st, 2026. You can continue using them, but support and updates will no longer be provided. Source: https://www.phoenixplugins.com/docs/phoenix-duels/migration --- # ๐Ÿค– Action Types In our system's configuration files, you can utilize various action types to perform different actions. These actions enable you to interact with players, broadcast messages, play sounds, set gamemodes, and much more. ## Action Types | Action List | Description | | ------------------- | -------------------------------------------- | | \[MESSAGE] | Display a custom message to the player | | \[TITLE] | Display a custom title message to the player | | \[ACTION\_BAR] | This is a custom action bar | | \[CLOSE\_INVENTORY] | Close the player's current inventory | | \[COMMAND] | Execute a command (console or player) | | \[GAMEMODE] | Set the player's gamemode | | \[POTION\_EFFECT] | Apply a potion effect to the player | | \[SOUND] | Play a sound for the player | | \[MENU] | Open a custom menu | | \[BROADCAST] | Send a message to every player on the server | | \[BROADCAST\_WORLD] | Send a message to every player in one world | | \[DELAY] | A way to delay some actions | Explore each action type to learn more about its syntax and usage. Examples are provided to illustrate how to use these actions effectively in your system or application. ### Send Chat Message This action sends a custom message to the player. * **Syntax:** `[MESSAGE] ` * **Example:** `[MESSAGE] &aThis is a custom message` ### Send Title Message This action displays a custom title message to the player. * **Syntax:** `[TITLE] ; <subtitle>; <fadein>; <stay>; <fadeout>` * **Example:** `[TITLE] &aCustom title;&7Custom Subtitle; 20; 40; 20` ### Send Action Bar Message This action displays a custom action bar message to the player. * **Syntax:** `[ACTION_BAR] <message>` * **Example:** `[ACTION_BAR] This is a custom action bar` ### Close Inventory This action closes the inventory the player has open. * **Syntax:** `[CLOSE_INVENTORY]` * **Example:** `[CLOSE_INVENTORY]` ### Execute Command This action executes a command either from the console or as a player. Run as a player, a command PhoenixDuels registers itself, such as /queue, always runs the PhoenixDuels one, even when another plugin uses the same name. * **Syntax:** `[COMMAND] <target>; <command>` * **Example:** `[COMMAND] console; mvtp %player% world` * **Example**: `[COMMAND] player; warp spawn` ### Change Gamemode This action sets the gamemode for the player. * **Syntax:** `[GAMEMODE] <gamemode>` * **Example:** `[GAMEMODE] adventure` ### Give Potion Effect This action gives the player a potion effect. * **Syntax:** `[POTION_EFFECT] <effect>; <duration>; <amplifier>` * **Example:** `[POTION_EFFECT] speed; 5; 2` ### **Play Sound** This action plays a sound for the player. * **Syntax:** `[SOUND] <sound>; <volume>; <pitch>` * **Example:** `[SOUND] entity_arrow_hit_player; 1; 1` ### Open Menu This action opens a custom graphical user interface (GUI) menu. * **Syntax:** `[MENU] <menu_name>` * **Example:** `[MENU] queue` The menu name is the menu's **key**, not its file name. See [Customize Menus](../configurations/customize-menus.md) for the full list of keys. ### Broadcast This action sends a message to every player on the server. PlaceholderAPI placeholders are applied before it is sent. * **Syntax:** `[BROADCAST] <message>` * **Example:** `[BROADCAST] &e%player% &7just won a duel!` ### Broadcast to a World This action sends a message to every player in one world, leaving the rest of the server alone. Useful when your duels run in a dedicated world. * **Syntax:** `[BROADCAST_WORLD] <world>; <message>` * **Example:** `[BROADCAST_WORLD] duels; &e%player% &7just won a duel!` ### Delay This action will make a short pause until it continues executing actions. * **Syntax:** `[DELAY] <seconds>` * **Example:** `[DELAY] 3` Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/action-types --- # ๐Ÿค– Commands ## Player Commands <a href="#command-list" id="command-list"></a> /queue - Opens the queue menu for the player.\ /queue \<unranked/ranked> \<solo/duo/trio/quad> \<mode> - Queue the player for a specific mode.\ /queue \<unranked/ranked> \<solo/duo/trio/quad> random - Queue the player for a random mode they have permission for.\ /leave - Leave the queue you are in, or the match you are playing or spectating.\ \ /duel \<player> - Invite a player to a duel, opening the match creation menu.\ /duel \<player> \[mode] \[rounds] - Send the invitation straight away with a chosen mode and round count, skipping the menu.\ /duel accept \<player> - Accept a duel invitation from a player.\ /duel decline \<player> - Decline a duel invitation from a player.\ \ /duelsettings - Opens the settings menu for the player.\ /toggleduelrequest - Toggle whether you receive duel invitations.\ /togglepartyrequest - Toggle whether you receive party invitations.\ /duellostitems - Opens the menu with the lost items of a player.\ /stats - Opens your statistics menu.\ \ /spectate \<player> - Spectate another player's current match.\ /duelmatches - Opens a menu listing every match currently in progress, so you can pick one to spectate.\ \ /kiteditor - Opens the menu to edit the kits.\ /kiteditor editlayout \<premade\_kit\_id> - Opens straight into the layout editor for a specific premade kit.\ /kiteditor playerkits - Opens the player kits menu. Requires the Player Kits add-on.\ /dueltrims - Opens the armor trims menu. Requires phoenixduels.trims.use.\ /duelhistory \[user] - Opens your match history, or another user's.\ /duelkilleffects - Opens the kill effects selection menu.\ /duelkilleffects select \<id> - Selects a kill effect directly by its ID.\ /pduels forms - Switch between Bedrock forms and chest menus. Bedrock players only, see [GeyserMC (Bedrock)](../configurations/geysermc-bedrock.md). > **Info:** /duel accept and /duel decline do the same thing as clicking the invitation message. They are worth telling your players about if you have Bedrock users, who cannot always click chat messages reliably. ## Party Commands /party - Opens the party menu.\ /party create - Create a party.\ /party invite \<user> - Invite a user to your party.\ /party accept \<user> - Accepts a party invitation from a user.\ /party decline \<user> - Declines a party invitation from a user.\ /party leave - Leave the party you are in.\ /party kick \<user> - Remove a member from your party.\ /party kickoffline - Remove every offline member from your party.\ /party disband - Disband your party.\ /party chat \<message> - Send a message to your party only.\ /party challenge - Challenge another party.\ /party fight - Opens the party fight menu, splitting the party into two teams.\ /party play - An alias of /party fight.\ /party multifight - Splits the party into up to four teams instead of two.\ /party ffa - Player FFA with your party.\ /party help - Lists the party commands available to you. ## Admin Commands /pduels editor - Open the in-game editor for the plugin\ /pduels editLayout \<menu> - Edit the layout of a player menu in-game. See [In-Game Menu Editor](../configurations/in-game-menu-editor.md).\ /pduels addons (Premium) - List every official add-on, the installed ones first, plus any third-party add-ons that are loaded. Click an official one to open its page on our website.\ /pduels reload - Reload the Phoenix Duels configuration files.\ /pduels reload menus - Reload only the menu files, which is much quicker on a live server.\ /pduels tpArena \<id> - Teleport to an arena with a specific ID.\ /pduels setLobby - Set a specific spawn-point for the plugin.\ /pduels lobbyitems \<default/party/queue> - Hand yourself the hotbar of a lobby stage. Requires the Lobby Items add-on. /pduels addRating \<player> \<mode> \<amount> - Add an elo amount to a player for a specific mode.\ /pduels removeRating \<player> \<mode> \<amount> - Remove an elo amount of a player for a specific mode.\ /pduels resetRating \<player> \<mode> \<amount> - Reset the elo of a player for a specific mode.\ /pduels setRating \<player> \<mode> \<amount> - Set a specific elo to a player for a specific mode.\ /pduels set elo \<player> \<mode> \<amount> - Another way to set the elo of a player for a specific mode.\ /pduels set kills \<player> \<amount> - Set a player's total kill count.\ /pduels reset \<player> - Reset every mode rating of a player back to the default. /pduels createMap \<id> - Create a map with a specific ID.\ /pduels deleteMap \<id> - Delete a map with a specific ID.\ /pduels createMode \<id> - Create a mode with a specific ID.\ /pduels deleteMode \<id> - Delete a mode with a specific ID.\ /pduels undoarena - Undo the arena you just created or duplicated.\ /pduels undogrid - Undo the arenas the last grid generation pasted. > **Info:** /pduels undoarena and /pduels undogrid work for **five minutes** after the action, and only for the player who performed it. After that the arenas are ordinary arena instances and have to be deleted one by one. > **Warning:** Kills are not stored as a counter. They are summed from the match history, so /pduels set kills writes a single corrective record rather than overwriting a value. ## Add-on Commands /ranks - Opens the ranks menu. Requires the Elo Ranks add-on.\ /duelrematch - Re-challenge your last 1v1 opponent. Requires the Rematch & Requeue add-on.\ /duelrequeue - Toggle auto-requeue. Requires the Rematch & Requeue add-on.\ /ffa - Lists the Public FFA commands. Requires the Public FFA add-on, which also adds /ffaarenas, /ffaspectate, /ffakilleffects and /ffatrims. See [Public FFA commands](../add-ons/public-ffa/README.md#commands). ## Alternative Commands Every command below can be renamed or switched off entirely. This is how you resolve a clash with another plugin: if something else already owns /party, point Phoenix at /match instead. ```yaml commands: require-permission: false party: enabled: true alternative: match ``` <table data-full-width="true"><thead><tr><th width="290">Configuration key</th><th width="240">Default command</th><th>Notes</th></tr></thead><tbody><tr><td><code>commands.duel</code></td><td>/duel</td><td></td></tr><tr><td><code>commands.queue</code></td><td>/queue</td><td></td></tr><tr><td><code>commands.leave</code></td><td>/leave</td><td>Only <code>alternative</code> applies; this one cannot be disabled.</td></tr><tr><td><code>commands.duelsettings</code></td><td>/duelsettings</td><td></td></tr><tr><td><code>commands.lostitems</code></td><td>/duellostitems</td><td></td></tr><tr><td><code>commands.toggleduelrequest</code></td><td>/toggleduelrequest</td><td></td></tr><tr><td><code>commands.togglepartyrequest</code></td><td>/togglepartyrequest</td><td></td></tr><tr><td><code>commands.stats</code></td><td>/stats</td><td></td></tr><tr><td><code>commands.spectate</code></td><td>/spectate</td><td></td></tr><tr><td><code>commands.duelmatches</code></td><td>/duelmatches</td><td></td></tr><tr><td><code>commands.party</code></td><td>/party</td><td></td></tr><tr><td><code>commands.kiteditor</code></td><td>/kiteditor</td><td>Premium</td></tr><tr><td><code>commands.killeffects</code></td><td>/duelkilleffects</td><td>Premium</td></tr><tr><td><code>commands.matchhistory</code></td><td>/duelhistory</td><td>Premium</td></tr><tr><td><code>commands.trims</code></td><td>/dueltrims</td><td>Premium</td></tr></tbody></table> Renaming a command does not change its permission. /match is still gated behind phoenixduels.commands.party. Switching a command on or off, in the file or in the editor, takes effect on /pduels reload. No restart is needed. > **Info:** /leave is a name many plugins want. If something else on your server already registers it, give Phoenix a different one with `commands.leave.alternative` rather than fighting over it. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/commands --- # ๐Ÿ—„๏ธ Database Schema ## Database Schema Phoenix Duels creates its tables automatically on first start, on both SQLite and MySQL. You never need to create them yourself, and you should not edit them by hand while the server is running. Every table name honours the `database.table-prefix` option. With an empty prefix the tables are named exactly as below; with a prefix of `duels`, `_duels_player_table` becomes `duels_duels_player_table`. ## Core Tables **Player** `_duels_player_table` - one row per player. | Column | Description | | --------------------- | ---------------------------------------------------------------------- | | id | Auto-incrementing primary key. | | uniqueId | The player's UUID. Unique. | | playerName | The player's last known name. | | cachedInventory | The inventory saved before their current match, used to restore it. | | cachedPotionEffects | The potion effects saved alongside that inventory. | | rejectingDuelsRequest | Whether the player has duel requests turned off. | | lastTimePlayed | JSON map of mode id to timestamp, used for the per-mode cooldown. | | otherStats | JSON map holding the kill, death, win and loss streaks per match type. | | metadata | JSON map used by add-ons to store their own values against a player. | **Ranking** `_ranking_score_table` - one row per player per mode. | Column | Description | | ----------- | ------------------------------------- | | id | Auto-incrementing primary key. | | uniqueId | The player's UUID. | | playerName | The player's last known name. | | arenaModeId | The mode this rating belongs to. | | score | The player's elo rating in that mode. | **History** `_history_records_table` - one row per player per finished match. | Column | Description | | ---------------- | -------------------------------------------------------------------- | | id | Auto-incrementing primary key. | | uniqueId | The player's UUID. | | playerName | The player's name at the time of the match. | | arenaId | The map the match was played on. | | modeId | The mode that was played. | | matchType | `ranked`, `unranked` or `challenge`. | | kills | Kills this player got in the match. | | deaths | Deaths this player took in the match. | | status | `1` for a win, `-1` for a loss, `0` for a draw. | | createdAt | Unix timestamp of when the match ended. | | replayName | The recorded replay, if one exists. Cleared when the replay expires. | | arenaInstanceKey | Which arena instance the match ran in, used to play the replay back. | **Recaps** `_match_recaps_table` - the snapshot behind the Recap option in match history. | Column | Description | | ---------------------- | ---------------------------------------------- | | id | Auto-incrementing primary key. | | historyRecordId | The history row this recap belongs to. | | uniqueId | The player's UUID. | | cachedInventory | Their inventory at the moment the match ended. | | cachedArmor | Their armor at that moment. | | cachedOffhand | Their off-hand item at that moment. | | cachedPotionEffects | Their active potion effects at that moment. | | health / maxHealth | Their health and maximum health. | | foodLevel / saturation | Their hunger and saturation. | | createdAt | Unix timestamp of when the recap was taken. | **Other** `_kit_layouts_table` - a player's custom layout for a premade kit. | Column | Description | | ----------- | --------------------------------------- | | id | Auto-incrementing primary key. | | uniqueId | The player's UUID. | | arenaModeId | The mode whose kit this layout is for. | | slots | The arrangement of the kit's items. | | trims | The armor trims applied to that layout. | `_virtual_storage_table` - the [Lost Items](../features/lost-items.md) storage. | Column | Description | | --------------- | -------------------------------- | | id | Auto-incrementing primary key. | | uniqueId | The player's UUID. Unique. | | serializedItems | The items waiting to be claimed. | ## Add-on Tables These are only created when the matching add-on is installed. <table><thead><tr><th width="330">Table</th><th>Created by</th></tr></thead><tbody><tr><td><code>_player_kits_table</code></td><td>Player Kits. Holds <code>uniqueId</code>, <code>code</code> (the kit slot) and <code>items</code>.</td></tr><tr><td><code>_eloranks_players_table</code></td><td>Elo Ranks. Holds <code>uniqueId</code>, <code>currentRank</code> and <code>unlockedRanks</code>.</td></tr><tr><td><code>_rematchrequeue_players_table</code></td><td>Rematch & Requeue. Holds <code>uniqueId</code> and <code>autoRequeueEnabled</code>.</td></tr></tbody></table> ## Querying stats yourself > **Warning:** Kills, deaths, wins, losses and draws are **not** stored as counters anywhere. They are summed live from `_history_records_table` every time they are needed. So a player's total ranked kills is a query, not a column lookup: ```sql SELECT SUM(kills) FROM _history_records_table WHERE uniqueId = ? AND matchType = 'ranked'; ``` This is also why /pduels set kills works the way it does. Since there is no counter to overwrite, it inserts a single corrective record with a `modeId` of `manual-adjustment` that makes the sum land on the value you asked for. If you find those rows in the table, that is where they came from. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/database-schema --- # ๐Ÿชช Licensing > **Info:** License keys, sessions, startup messages, failures and the grace period work the same for every Phoenix plugin and are covered on the general [Licensing](https://www.phoenixplugins.com/docs/phoenix-plugins/licensing) page. Only the Premium version is licensed; Lite never contacts our servers. ## When Validation Fails The jar stays enabled, but the plugin never finishes loading: no arenas, modes or queues are registered, every PhoenixDuels command is blocked, and any player who runs one is told why. Fix the cause and restart. The causes and their console messages are listed under [When Validation Fails](https://www.phoenixplugins.com/docs/phoenix-plugins/licensing#when-validation-fails). On a network, every duel server behind the proxy counts as its own [session](https://www.phoenixplugins.com/docs/phoenix-plugins/licensing#sessions). ## Paid Add-ons On startup and on every reload, each paid add-on in the `addons` folder is checked against the add-ons your license owns. One you do not own is not loaded, and the console says why: ``` [!] The Boxing add-on didn't load because it seems that you don't own it. ``` If our servers cannot confirm it, the add-on is skipped until the next restart or reload. Free and third-party add-ons are not checked. /pduels addons shows which official add-ons are installed. ## Version Notices Players holding `phoenixduels.admin` are told on join when a newer build is out. `notify-if-new-version` in config.yml turns it off. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/licensing --- # ๐Ÿ”’ Permissions ## General Permissions **General Permissions** | Permission | Description | | -------------------------- | ---------------------------------------------------------- | | phoenixduels.admin | Grants access to everything regarding the plugin. | | phoenixduels.region.bypass | Allows entering the region of any ongoing match. | | phoenixduels.admin.spy | Receives the team chat messages of every ongoing match. | ## Command Permissions By default every command is open to all players. Set `commands.require-permission` to **true** in the main configuration to make the commands below require a permission. **Command Permissions** | Permission | Description | | ----------------------------------------- | ---------------------------------------------------- | | phoenixduels.commands.duels | Allows using the duel settings and spectate commands. | | phoenixduels.commands.queue | Allows using the queue command. | | phoenixduels.commands.party | Allows using the party command. | | phoenixduels.commands.stats | Allows using the stats command. | | phoenixduels.commands.kiteditor | Allows using the kit editor command. | | phoenixduels.commands.duellostitems | Allows using the lost items command. | | phoenixduels.commands.trims | Allows using the trims command. | | phoenixduels.commands.duelhistory.others | Allows viewing the match history of another player. | ## Feature Permissions **Feature Permissions** | Permission | Description | | ----------------------------------- | ---------------------------------------------------------- | | phoenixduels.trims.use | Allows opening the trims menu. | | phoenixduels.kitlayouts.trims | Allows applying trims to a premade kit layout. | | phoenixduels.replay.watch | Allows watching a replay from the match history. | | phoenixduels.party.create | Allows creating a party, when `party.require-permission-to-create` is enabled. | | phoenixplugins.killeffect.\<effect> | Allows selecting the kill effect matching `<effect>`. | | phoenixplugins.trim.pattern.\<pattern> | Allows using the trim pattern matching `<pattern>`. Applies to the trims menu, premade kit layouts and player kits. | | phoenixplugins.trim.material.\<material> | Allows using the trim material matching `<material>`. Applies to the trims menu, premade kit layouts and player kits. | ## Mode & Kit Permissions Each mode and each kit can be configured to require its own permission before a player is allowed to use it. Turn it on with `permission.required` and set the node with `permission.permission` in that mode or kit configuration file. **Mode & Kit Permissions** | Permission | Description | | ------------------------- | ------------------------------------------------------- | | phoenixduels.mode.\<id> | Allows queueing and duelling on the mode matching `<id>`. | | phoenixduels.kit.\<id> | Allows using the kit matching `<id>`. | ## Slot Permissions Slot permissions are configurable pairs of an amount and a permission node. A player receives the highest amount they have a permission for. **Slot Permissions** | Permission | Description | | ------------------------------------- | ------------------------------------------------------------ | | phoenixduels.partymembers.\<number> | Raises the party size limit. Defaults are `phoenixduels.partymembers.10` and `phoenixduels.partymembers.15`. | | phoenixduels.playerkits.\<number> | Raises the amount of player kit slots. Requires the Player Kits add-on. | Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/permissions --- # ๐Ÿ”Ž Placeholders PhoenixDuels supports **PlaceholderAPI**, allowing you to use player data from our plugin in other plugins that also support PlaceholderAPI. Below is a list of the available **PlaceholderAPI placeholders** as well as our **internal placeholders** that you can use in holograms. ## PlaceholderAPI Placeholders The following is the list of the available placeholders that Phoenix Duels has, make sure to replace the \<mode> with the ID of your mode. **General** <table><thead><tr><th width="354">Placeholders</th><th>Description</th></tr></thead><tbody><tr><td>%phoenixduels_players_playing%</td><td>The amount of players playing.</td></tr><tr><td>%phoenixduels_players_playing_<strong><mode></strong>%</td><td>The amount of players playing on a specific mode.</td></tr><tr><td>%phoenixduels_players_queueing%</td><td>The amount of players queueing.</td></tr><tr><td>%phoenixduels_players_queueing_<strong><mode></strong>%</td><td>The amount of players queueing on a specific mode.</td></tr><tr><td>%phoenixduels_player_inqueue%</td><td>Whether the player is currently in queue.</td></tr><tr><td>%phoenixduels_player_inmatch%</td><td>Whether the player is currently in a match.</td></tr><tr><td>%phoenixduels_player_inspectating%</td><td>Whether the player is currently spectating a match.</td></tr><tr><td>%phoenixduels_player_inparty%</td><td>Whether the player is currently in a party.</td></tr><tr><td>%phoenixduels_total_wins%</td><td>The player's unranked, ranked and challenge wins added together.</td></tr></tbody></table> **Ranked/Unranked** The following \<arg> can take unranked, ranked, or challenge values. | Placeholders | Description | | ----------------------------------------------------------- | -------------------------------------------------- | | %phoenixduels\_\<arg>\_total\_kills% | The amount of player's kills. | | %phoenixduels\_\<arg>\_total\_deaths% | The amount of player's deaths. | | %phoenixduels\_\<arg>\_kd\_ratio% | The KD of the player. | | %phoenixduels\_\<arg>\_total\_wins% | The amount of player's wins. | | %phoenixduels\_\<arg>\_total\_losses% | The amount of player's losses. | | %phoenixduels\_\<arg>\_total\_draws% | The amount of player's draws. | | %phoenixduels\_\<arg>\_win\_streak% | The win streak of the player. | | %phoenixduels\_\<arg>\_lost\_streak% | The lose streak of the player. | | %phoenixduels\_\<arg>\_kill\_streak% | The kill streak of the player. | | %phoenixduels\_\<arg>\_death\_streak% | The death streak of the player. | | %phoenixduels\_\<arg>**\_**players\_queueing% | The amount of players queueing. | | %phoenixduels\_\<arg>**\_**players\_queueing\_\<mode>% | The amount of players queueing on a specific mode. | | %phoenixduels\_\<arg>\_players\_playing% | The amount of players playing. | | %phoenixduels\_\<arg>\_players\_playing\_\<mode>% | The amount of players playing on a specific mode. | **Elo** <table><thead><tr><th width="354">Placeholders</th><th>Description</th></tr></thead><tbody><tr><td>%phoenixduels_ranked_global_elo%</td><td>The elo of the user on all modes.</td></tr><tr><td>%phoenixduels_ranked_<strong><mode></strong>_elo%</td><td>TThe elo of the user on a specific mode.</td></tr></tbody></table> **Leaderboard** | Placeholders (Global) | | ---------------------------------------------------- | | `%phoenixduels_<type>_<metric>%` | | `%phoenixduels_<type>_<mode>_<metric>%` | | `%phoenixduels_<type>_<metric>_<rank>%` | | `%phoenixduels_<type>_<mode>_<metric>_<rank>%` | | `%phoenixduels_<type>_<metric>_<rank>_value%` | | `%phoenixduels_<type>_<mode>_<metric>_<rank>_value%` | | Placeholders (Specific Period) | | ------------------------------------------------------------- | | `%phoenixduels_<period>_<type>_<metric>%` | | `%phoenixduels_<period>_<type>_<mode>_<metric>%` | | `%phoenixduels_<period>_<type>_<metric>_<rank>%` | | `%phoenixduels_<period>_<type>_<mode>_<metric>_<rank>%` | | `%phoenixduels_<period>_<type>_<metric>_<rank>_value%` | | `%phoenixduels_<period>_<type>_<mode>_<metric>_<rank>_value%` | ### Period: `all`, `daily`, `weekly`, `monthly` ### Type: `unranked`, `ranked`, `challenge` ### Metric: `totalkills`, `totaldeaths`, `totalwins`, `totallosses`, `totaldraws`, `kdratio`, `elo` \ \* elo is only available in the `all` period. ### Example: * `%phoenixduels_ranked_crystal_totalkills_1_value%` - will return the name of the player that has the most kills in ranked for the crystal mode * For leaderboard of elo use `%phoenixduels_ranked_elo_1%` **Other** | Placeholders | Description | | -------------------------------------------- | ------------------------------------------- | | %phoenixduels\_nametag\_color% | The nametag's color | | %phoenixduels\_nametag\_letter% | The nametag's letter | | %phoenixduels\_nametag% | The nametag | | %phoenixduels\_rejecting\_duel\_requests% | If the player has duel requests disabled | | %phoenixduels\_rejecting\_party\_requests% | If the player has party requests disabled | **Party** | Placeholders | Description | | -------------------------------- | ------------------------------------------- | | %phoenixduels\_party\_leader% | The name of the player's party leader. | | %phoenixduels\_party\_size% | The amount of members in the player's party. | | %phoenixduels\_party\_limit% | The maximum amount of members allowed in the player's party. | **Live Match** | Placeholders | Description | | -------------------------------------------------------------- | ---------------------------------- | | %phoenixduels\_duel\_time\_left% | The time left of the duel. | | %phoenixduels\_match\_kills% | The player's kills this match. | | %phoenixduels\_match\_deaths% | The player's deaths this match. | | %phoenixduels\_match\_team\_kills% | The kills of the player's team. | | %phoenixduels\_match\_enemy\_kills% | The kills of every opposing team. | | %phoenixduels\_match\_team\_rounds% | The rounds won by the player's team.| | %phoenixduels\_match\_enemy\_rounds% | The rounds won by every opposing team.| | %phoenixduels\_match\_team<strong><n></strong>\_kills% | The kills of team \<n> by position.| | %phoenixduels\_match\_team<strong><n></strong>\_rounds% | The rounds won by team \<n> by position.| | %phoenixduels\_match\_team<strong><n></strong>\_color% | The color of team \<n> by position.| ## Internal Placeholders The following list of placeholders can be used inside our plugin when running commands, editing messages, and your scoreboard. | Placeholders | Description | | --------------------------------------- | ----------------------------------- | | %time\_left% | The time left of the duel. | | %opponents% | The list with the opponents. | | %opponent% | The name of your opponent. | | %opponent\_health% | The health of your opponent. | | %opponent\_ping% | The ping of the opponents. | | %mode% | The current mode of the duel. | | %map% | The current id of the map, | | %win\_rounds% | The player's won rounds, | | %lost\_rounds% | The player's lost rounds, | | %rounds\_to\_win% | The amount of rounds left to win. | | %cps% | The player's clicks per second. | | %ping% | The player's ping, | | %boxing\_team\_score% (Requires Boxing) | The boxing score of your team. | | %boxing\_enemy\_score% (Reuires Boxing) | The boxing score of the enemy team. | | %kills% | The player's kills this match. | | %deaths% | The player's deaths this match. | | %team\_kills% | The kills of your team. | | %enemy\_kills% | The kills of every opposing team. | | %team1\_kills%, %team2\_kills%, ... | The kills of a team by position. | | %team1\_rounds%, %team2\_rounds%, ... | The rounds won by a team by position. | | %team1\_color%, %team2\_color%, ... | The color of a team by position. | Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/placeholders --- # โ‰๏ธ Questions & Answers ## Setup and arenas <details id="why-regeneration-causes-lag-to-my-server"> <summary>Why does regeneration cause lag on my server?</summary> Schematic regeneration relies on WorldEdit, and plain WorldEdit does not run its tasks asynchronously, so large pastes stall the server. Install [FAWE (Fast Async WorldEdit)](https://www.spigotmc.org/resources/fastasyncworldedit.13932/) instead, which handles the same work far more efficiently. </details> <details id="why-are-my-arenas-not-regenerating"> <summary>Why are my arenas not regenerating?</summary> Work through these in order. One of them is nearly always the cause. 1. **Regeneration is switched off for the map.** Open the map in the editor and check that Regeneration is enabled. It is off by default on a new map. 2. **No schematic was generated.** Schematic regeneration needs a saved copy of the arena to paste back. Generate it from the map's regeneration menu. 3. **WorldEdit or FAWE is missing.** If the map's **Regeneration Engine** is set to WorldEdit, one of them must be installed. Switch the engine to Internal if you would rather not install either. 4. **The universal region does not cover the whole build.** Anything outside it is not part of the arena and is never restored. This is the usual cause of "most of it comes back, but not all of it". 5. **Blocks were changed outside the region.** Players who build their way out of the arena leave blocks the plugin has no record of. By default the arena is restored when the match ends. To restore it between rounds as well, turn on **Post Round Regeneration**. If you suspect a previous regeneration silently failed, **Pre Match Regeneration** restores the arena again at the start of every match as a safety net. See [Arena Regeneration](../../main-features/create-a-map/arena-regeneration.md). </details> <details id="why-does-the-scoreboard-stays-the-same-even-when-i-edit-it"> <summary>Why does the scoreboard stay the same when I edit it?</summary> Every mode comes with its own scoreboard, and that one is shown instead of the main scoreboard. Disable the mode's scoreboard in the editor or in the mode's file in the `modes` folder, and the mode falls back to the plugin's main scoreboard. </details> <details id="how-can-i-use-a-void-world-for-my-arenas"> <summary>How can I use a void world for my arenas?</summary> Use a world generator plugin such as [VoidGen](https://www.spigotmc.org/resources/voidgen.25391/), which works with Multiverse. </details> <details id="what-is-the-difference-between-battle-region-and-the-universal-region"> <summary>What is the difference between the Battle Region and the Universal Region?</summary> The **Battle Region** is where the fight takes place. Players cannot leave it, and inside it they can build, break blocks and so on. The duel always happens inside the Battle Region. The **Universal Region** is the whole arena. It is what regeneration and duplication work on. </details> <details id="why-cant-players-place-or-break-blocks-in-my-arena"> <summary>Why can't players place or break blocks in my arena?</summary> Building is only allowed when the arena will regenerate, and only inside the Battle Region. If either is missing, the block is cancelled. Enable regeneration on the arena, and make sure the Battle Region covers the area players build in. If regeneration is already enabled, disable and enable it again so the schematic is rebuilt. Also check that no arena rule, WorldGuard flag or `spawn-protection` is blocking it. Spectators can never build. </details> <details id="how-do-i-turn-off-match-broadcasts"> <summary>How do I turn off match broadcasts?</summary> Match result broadcasts are a **per-mode** setting, so there is no single switch for the whole server. Open the mode in the editor and turn off **Broadcast Results**, or set `public-broadcast` to false in that mode's file under `modes/`. Repeat for every mode you want silent. See [Create a Mode](../../main-features/create-a-mode/README.md). </details> ## Matches and spectating <details id="why-cant-players-hit-each-other-right-after-a-round-starts"> <summary>Why can't players hit each other right after a round starts?</summary> This is almost always EssentialsX's own post-teleport protection, not PhoenixDuels. Players are teleported into the arena when a round starts, and the `teleport-invulnerability` setting in Essentials' `config.yml` grants a few seconds of invulnerability after any teleport, including ones made by other plugins. Essentials does not expose it through its API, so PhoenixDuels cannot bypass it. Lower or disable it in Essentials' `config.yml`: ```yaml teleport-invulnerability: 0 ``` The setting applies server-wide, so it also stops protecting players who teleport with `/home`, `/warp`, `/spawn` and so on. </details> <details id="why-do-matches-cancel-when-a-player-is-in-combat"> <summary>Why do matches cancel when a player is in combat?</summary> You have CombatLogX installed, and one of the participants was still combat-tagged from fighting out in the world. Phoenix Duels refuses to start a match while anyone taking part is tagged, and the cancellation message names the player responsible. Wait for their combat tag to expire and start again. Fighting inside a duel never tags anyone, so this only comes from PvP outside the arena. There is no setting to skip the check; the only way to drop the behaviour is to remove CombatLogX. </details> <details id="why-is-nobody-getting-matched-in-ranked"> <summary>Why is nobody getting matched in ranked?</summary> Ranked matchmaking will not pair two sides whose ratings are too far apart. How far is set by **tolerance** in `elo.yml`, and it defaults to 200. With that default a player rated 500 can only be matched against someone between 300 and 700. Two players can sit in the ranked queue indefinitely if the gap between them is wider, even when they are the only two waiting. On a small or quiet server, raise `tolerance`. Higher values fill queues faster at the cost of less even matches. It is also editable in the editor, under **Settings > Elo Settings**. ```yaml tolerance: 500 ``` Also check that: * An arena is actually free. If every arena of every map allowing that mode is busy, nobody is matched. * The mode allows the ranked player type being queued for, so a mode without `RANKED_DUO` never produces a ranked 2v2. * The players meet the unranked requirement, if it is on. Players who have not met it cannot enter the ranked queue at all. </details> <details id="how-do-i-allow-only-ranked-mode"> <summary>How do I allow only Ranked mode?</summary> Either disable the **Custom** and **Unranked** types in the plugin settings of the in-game editor, or set `allowed-types` in `config.yml` to Ranked only: <figure><img src="../../.gitbook/assets/Screenshot 2025-03-03 191707.png" alt=""><figcaption></figcaption></figure> ```yaml allowed-types: - RANKED ``` </details> <details id="where-did-my-items-go-after-a-cancelled-match"> <summary>Where did my items go after a cancelled match?</summary> They are almost certainly in **Lost Items**. Run `/duellostitems` to get them back. The plugin never drops or deletes items it owes a player. When it cannot hand them over, it stores them until the player claims them. That happens when: * A match with item betting is cancelled and the player's inventory is full when the stakes are returned. * Winnings are paid out while the player is offline. * A kit or reward cannot fit in the player's inventory. Players with something waiting are told so a few seconds after they join. See [Lost Items](../../features/lost-items.md). </details> <details id="does-money-betting-need-vault"> <summary>Does money betting need Vault?</summary> Yes. Money betting needs Vault together with an economy plugin. Without Vault the option still appears and can still be switched on, but it does nothing: no stake is taken and no payout is made. There is no startup warning about it, which is why it can look like it is working when it is not. Item betting does not need Vault. See [Betting](../../features/betting.md). </details> <details id="what-does-the-plugin-do-to-the-tab-list-during-a-duel"> <summary>What does the plugin do to the tab list during a duel?</summary> Before 4.0 it only adds a prefix and leaves the tab list global. From 4.0 the tab list can show only the players in the match plus their spectators, with prefixes you can customise. </details> <details id="can-i-turn-off-the-spawn-protection"> <summary>Can I turn off the spawn protection?</summary> No, there is no option to disable it. </details> <details id="which-spectator-engine-should-i-use"> <summary>Which spectator engine should I use?</summary> Use **Default** unless you have a specific reason not to. * **Default** puts the spectator into real Minecraft spectator gamemode and restores their previous gamemode when they leave. They can fly through blocks and cannot interact with anything. * **Legacy** keeps the spectator in survival and makes them an invisible, flying ghost instead. It exists for setups where changing a player's gamemode causes problems with another plugin. The setting is under **Settings > Match Settings > Spectator Engine**, or `match.spectator-engine` in `config.yml`. > **Info:** The Lite version always uses Legacy, whatever the setting says. </details> <details id="why-cant-a-player-spectate-a-match-they-disconnected-from"> <summary>Why can't a player spectate a match they disconnected from?</summary> This is deliberate and cannot be turned off. A player who leaves a match, by disconnecting or by quitting out of it, is barred from returning to that same match as a spectator. Without the rule a player could drop out of a fight they were losing and come straight back to watch their opponents, which is an obvious way to scout or to grief. The restriction only covers the match they left. They can spectate any other match normally. </details> ## Stats and placeholders <details id="how-do-i-make-a-top-10-leaderboard"> <summary>How do I make a top 10 leaderboard?</summary> Use the leaderboard placeholders with a hologram plugin, one line per position. A placeholder ending in a rank number returns the **name** of the player at that position. Adding `_value` returns their score instead. For the top 10 by elo: ``` %phoenixduels_ranked_elo_1% %phoenixduels_ranked_elo_2% %phoenixduels_ranked_elo_3% ``` ...through to `_10`. To show the rating next to the name, put both on the line: ``` &e#1 &f%phoenixduels_ranked_elo_1% &7- &a%phoenixduels_ranked_elo_1_value% ``` For other metrics, swap `elo` for `totalkills`, `totaldeaths`, `totalwins`, `totallosses`, `totaldraws` or `kdratio`. Add a mode id to scope it to one mode: ``` %phoenixduels_ranked_crystal_totalkills_1% ``` Add a period in front for a rolling board: ``` %phoenixduels_weekly_ranked_totalwins_1% ``` > **Info:** Elo is only available for the `all` period, because it is a current rating rather than something accumulated over a window. The full grammar is on the [Placeholders](../placeholders.md) page. Leaderboards are cached, and `leaderboard-fetch-interval` controls how often they refresh. </details> <details id="what-is-global-elo"> <summary>What is global elo?</summary> Global elo is the **average** of a player's ratings across every mode, not a separate rating and not a total. Each player holds an independent rating per mode, and `%phoenixduels_ranked_global_elo%` averages them into one number. Modes the player has never touched still count toward the average, at the default rating. On a server with four ranked modes, a player rated 900 in the one mode they play and untouched in the other three has a global elo of 600, not 900, because the three defaults of 500 are averaged in. Only modes that allow a ranked player type are counted. See [Elo](../../features/elo.md). </details> <details id="what-tables-does-the-plugin-create-in-my-database"> <summary>What tables does the plugin create in my database?</summary> Six core tables, plus one for each of three add-ons. They are created automatically on first start, on both SQLite and MySQL, and every name honours your `database.table-prefix`. * `_duels_player_table` - one row per player. * `_ranking_score_table` - one row per player per mode, holding their elo. * `_history_records_table` - one row per player per finished match. * `_match_recaps_table` - the end-of-match snapshot behind the Recap option. * `_kit_layouts_table` - custom kit layouts. * `_virtual_storage_table` - the Lost Items storage. > **Warning:** Kills, deaths, wins, losses and draws are not stored as counters. They are summed live from the match history table, so there is no column to read them from. </details> ## Kits, menus and messages <details id="how-can-i-remove-the-kit-items-from-being-displayed-in-the-menu"> <summary>How can I remove the kit items from the menus?</summary> Remove the `%kit%` placeholder from the `create_match`, `duel_player` and `select_arena_mode` menus (for custom, unranked and ranked). <figure><img src="../../.gitbook/assets/image (8).png" alt="" width="563"><figcaption></figcaption></figure> An item that uses the placeholder: ```yaml mode-item: display-name: '&aPlay %display_name%' lore: - '&7%description%' - '' - ' %kit%' - '' - '&e%arenas% &aavailable arena(s)!' - '' - '&6Left-Click: &eSelect mode.' - '&6Right-Click: &ePreview kit.' ``` </details> <details id="how-can-i-make-npcs-queue"> <summary>How can I make NPCs queue players?</summary> Face the NPC and select it with `/npc select`, then give it the play command. This one queues the player for an unranked 1v1 in the classic mode when they interact with the NPC: ``` /npc command add duels play unranked solo classic ``` </details> <details id="what-does-actiontype-not-implemented-mean"> <summary>What does "ActionType not implemented" mean?</summary> One of your actions uses a type that does not exist, so the plugin cannot run it. Check the action against the supported list on [Action Types](../action-types.md). </details> <details id="what-does-the-missing-translation-warning-mean"> <summary>What does the "Missing translation" warning mean?</summary> The plugin looked for a line in your active language file and did not find one, so it fell back to English. It is a warning rather than an error, and nothing breaks. It usually happens after an update that added new messages, since your existing translation file predates them. The warning names the missing key. Either add that key to your translation file under `translations/`, or, if you have not customised the file, delete it and restart so the plugin writes a fresh, complete one. See [Languages & Translations](../../configurations/languages.md). > **Warning:** Deleting the file discards any wording you changed. Take a copy first if you have edited it. </details> ## Compatibility <details id="does-phoenixduels-work-on-velocity-or-bungeecord"> <summary>Does PhoenixDuels work on Velocity or BungeeCord?</summary> Yes, but it is not a proxy plugin, and there is no Velocity or BungeeCord jar. PhoenixDuels is a Spigot/Paper plugin and runs on the **backend servers** behind your proxy, exactly as it would on a standalone server. Put it on your duels server, not on the proxy. Point every backend at the same MySQL database and they share player statistics, elo, match history, player kits and lost items. They do **not** share live state: queues, parties and matches are per-server, so two players on different backends cannot queue into the same match or party up. For one duels lobby, run one duels server and send players to it. To let two separate installations share one database without colliding, give each a different `database.table-prefix`. </details> <details id="does-phoenixduels-have-an-ffa-mode"> <summary>Does PhoenixDuels have an FFA mode?</summary> Party FFA is included, so a party can fight free for all between its own members. Public arenas that anyone can walk into come with the [Public FFA](../../add-ons/public-ffa/README.md) add-on. </details> <details id="does-phoenixduels-support-party-plugins"> <summary>Does PhoenixDuels support party plugins?</summary> No, there is no hook for external party plugins such as Party and Friends. PhoenixDuels has its own [party system](../../features/party/README.md), including `/party fight`, which those plugins do not provide. </details> <details id="can-the-plugin-run-as-a-forge-or-fabric-mod"> <summary>Can the plugin run as a Forge or Fabric mod?</summary> No, there is no mod version. Hybrid servers such as Arclight or Mohist can load it, but we do not recommend them, and faults caused by the hybrid itself, such as its own teleport handling, are not plugin issues. </details> <details id="why-cant-a-player-rejoin-after-a-duel-on-a-hybrid-server"> <summary>Why can't a player rejoin after a duel on a hybrid server?</summary> On hybrid servers such as Arclight, Youer or Mohist, the player who died in a duel can get kicked with `multiplayer.disconnect.duplicate_login` every time they try to rejoin. The server still holds a ghost copy of that player, so it rejects the new login. The plugin respawns dead players itself when a world does not respawn them automatically, and some hybrids do not clean up the old player when that happens. Turn on immediate respawn in every arena world so the server respawns players on its own: ``` /gamerule doImmediateRespawn true ``` A server restart clears any ghost players that are already stuck. </details> <details id="why-isnt-the-newest-minecraft-version-supported-yet"> <summary>Why isn't the newest Minecraft version supported yet?</summary> A new release is added once it has settled, so there is a gap between launch and support. Our plugins are updated one at a time, and PhoenixDuels usually comes after PhoenixLobby and PhoenixCrates. There is no ETA, and updates are free for life. The current list is on [Version Support](../../first-installation.md#version-support). </details> ## Add-ons and purchases <details id="which-add-ons-work-on-the-lite-version"> <summary>Which add-ons work on the Lite version?</summary> None. Every add-on requires PhoenixDuels Premium as its base plugin. Some add-ons are free to download, such as Floor is Lava, Pillar of Fortune and Rematch & Requeue; free refers to their price, not to the edition they run on. An add-on placed in the `addons` folder of a Lite installation refuses to load and says so in the console on startup. The rest of the plugin keeps working normally. </details> <details id="why-do-add-ons-appear-in-my-addons-folder"> <summary>Why do add-ons appear in my addons folder?</summary> The jar you downloaded is the bundle, which carries the add-ons inside it and unpacks them on startup. Log in on the product page and download the core-only jar if you do not want them. </details> <details id="do-you-offer-refunds"> <summary>Do you offer refunds?</summary> No. A downloaded product is not refundable. See point 7 of the [Terms and Conditions](https://www.phoenixplugins.com/terms-and-conditions). </details> Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers --- # โ” Can i turn off the spawn protection? ## Answer No, there is no option to disable it. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/can-i-turn-off-the-spawn-protection --- # โ‰๏ธ Can the plugin run as a Forge or Fabric mod? ## Answer No. It is a Java plugin and there is no mod version of it. Hybrid servers such as Arclight or Mohist can load it, but we do not recommend them. Faults caused by the hybrid itself, such as its own teleport handling, are not plugin issues. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/can-the-plugin-run-as-a-forge-or-fabric-mod --- # โ‰๏ธ Does money betting need Vault? ## Answer Yes. Money betting needs Vault together with an economy plugin. Without Vault the option still appears and can still be switched on, but it does nothing at all: no stake is taken and no payout is made. There is no startup warning about it, which is why it can look like it is working when it is not. Item betting does not need Vault and works on its own. See [Betting](../../features/betting.md). Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/does-money-betting-need-vault --- # โ‰๏ธ Does PhoenixDuels have an FFA mode? ## Answer Party FFA is already included in PhoenixDuels, so a party can fight free for all between its own members. Public FFA, where anyone can walk into an open arena, is not part of PhoenixDuels and is not an add-on for it. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/does-phoenixduels-have-an-ffa-mode --- # โ‰๏ธ Does PhoenixDuels support party plugins? ## Answer No, there is no hook for external party plugins such as Party and Friends. PhoenixDuels has its own party system, including /party fight, which those plugins do not provide. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/does-phoenixduels-support-party-plugins --- # โ‰๏ธ Does PhoenixDuels work on Velocity or BungeeCord? ## Answer Yes, but it is not a proxy plugin. There is no Velocity or BungeeCord jar. PhoenixDuels is a Spigot/Paper plugin and runs on the **backend servers** behind your proxy, exactly as it would on a standalone server. Put it on your duels server, not on the proxy. ## Running it on more than one backend Point every server at the same MySQL database and they will share player statistics, elo, match history, player kits and lost items. They will **not** share live state. Queues, parties and matches are per-server, so two players on different backends cannot queue into the same match or party up. If you want one duels lobby, run one duels server and send players to it. If you need two separate installations to share one database without colliding, give each of them a different `database.table-prefix`. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/does-phoenixduels-work-on-velocity-or-bungeecord --- # โ‰๏ธ Do you offer refunds? ## Answer No. Once the product has been downloaded it is not refundable. See point 7 of our [Terms and Conditions](https://www.phoenixplugins.com/terms-and-conditions). Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/do-you-offer-refunds --- # โ” How can i make npcs queue? ## Answer 1. To make the queue via an npc, the process is pretty easy. First, you need to select your npc by doing **Select the NPC:** Face the NPC and run the following command to select it:\ /npc select 2. **Add the Duels Command:** Once you've selected the NPC, you can assign the duels play command. This example will allow the NPC to queue the player for an unranked 1v1 duel in classic mode:\ /npc command add duels play unranked solo classic This will automatically queue the player for an unranked 1v1 match with classic mode when they interact with the NPC. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/how-can-i-make-npcs-queue --- # โ” How can i remove the kit items from being displayed in the menu? ## Answer Do you want to remove the whole kit from being displayed on the menu? Make sure to remove the `%kit%` placeholder from the menus: `create_match` , `duel_player`, `select_arena_mode` (for custom, unranked, and ranked). These are the menu names where you can find that specific placeholder. <figure><img src="../../.gitbook/assets/image (8).png" alt="" width="563"><figcaption></figcaption></figure> An example of an item that has the `%kit%` placeholder ```yaml mode-item: display-name: '&aPlay %display_name%' lore: - '&7%description%' - '' - ' %kit%' - '' - '&e%arenas% &aavailable arena(s)!' - '' - '&6Left-Click: &eSelect mode.' - '&6Right-Click: &ePreview kit.' ``` Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/how-can-i-remove-the-kit-items-from-being-displayed-in-the-menu --- # โ” How can I use a void world for my arenas? ## Answer You can use a plugin such as [VoidGen](https://www.spigotmc.org/resources/voidgen.25391/) that works with Multiverse. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/how-can-i-use-a-void-world-for-my-arenas --- # โ” How do i allow only Ranked mode? ## Answer There are two ways to enable only the **Ranked Mode** for your server: 1. **Via the in-game editor**: Navigate to the plugin's settings and disable both the **Custom** and **Unranked** modes. 2. **Via the config file**: Open the **main config.yml** file of the plugin and modify the **allowed-types** setting to only permit Ranked mode. <figure><img src="../../.gitbook/assets/Screenshot 2025-03-03 191707.png" alt=""><figcaption></figcaption></figure> Both methods will restrict players to only the Ranked mode on your server. ```yaml allowed-types: - RANKED ``` Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/how-do-i-allow-only-ranked-mode --- # โ” How do i make a top 10 leaderboard? ## Answer Use the leaderboard placeholders with a hologram plugin, one line per position. A placeholder ending in a rank number returns the **name** of the player at that position. Adding `_value` returns their score instead. ## Top 10 by elo ``` %phoenixduels_ranked_elo_1% %phoenixduels_ranked_elo_2% %phoenixduels_ranked_elo_3% ``` ...through to `_10`. To show the rating next to the name, put both on the line: ``` &e#1 &f%phoenixduels_ranked_elo_1% &7- &a%phoenixduels_ranked_elo_1_value% ``` ## Other metrics Swap `elo` for `totalkills`, `totaldeaths`, `totalwins`, `totallosses`, `totaldraws` or `kdratio`. Add a mode id to scope it to one mode: ``` %phoenixduels_ranked_crystal_totalkills_1% ``` Add a period in front for a rolling board: ``` %phoenixduels_weekly_ranked_totalwins_1% ``` > **Info:** Elo is only available for the `all` period, because it is a current rating rather than something accumulated over a window. The full grammar is on the [Placeholders](../placeholders.md) page. Leaderboards are cached, and `leaderboard-fetch-interval` controls how often they refresh. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/how-do-i-make-a-top-10-leaderboard --- # โ” How do i turn off match broadcasts? ## Answer Match result broadcasts are a **per-mode** setting, not a global one, so there is no single switch for the whole server. Open the mode in the editor and turn off **Broadcast Results**, or set `public-broadcast` to false in that mode's file under `modes/`. Repeat for every mode you want silent. See [Create a Mode](../../main-features/create-a-mode/README.md). Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/how-do-i-turn-off-match-broadcasts --- # ๐Ÿค” What does "ActionType not implemented" mean? ## Answer One of your actions uses a type that does not exist, so the plugin cannot run it. Check the action against the supported list on the [Action Types](../action-types.md) page. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/what-does-actiontype-not-implemented-mean --- # โ“ What does the "Missing translation" warning mean? ## Answer The plugin looked for a line in your active language file and did not find one, so it fell back to English. It is a warning rather than an error, and nothing breaks. It usually happens after an update that added new messages, since your existing translation file predates them. ## How to fix it The warning names the missing key. Either add that key to your translation file under `translations/`, or, if you have not customised the file, delete it and restart so the plugin writes a fresh, complete one. See [Languages & Translations](../../configurations/languages.md). > **Warning:** Deleting the file discards any wording you changed. Take a copy first if you have edited it. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/what-does-the-missing-translation-warning-mean --- # ๐Ÿค” What does the plugin do to the tab list during a duel? ## Answer Before 4.0 it only adds a prefix and leaves the tab list global. From 4.0 the tab list can show only the players in the match plus their spectators, with prefixes you can customise. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/what-does-the-plugin-do-to-the-tab-list-during-a-duel --- # ๐Ÿค” What is global elo? ## Answer Global elo is the **average** of a player's ratings across every mode, not a separate rating and not a total. Each player holds an independent rating per mode. `%phoenixduels_ranked_global_elo%` averages those together to give one number for the player overall. ## Why it looks lower than expected Modes the player has never touched still count toward the average, at the default rating. On a server with four ranked modes, a player rated 900 in the one mode they play and untouched in the other three has a global elo of 600, not 900, because the three defaults of 500 are averaged in. Only modes that allow a ranked player type are counted at all. See [Elo](../../features/elo.md). Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/what-is-global-elo --- # ๐Ÿค” What is the difference between Battle Region and the Universal Region? ## Answer ### Battle Region The **Battle Region** is the zone where the actual combat takes place. Players won't be able to leave this area, and within it, they'll be able to build, break blocks, and more. ### Universal Region The **Universal Region** refers to the overall arena. It's useful for regenerating or duplicating the arena, among other functions.\ \ The dueling will always be happening inside the **Battle Region**. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/what-is-the-difference-between-battle-region-and-the-universal-region --- # ๐Ÿค” What tables does the plugin create in my database? ## Answer Six core tables, plus one for each of three add-ons. They are created automatically on first start, on both SQLite and MySQL, and every name honours your `database.table-prefix`. * `_duels_player_table` - one row per player. * `_ranking_score_table` - one row per player per mode, holding their elo. * `_history_records_table` - one row per player per finished match. * `_match_recaps_table` - the end-of-match snapshot behind the Recap option. * `_kit_layouts_table` - custom kit layouts. * `_virtual_storage_table` - the Lost Items storage. > **Warning:** Kills, deaths, wins, losses and draws are not stored as counters. They are summed live from the match history table, so there is no column to read them from. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/what-tables-does-the-plugin-create-in-my-database --- # โ“ Where did my items go after a cancelled match? ## Answer They are almost certainly in **Lost Items**. Run /duellostitems to get them back. The plugin never drops or deletes items it owes a player. When it cannot hand them over, it stores them until the player claims them. That happens when: * A match with item betting is cancelled and the player's inventory is full when the stakes are returned. * Winnings are paid out while the player is offline. * A kit or reward cannot fit in the player's inventory. Players with something waiting are told so a few seconds after they join the server. See [Lost Items](../../features/lost-items.md). Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/where-did-my-items-go-after-a-cancelled-match --- # โ‰๏ธ Which add-ons work on the Lite version? ## Answer None of them. Every add-on requires PhoenixDuels Premium as its base plugin. Some add-ons are free to download, such as Floor is Lava, Pillar of Fortune and Rematch & Requeue. Free refers to their price, not to which edition they run on. An add-on placed in the `addons` folder of a Lite installation refuses to load and says so in the console on startup. The rest of the plugin keeps working normally. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/which-add-ons-work-on-the-lite-version --- # ๐Ÿค” Which spectator engine should i use? ## Answer Use Default unless you have a specific reason not to. * **Default** puts the spectator into real Minecraft spectator gamemode and restores their previous gamemode when they leave. They can fly through blocks and cannot interact with anything. * **Legacy** keeps the spectator in survival and makes them an invisible, flying ghost instead. It exists for setups where changing a player's gamemode causes problems with another plugin. The setting is under Settings > Match Settings > Spectator Engine, or `match.spectator-engine` in `config.yml`. > **Info:** The Lite version always uses Legacy, whatever the setting says. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/which-spectator-engine-should-i-use --- # โ“ Why are my arenas not regenerating? ## Answer Work through these in order. One of them is nearly always the cause. 1. **Regeneration is switched off for the map.** Open the map in the editor and check that Regeneration is enabled. It is off by default on a new map. 2. **No schematic was generated.** Schematic regeneration needs a saved copy of the arena to paste back. Generate it from the map's regeneration menu. 3. **WorldEdit or FAWE is missing.** If the map's **Regeneration Engine** is set to WorldEdit, one of them must be installed. Switch the engine to Internal if you would rather not install either. 4. **The universal region does not cover the whole build.** Anything outside it is not part of the arena and is never restored. This is the usual cause of "most of it comes back, but not all of it". 5. **Blocks were changed outside the region.** Players who build their way out of the arena leave blocks the plugin has no record of. ## If it works but not often enough By default the arena is restored when the match ends. To restore it between rounds as well, turn on **Post Round Regeneration**. If you suspect a previous regeneration silently failed, **Pre Match Regeneration** restores the arena again at the start of every match as a safety net. See [Arena Regeneration](../../main-features/create-a-map/arena-regeneration.md). Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/why-are-my-arenas-not-regenerating --- # โ“ Why can't a player rejoin after a duel on a hybrid server? ## Answer On hybrid servers such as Arclight, Youer or Mohist, the player who died in a duel can get kicked with `multiplayer.disconnect.duplicate_login` every time they try to rejoin. The server still holds a ghost copy of that player, so it rejects the new login. The plugin respawns dead players itself when a world does not respawn them automatically, and some hybrids do not clean up the old player when that happens. Turn on immediate respawn in every arena world so the server respawns players on its own: ``` /gamerule doImmediateRespawn true ``` A server restart clears any ghost players that are already stuck. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/why-cant-a-player-rejoin-after-a-duel-on-a-hybrid-server --- # โ“ Why can't a player spectate a match they disconnected from? ## Answer This is deliberate and cannot be turned off. A player who leaves a match, whether by disconnecting or by quitting out of it, is barred from returning to that same match as a spectator. Without the rule a player could drop out of a fight they were losing and immediately come back to watch their opponents, which is an obvious way to scout or to grief. The restriction only covers the match they left. They can spectate any other match normally, and once that match ends the restriction is irrelevant. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/why-cant-a-player-spectate-a-match-they-disconnected-from --- # โ“ Why can't players hit each other right after a round starts? ## Answer This is almost always caused by EssentialsX's own post-teleport protection, not PhoenixDuels. When a round starts, players are teleported into the arena, and Essentials' `teleport-invulnerability` setting (in its `config.yml`) grants a few seconds of invulnerability after any teleport, including ones performed by other plugins. PhoenixDuels has no way to bypass this - Essentials doesn't expose it through its public API. To fix it, lower or disable it in Essentials' `config.yml`: ```yaml teleport-invulnerability: 0 ``` Note this setting applies server-wide, not just to duels - it also protects players who teleport via `/home`, `/warp`, `/spawn`, etc. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/why-cant-players-hit-each-other-right-after-a-round-starts --- # โ“ Why can't players place or break blocks in my arena? ## Answer Building is only allowed when the arena will regenerate, and only inside the Battle Region. If either is missing, the block is cancelled. Enable regeneration on the arena, and make sure the Battle Region actually covers the area players build in. If regeneration is already enabled, disable and enable it again so the schematic is rebuilt. Also check that no arena rule, WorldGuard flag, or spawn-protection is blocking it. Spectators can never build. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/why-cant-players-place-or-break-blocks-in-my-arena --- # โ“ Why do add-ons appear in my addons folder? ## Answer The jar you downloaded is the bundle, which carries the add-ons inside it and unpacks them on startup. Log in on the product page and download the core only jar if you do not want them. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/why-do-add-ons-appear-in-my-addons-folder --- # โ“ Why does the scoreboard stays the same even when i edit it? ## Answer By default, all game modes come with their scoreboard. You can disable this either manually by editing the mode's configuration file in the modes folder or directly from the in-game editor. Once a game mode's scoreboard is disabled, it will automatically use the plugin's main scoreboard. This provides flexibility in managing your scoreboards across different modes. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/why-does-the-scoreboard-stays-the-same-even-when-i-edit-it --- # โ“ Why do matches cancel when a player is in combat? ## Answer You have CombatLogX installed, and one of the participants was still combat-tagged from fighting out in the world. Phoenix Duels refuses to start a match while anyone taking part is tagged, and the cancellation message names the player responsible. Waiting for their combat tag to expire and starting again is all that is needed. Fighting inside a duel never tags anyone, so this only ever comes from PvP that happened outside the arena. If you do not want the behaviour at all, remove CombatLogX. There is no setting to keep the plugin and skip the check. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/why-do-matches-cancel-when-a-player-is-in-combat --- # โ“ Why is nobody getting matched in ranked? ## Answer Ranked matchmaking will not pair two sides whose ratings are too far apart. How far is set by **tolerance** in `elo.yml`, and it defaults to 200. With that default a player rated 500 can only be matched against someone between 300 and 700. Two players can sit in the ranked queue indefinitely if the gap between them is wider, even when they are the only two waiting. ## How to fix it On a small or quiet server, raise `tolerance`: ```yaml tolerance: 500 ``` Higher values fill queues faster at the cost of less even matches. It is also editable from the editor, under Settings > Elo Settings. ## Other things to check * An arena has to actually be free. If every arena of every map allowing that mode is busy, nobody is matched. * The mode has to allow the ranked player type being queued for, so a mode without `RANKED_DUO` never produces a ranked 2v2. * If the unranked requirement is on, players who have not met it cannot enter the ranked queue at all. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/why-is-nobody-getting-matched-in-ranked --- # โ“ Why isn't the newest Minecraft version supported yet? ## Answer A new Minecraft release is added once it has settled, so there is a gap between it launching and us supporting it. Our plugins are updated one at a time, and PhoenixDuels usually comes after PhoenixLobby and PhoenixCrates. We do not give an ETA for it. Updates are free for life, so the update reaches you at no extra cost. Check the [Version Support](../version-support.md) page for what is supported right now. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/why-isnt-the-newest-minecraft-version-supported-yet --- # โ“ Why Regeneration causes lag to my server ## Answer Our regeneration process relies on the WorldEdit plugin. However, if you're using the default WorldEdit, it can cause performance issues because it doesn't run tasks asynchronously on your server. To improve performance, we recommend installing FAWE (Fast Async WorldEdit), which is an optimized alternative that handles tasks more efficiently. Download FAWE: [Click Here](https://www.spigotmc.org/resources/fastasyncworldedit.13932/) Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/questions-and-answers/why-regeneration-causes-lag-to-my-server --- # ๐Ÿ“’ Version Support ## Version Support <a href="#version-support" id="version-support"></a> The plugin supports Spigot, any Spigot forks, Paper, and any Paper forks. 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. <table><thead><tr><th>Minecraft Version</th><th data-type="checkbox"></th></tr></thead><tbody><tr><td>26.x</td><td>true</td></tr><tr><td>1.21.x</td><td>true</td></tr><tr><td>1.20.4 - 1.20.6</td><td>true</td></tr><tr><td>1.20.3 and older</td><td>false</td></tr></tbody></table> > **Info:** Older versions were supported up to an earlier release of the plugin. If you are still on 1.20.3 or below, keep using that release. Source: https://www.phoenixplugins.com/docs/phoenix-duels/plugins/version-support --- # ๐Ÿ  Homepage ## Introduction PhoenixDuels, is a revolutionary plugin that simplifies duels. Say goodbye to outdated and confusing plugins. With PhoenixDuels, you'll enjoy an easy-to-use in-game editor and a range of features that make your life easy and enhance your experience. Our plugin is mostly designed to work seamlessly on any type of server, whether it's a survival server, skyblock server, and more. Additionally, it's worth mentioning that all player menus have been carefully planned to support Bedrock versions. ## Documentation This docs page includes every feature provided by the plugin. Be sure to take an in-depth look, and if you have any questions or suggestions, feel free to contact our team. ## Premium Plan In the following table, you can see the additional perks available with the premium version of PhoenixDuels. ### Purchase Phoenix Duels from our [Website](https://www.myphoenixstore.com/en/items/phoenix-duels) | Free Version | Premium Extra Perks | | ---------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | | Gamemodes Limit 5 | Unlimited Gamemodes | | Maps Limit 5 | Unlimited Maps | | Arenas per Map Limit 2 | Unlimited Arenas | | No Party FFA | Party FFA Included | | No Party Split | Party Split Included | | Party Limit of 4 | Unlimited Party Limit | | Limited Gamemode Rules | Golden Head, Extra Hearts, Remove Empty Bottoel, Water Slowly Damage, Timed Block, Only Self Placed Blocks Breaking. | | SQLite Database Support | MySQL Database Support | | No Pre-kit Layouts | Pre-kit Layouts included | | Community Based Support | Specialized Support | | Response Time ( NO ETA ) | Response Time ( 1-48 Hours ) | | Hot Fixes ( NO ETA ) | Bug Fixes ( 1-7 Days ) | | Doesn't Include a Discord Role | Discord Role | ### Bug Reports <a href="#bug-reports" id="bug-reports"></a> Before reporting an issue, make sure you have tested the latest available version of the plugin. <figure><img src=".gitbook/assets/Phoenix Duels 3.0 Thumbnail.png" alt="" width="563"><figcaption><p>Phoenix Duels</p></figcaption></figure> Source: https://www.phoenixplugins.com/docs/phoenix-duels