feat(UC-02): data-driven room themes — 6 JSON + consumer migration + cleanup

Phase 3: Extract 6 themes into JSON (oubliette, inferno, crypt, ice, sculk, sandstone)
Phase 4: Migrate HangingCagePiece to use RoomThemeRegistry.pickRandomOrFallback()
  - Move 7 shared static methods from RoomTheme into HangingCagePiece
  - Replace per-enum placeDecorations() with generic DecorationConfig-based placement
Phase 5: Delete RoomTheme.java (-1368L)
This commit is contained in:
NotEvil
2026-04-16 01:39:40 +02:00
parent 69f52eacf3
commit 3aaf92b788
8 changed files with 679 additions and 1423 deletions

View File

@@ -0,0 +1,58 @@
{
"weight": 10,
"wall_palette": {
"default": [
{ "block": "minecraft:ice", "weight": 0.10 },
{ "block": "minecraft:blue_ice", "weight": 0.20 },
{ "block": "minecraft:packed_ice", "weight": 0.70 }
]
},
"floor_palette": {
"default": [
{ "block": "minecraft:snow_block", "weight": 0.20 },
{ "block": "minecraft:packed_ice", "weight": 0.80 }
],
"edge": [
{ "block": "minecraft:blue_ice", "weight": 1.0 }
]
},
"ceiling_palette": {
"default": [
{ "block": "minecraft:blue_ice", "weight": 0.20 },
{ "block": "minecraft:packed_ice", "weight": 0.80 }
]
},
"wall_shell": "minecraft:packed_ice",
"wall_accent": "minecraft:blue_ice",
"pillar_palette": {
"default": [
{ "block": "minecraft:packed_ice", "weight": 0.50 },
{ "block": "minecraft:blue_ice", "weight": 0.50 }
],
"cap": [
{ "block": "minecraft:blue_ice", "weight": 1.0 }
]
},
"scatter_palette": {
"default": [
{ "block": "minecraft:snow[layers=1]", "weight": 0.50, "random_property": { "name": "layers", "min": 1, "max": 2 } },
{ "block": "minecraft:powder_snow", "weight": 0.20 },
{ "block": "minecraft:ice", "weight": 0.30 }
]
},
"decorations": {
"corner_decorations": [
{ "block": "minecraft:snow[layers=2]", "y_offset": 1 }
],
"wall_midpoint_blocks": [
{ "block": "minecraft:lantern", "y_offset": 3 }
],
"furniture_cluster": [
{ "block": "minecraft:powder_snow_cauldron[level=3]", "y_offset": 1 },
{ "block": "minecraft:blue_ice", "y_offset": 1 },
{ "block": "minecraft:lantern", "y_offset": 2 }
],
"use_torch_lighting": false,
"has_ceiling_chain": true
}
}