Skip to content

Shine Pack Authoring

A Shine Pack is a normal client resource pack with an opt-in Shine manifest. Its definitions add, replace, filter, or disable Shine bird species and interactive flower variants without Java code.

Birds and interactive flowers are the content types supported by this format. Presets, resource defaults, and the .shinepack archives used by Custom Particle Packs use separate formats.

Pack Layout

text
my-shine-pack/
|-- pack.mcmeta
`-- assets/example/
    |-- shine/
    |   |-- pack.json
    |   |-- birds/
    |   |   `-- cardinal.json
    |   `-- flowers/
    |       `-- bluebell.json
    `-- textures/particle/
        |-- birds/
        |   `-- cardinal_*.png
        `-- flowers/
            `-- bluebell.png

Manifest

assets/<namespace>/shine/pack.json opts the resource pack into Shine:

json
{
  "schema": "shine-pack-v1",
  "name": "Example Nature Pack",
  "description": "Cardinals and bluebells for Shine.",
  "author": "Example Author",
  "version": "1.0.0"
}

Only definitions from a resource pack with a valid manifest are loaded. Shine reads the pack during the normal Minecraft resource reload.

Definition IDs and Priority

The definition path becomes its namespaced ID:

text
assets/example/shine/birds/cardinal.json -> example:cardinal
assets/example/shine/flowers/bluebell.json -> example:bluebell

A new ID adds content. A matching ID replaces the lower-priority definition, and the highest enabled resource pack wins when multiple packs provide the same path. Setting enabled to false removes that ID.

Bird Species

Bird files belong under assets/<namespace>/shine/birds/ and use shine-bird-v1:

json
{
  "schema": "shine-bird-v1",
  "weight": 1.5,
  "sizeMultiplier": 1.0,
  "flightAnimation": "ping_pong",
  "hingedWingStyle": "none",
  "biomes": ["#minecraft:is_forest"],
  "excludeBiomes": ["minecraft:snowy_taiga"],
  "dimensions": ["minecraft:overworld"],
  "weather": "clear",
  "time": "day",
  "frames": {
    "idleLeft": "example:birds/cardinal_idle_left",
    "idleRight": "example:birds/cardinal_idle_right",
    "checkingLeft": "example:birds/cardinal_checking_left",
    "checkingRight": "example:birds/cardinal_checking_right",
    "flyingLeft": [
      "example:birds/cardinal_flying_left_1",
      "example:birds/cardinal_flying_left_2"
    ],
    "flyingRight": [
      "example:birds/cardinal_flying_right_1",
      "example:birds/cardinal_flying_right_2"
    ]
  }
}

Texture IDs are relative to assets/<namespace>/textures/particle/ and omit .png. All four static frame IDs and both flying-frame arrays are required. A flying array can contain 1 to 16 textures.

FieldValues
weightRelative selection weight from 0.01 to 100; defaults to 1.
sizeMultiplierScale from 0.1 to 4; defaults to 1.
flightAnimationloop or ping_pong; defaults to loop.
hingedWingStylenone, brown, or black; none uses the supplied billboard frames.

Interactive Flowers

Flower files belong under assets/<namespace>/shine/flowers/ and use shine-flower-v1:

json
{
  "schema": "shine-flower-v1",
  "texture": "example:flowers/bluebell",
  "weight": 2.0,
  "sizeMultiplier": 0.9,
  "tint": "#A9C8FF",
  "biomes": ["minecraft:meadow", "#minecraft:is_forest"],
  "excludeBiomes": ["minecraft:dark_forest"],
  "dimensions": ["minecraft:overworld"],
  "blocks": ["minecraft:grass_block", "#minecraft:dirt"],
  "excludeBlocks": ["minecraft:coarse_dirt"],
  "weather": "any",
  "time": "any"
}

texture uses the same textures/particle/ path rules as bird frames. weight and sizeMultiplier use the bird ranges, and tint accepts #RRGGBB or a color integer. When blocks is omitted, the flower uses minecraft:grass_block.

Shared Filters

FieldAccepted Values
enabledtrue or false
biomes, excludeBiomesBiome IDs and #biome_tag entries
dimensions, excludeDimensionsDimension IDs
weatherany, clear, rain, or thunder
timeany, day, or night
blocks, excludeBlocksFlower-only block IDs and #block_tag entries

Omitted or empty biome and dimension lists do not restrict those environments. Exclusion fields are applied after inclusion fields.

Built-In Definitions

Shine loads its built-in definitions before resource-pack content:

text
assets/shine/shine/birds/brown_bird.json
assets/shine/shine/birds/black_bird.json
assets/shine/shine/flowers/flower_00.json ... flower_07.json

Provide one of these matching paths to replace it. To disable it, the matching file only needs its schema and enabled: false:

json
{
  "schema": "shine-bird-v1",
  "enabled": false
}

Diagnostics

Shine > Custom > Shine Packs lists detected packs, contributed definition counts, and load errors. A malformed definition or missing texture disables only the affected bird or flower; other valid definitions continue loading.

Shine also limits pack counts, definition counts, flight frames, texture dimensions, and atlas size to keep resource reloads bounded.