Preset Authoring
Shine presets are validated JSON documents containing metadata and one or more supported configuration sections.
Distribution Formats
| Format | Location |
|---|---|
| Local JSON | config/shine_presets/<name>.json |
| Imported package | JSON or Shine-exported zip selected in the Presets page |
| Resource preset | assets/<namespace>/shine/presets/<id>.json |
| Preset Pack | assets/<namespace>/shine/preset_packs/<id>.json |
Resource presets and Preset Packs can be distributed as standard Minecraft resource packs.
JSON Shapes
A direct shine-preset-v2 file places config sections such as bloom, coloredLight, and effects at the root. A shine-preset-pack-v1 manifest keeps pack metadata at the root and places those config sections under preset.
The example below is a direct preset. See Preset Packs for the manifest shape.
Metadata
Supported metadata includes:
schema,name,author,description, andversionas strings.imagesorpreviewImagesas arrays of strings.changesandtagsas arrays of strings.autoApplyas a boolean for resource-pack entries.
Config Sections
| Section | Purpose |
|---|---|
bloom | Bloom settings and source strengths. |
bloomMasks | Pixel-level bloom masks. |
rimLight | Entity, hand, terrain, and cloud rim light. |
shading | Vanilla directional-shading controls. |
coloredLight | Colored and dynamic light settings. |
effects | Domain-based settings for Shine's other visual and sound systems. |
The effects object is divided into eight domains:
| Domain | Contents |
|---|---|
core | Overall effects state. |
world | World and environment effects. |
lighting | Lighting effects. |
particles | Particles and ambient life. |
interaction | Reactive world details. |
weather | Rain, snow, and storms. |
camera | Camera and post-processing effects. |
sound | Sound effects and ambience. |
Minimal preset:
{
"schema": "shine-preset-v2",
"name": "Warm Lantern Bloom",
"author": "ExampleAuthor",
"changes": ["Bloom"],
"bloom": {
"enabled": true,
"strength": 6.0
}
}A preset may omit sections, domains, and settings it does not change. Settings inside effects belong under their domain; for example, the custom-particle switch is effects.particles.customParticlesEnabled.
Layering
Shine deep-merges preset objects. User-facing stack order, exclusions, and automatic restoration are covered in Using Presets.
Users can exclude feature groups from a preset, so settings should remain under the feature they control.
Resource entries with autoApply: true are inserted automatically while their resource pack is enabled.
Validation
Shine checks:
- At least one supported config section exists.
- Config sections are JSON objects.
- Known keys match the JSON type in Shine's default config schema.
- Metadata fields use their expected string, boolean, or string-array type.
Map-like fields still allow creator-defined namespaced IDs for blocks, entities, biomes, textures, and masks.
Broken resource entries stay visible and identify the resource, section, or key that failed when possible. One broken entry does not prevent other entries from loading.
Preview Images
For resource-pack entries, image paths are relative to the preset JSON and must remain under the matching shine/presets/ or shine/preset_packs/ root.
{
"images": [
"soft_lantern_nights/preview_1.png",
"soft_lantern_nights/preview_2.png"
]
}When no usable preview image is available, the Presets screen displays the Shine logo.
Preset Pack Metadata
tags create Presets-page filters. changes is displayed as the list of modified areas. If it is omitted, Shine derives labels from the preset config and any effects or slots fields in a Preset Pack manifest.
Preset Packs are data only. They cannot run scripts or Java code.
See Preset Packs for the resource-pack layout.