Skip to content

Preset Authoring

Shine presets are validated JSON documents containing metadata and one or more supported configuration sections.

Distribution Formats

FormatLocation
Local JSONconfig/shine_presets/<name>.json
Imported packageJSON or Shine-exported zip selected in the Presets page
Resource presetassets/<namespace>/shine/presets/<id>.json
Preset Packassets/<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, and version as strings.
  • images or previewImages as arrays of strings.
  • changes and tags as arrays of strings.
  • autoApply as a boolean for resource-pack entries.

Config Sections

SectionPurpose
bloomBloom settings and source strengths.
bloomMasksPixel-level bloom masks.
rimLightEntity, hand, terrain, and cloud rim light.
shadingVanilla directional-shading controls.
coloredLightColored and dynamic light settings.
effectsDomain-based settings for Shine's other visual and sound systems.

The effects object is divided into eight domains:

DomainContents
coreOverall effects state.
worldWorld and environment effects.
lightingLighting effects.
particlesParticles and ambient life.
interactionReactive world details.
weatherRain, snow, and storms.
cameraCamera and post-processing effects.
soundSound effects and ambience.

Minimal preset:

json
{
  "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.

json
{
  "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.