Configuration
AstralScrolls reads its configuration through AstralCore's Configurate-backed configuration manager: config.yml (item templates + rarities), a blueprints/ folder of scroll definitions, and messages.yml. Everything is reloaded together with /scrolls reload — see Commands.
Installation
Drop
AstralScrolls-<version>.jarintoplugins/.Install its hard dependency, declared in
plugin.ymlunderdepend— the server refuses to start AstralScrolls without it:Dependency
Why
AstralCore
Configuration/action framework, placeholders, the
scrollsitem-supplier namespace, ACF command registration.Start the server once to generate
plugins/AstralScrolls/config.yml,messages.yml, and ablueprints/folder pre-seeded withexample.yml.
config.yml
Deserializes into MainConfiguration.
YAML key | Java field | Type | Description |
|---|---|---|---|
|
|
| Display template applied to an incomplete scroll's |
|
|
| Display template applied once a scroll's goal is met, replacing |
|
|
| Every rarity, keyed by its id (the map key, not a field inside the block). See |
|
|
| Actions run for every scroll of every rarity when it completes, in addition to |
ItemInfo (scroll-item/completed-item) has two sub-keys, both optional and both rendered against a placeholder container carrying only the completing/updating Scroll (%scroll_*% — see Placeholders):
Sub-key | Type | Description |
|---|---|---|
|
| Overrides the item's display name. Skipped if unset. |
|
| Overrides the item's lore, line by line. Skipped if unset or empty. |
rarities
Each entry deserializes through RarityTypeSerializer, which reads the map key as the rarity's own id and the rest of the block as an ItemStackWrapper (material, plus any other item-stack field) for the scroll's base appearance:
YAML key | Java field | Type | Description |
|---|---|---|---|
(map key) |
| String | The rarity's id — used by |
|
|
| The rarity's display name, exposed as |
|
|
| Primary accent color for the rarity, exposed as |
|
|
| Secondary accent color, exposed as |
(item-stack fields) |
|
| The base |
|
|
| The weighted reward pool rolled by |
Each rewards entry is a RewardGroup:
YAML key | Java field | Type | Description |
|---|---|---|---|
|
| double | Relative weight in a |
|
|
| Actions run when this group is drawn ( |
blueprints/ folder
One or more scroll definitions per file; the plugin ships a single example, blueprints/example.yml. The filename doesn't matter — each file deserializes to a ScrollsConfiguration (a blueprints: map of <free-form-id> → ScrollBlueprint), and every blueprint across every file is pooled together at runtime. See Blueprints & Goals for the full schema.
Loading happens through AstralCore's folder loader, on enable and on /scrolls reload:
messages.yml
See Messages for the full key list, including the goal-type-name labels used inside %scroll_type%.
Reloading
/scrolls reload calls AstralScrolls#loadConfiguration() — the same method run on enable — which reloads blueprints/ (ScrollService#load), then config.yml, then messages.yml, in that order. It does not re-register listeners or the scrolls item-supplier namespace, both of which are set up once in onEnable.