Use DaisyConfig with DaisySeries
Use DaisyConfig with DaisySeries
Section titled “Use DaisyConfig with DaisySeries”DaisyConfig and DaisySeries are meant to fit together.
Use DaisySeries-backed codecs for values like:
- materials
- sounds
- item flags
- enchantments
- potion effects
- biomes
- villager professions
- attributes
- entity types
- game modes
- difficulties
- block faces
- damage causes
- operations
- pattern types
- particles
- statistics
val profileUiCodec = objectCodec { ProfileUiConfig( icon = required("icon", materialCodec()), feedbackSound = required("feedback_sound", soundCodec()), flags = defaulted("flags", itemFlagsCodec(), emptySet()), enchantment = required("enchantment", enchantmentCodec()), effect = required("effect", potionEffectCodec()), biome = required("biome", biomeCodec()), profession = required("profession", villagerProfessionCodec()), attribute = required("attribute", attributeCodec()), entity = required("entity", entityTypeCodec()), gameMode = required("game_mode", gameModeCodec()), difficulty = required("difficulty", difficultyCodec()), facing = required("facing", blockFaceCodec()), damageCause = required("damage_cause", damageCauseCodec()), operation = required("operation", operationCodec()), pattern = required("pattern", patternTypeCodec()), particle = required("particle", particleCodec()), statistic = required("statistic", statisticCodec()), sidebarTitle = defaulted("sidebar_title", stringCodec(), "<gradient:#7dd3fc:#c4b5fd>Profile</gradient>"), ) }That same codec surface is valid in all three DaisyConfig layers:
- one-file unmanaged handles
- managed YAML files with
config_version - module settings bundles under
modules/<category>/<module>/settings.yml
Managed settings example
Section titled “Managed settings example”val storeSettings = DaisyManagedYamlFile( id = "guis/store/settings", path = "modules/guis/store/settings.yml", codec = storeModuleConfigCodec, currentVersion = 2, )If the managed file contains:
config_version: 2store: icon: emerald open_sound: block_ender_chest_openthen DaisyConfig is still decoding those values through DaisySeries-owned parser rules.
Ownership boundary
Section titled “Ownership boundary”DaisyConfig does not re-own parser logic.
It uses DaisySeries so:
- canonical keys stay stable
- aliases stay centralized
- managed migrations do not need plugin-local parser wrappers
When config values stop being primitive, DaisySeries remains the parser owner even inside the managed and module layers.