MultiPack Feature

The Multipack feature allows for sending additional ResourcePacks to players with the base-pack. Each pack is defined as a template, which can be required, optional, or enabled by default. Players can toggle optional templates on/off, and Nexo re-sends the appropriate packs automatically.

How it works

  • Templates are standalone resource packs stored in plugins/Nexo/pack/template_packs/ (or at a custom path).

  • On startup/reload, each template is read, built, and hosted alongside the main pack.

  • When a player joins, they receive the main Nexo pack plus any template packs that are enabled for them (required ones + their personal selections).

  • Templates can declare conflicts with each other, meaning enabling one automatically disables the conflicting template(s).


Configuration

All multipack configuration lives in plugins/Nexo/multipack.yml. Templates are defined under the templates: key, and the optional GUI menu under menu:.

templates:
  my_template:
    required: false       # Always sent to all players, cannot be toggled
    default: true         # Enabled by default for new players
    conflicts_with:       # Disables these templates when this one is enabled
      - other_template
    path: ""              # Optional: custom path to the pack folder or zip
                          # Defaults to plugins/Nexo/pack/template_packs/<id>
  other_template:
    required: false
    default: false
    conflicts_with: my_template  # Can also be a single string

menu:
  # See the GUI / Menu section below

Template options

Option
Type
Default
Description

required

boolean

false

Always sent to every player; cannot be toggled off

default

boolean

false

Enabled by default for players who have never toggled it

conflicts_with

string or list

[]

IDs of templates to disable when this one is enabled

path

string

""

Path to the pack. Accepts absolute paths, paths relative to template_packs/, or paths relative to the Nexo data folder. Defaults to template_packs/<id>

Pack folder structure

Place each template pack as a folder or zip inside plugins/Nexo/pack/template_packs. This follows the same logic as πŸ—‚οΈ ResourcePack-Structure

If the pack has no pack.mcmeta, Nexo generates one based on the server's version.


GUI / Menu

Nexo includes a built-in inventory GUI for players to browse and toggle their template selections without needing commands. The menu is configured under the menu: key in multipack.yml.

Opening the menu

  • Permission: nexo.command.multipack.menu

  • Permission for opening for others: nexo.command.multipack.menu.other

Changes made inside the GUI are batched, meaning packs are only re-sent once when the inventory is closed, not on every click.

Slot options

Option
Type
Default
Description

offset.x / offset.y

integer

1

Column (1–9) and row (1–rows) of the top-left cell of the slot

size.x / size.y

integer

1

Width and height in cells. Useful for decorative multi-cell slots

all_slots_except_first_empty

boolean

false

When true, only the top-left cell is interactive; all others display an invisible placeholder that copies the base item's data components

base_item

item section

β€”

Fallback item used when a state has no own item defined. Required unless every action state defines its own item

action

section

β€”

Defines what happens when the slot is clicked (see below)


Action types

TOGGLE

Displays one of two items depending on whether the target template is currently enabled, and flips it on click.

enabled_item and disabled_item are merged on top of base_item if one is defined, so shared properties (e.g. lore) can be put in base_item and only the differences in each state item.

Required templates cannot be toggled β€” clicking their slot does nothing.

CYCLING

Cycles through a list of templates on each click, enabling exactly one at a time. Useful for mutually-exclusive choices like 2D vs 3D tools.

Simple form β€” template IDs only, inherits base_item for the display:

Rich form | each entry can carry its own item, merged on top of base_item:

On click, the currently-enabled entry is disabled and the next one in the list is enabled (wrapping around). All other entries in the cycle are set to false.


Item definition

Items in base_item, enabled_item, disabled_item, and cycling entries support three formats:

Nexo item | references an existing Nexo item by ID:

Item model | An ItemModelBuilder, refer to ItemModel Builder for details. Can be used to create simple custom items without needing to set up a full Nexo item.

Inline item | a standard Nexo ItemParser section (material, display_name, lore, etc.):


Commands

MultiPack commands are under /nexo multipack and require the nexo.command.multipack permission.

Open GUI

Opens the interactive template selection menu. If no menu: section is configured in multipack.yml, a warning is shown instead.

  • Permission: nexo.command.multipack.menu

  • Permission for targeting others: nexo.command.multipack.menu.other

List templates

Shows all configured templates and their current state (enabled/disabled) for the executing player. Required and default templates are labeled.

Toggle a template

Toggles the given template on or off for the player (or targeted players). Re-applies packs immediately after toggling. Required templates cannot be toggled.

  • Permission: nexo.command.multipack.toggle

  • Permission for targeting others: nexo.command.multipack.toggle.others

Debug

Prints detailed debug info: loaded templates, raw PDC selections, resolved enabled set, and per-template state flags.

  • Permission: nexo.command.multipack.debug

  • Permission for targeting others: nexo.command.multipack.debug.others


Examples

Toggling on/off a larger Music/SoundFX Pack | 2D/3D Tools

A common use case is offering players a choice to enable an addon for custom music, or swapping between 2D & 3D Tools

multipack.yml:

Players can switch between them in-game:

Enabling 3d_tools automatically disables 2d_tools due to the conflict, and packs are re-sent immediately.


Full GUI example

A 3-row menu with a music toggle and a 2D/3D cycling slot:

Last updated