Public Parties

Public Parties

Add-on
On this page

#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.

circle-exclamation

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.

State Behaviour
Private The default. The party is hidden from the browser and can only be joined by invite.
Public The party is listed in the browser and anyone can join it instantly.
Requests The 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 <player> Joins that player's party directly, or sends a request if the party is in Requests mode.
/joinparty accept <player> Accepts a pending join request. Leader only.
/joinparty deny <player> 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 <text> Sets the description shown on the party's entry in the browser. Leader only.
/party desc clear Removes the description. Leader only.
/party ban <player> Bans a player from the party. Leader only.
/party unban <player> Lifts a ban. Leader only.
/party bans Opens the banned players menu. Leader only.

circle-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).

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.

circle-exclamation

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 <text> 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 key Default Notes
advertisement.enabled true Enables /party announce.
advertisement.cooldown-seconds 60 How long a party has to wait between two announcements.
maximum-listed-parties 0 Caps how many parties can be listed at once. 0 is unlimited.
visibility-cooldown-seconds 3 How long a leader has to wait between two visibility changes, from the menu or a command. 0 turns it off.
browser.hide-full-parties true The starting state of the browser's hide-full toggle.
browser.default-sort SLOTS_REMAINING SLOTS_REMAINING, MEMBERS, LEADER_NAME, INSTANT_JOIN or NEEDS_APPROVAL.
requests.enabled true Turning this off removes Requests from the visibility cycle entirely.
requests.expiration-seconds 60 How long a pending request stays valid.
description.enabled true Enables /party desc.
description.maximum-length 48 Characters allowed in a description.
permissions.enabled false Gates joining and listing behind the permissions below. Off by default so existing setups keep working.
command.alternative joinparty Renames /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.

circle-exclamation

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.

circle-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.

My Cart

Your cart is empty

Looks like the spiders padded through here. Pick a plugin and it will show up here. Continue shopping