Content generated with AI — it may contain mistakes.

Getting started

Installation

Dependencies, the files it writes, and what config.yml controls.

Installing

Drop in the jars

ExyliaShields.jar, plus ExyliaLib and packetevents, into plugins/.

Start the server

It writes config.yml, shields.yml and four menu files, and creates three tables.

Grant slots and a palette

A player with no max_slots node has nowhere to save a design. See Commands and permissions.

Files

FileContents
config.ymlThe force system, editor defaults, and the import prompt.
shields.ymlmax_layers, the 41 patterns and the 16 colours.
menus/slots.ymlThe slot screen.
menus/design_editor.ymlThe editor.
menus/color_picker.ymlThe colour picker.
menus/community_browser.ymlThe shared library.
database.ymlWhere everything is stored. H2 by default.

Tables

TableHolds
player_shield_dataEach player's slots and which one is active.
shield_design_libraryDesigns registered for sharing, with an owner and a use count.
shield_design_usesWho has used which library design.

config.yml

force_system: true
 
ui:
  default_dye_color: "PURPLE"
  preview:
    enabled_material: "LIME_DYE"
    disabled_material: "GRAY_DYE"
    enabled_status: "{success}Enabled"
    disabled_status: "{error}Disabled"
 
prompt:
  prompt_text: "{info}Enter the design ID to import {muted}(or {error}cancel{muted} to go back):"
KeyDefaultWhat it does
force_systemtrueOnly players with exyliashields.use may have designs on their shields.
ui.default_dye_colorPURPLEThe colour selected when the editor opens.
ui.preview.*see aboveThe item and text of the preview toggle, on and off.
prompt.prompt_textsee aboveWhat a player is asked when importing a design without naming one.
force_system strips, it does not just block

With it on, a player without exyliashields.use has their shield design removed whenever they equip a shield. That is the point — it is how an expired rank stops showing a design it no longer owns — but it means the node has to be granted before anybody can keep one.

shields.yml

max_layers: 6
 
shield_patterns:
  stripe_bottom:
    name: "Base Stripe"
    item:
      material: WHITE_BANNER
      banner_patterns:
        base_color: WHITE
        patterns:
          - pattern: STRIPE_BOTTOM
            color: LIGHT_GRAY
 
shield_colors:
  white:
    name: "White"
    item: WHITE_BANNER

max_layers caps how deep a design may go. Each pattern names the vanilla pattern it applies and the banner it is drawn as in the menu; each colour names its display name and icon.

The keys are the permission ids: stripe_bottom is exyliashields.pattern.stripe_bottom.

Updating

Replace the jar and restart. /shields reload re-reads this plugin's own files.

Something missing on this page? Tell us on Discord