Initial sanctuary sources

This commit is contained in:
cnstiout
2026-07-04 20:27:08 +02:00
commit c796a20321
1582 changed files with 253264 additions and 0 deletions
@@ -0,0 +1,25 @@
# Canaplia 2.0 Foundations
This document tracks the architectural groundwork introduced in `2.0.0`.
## Goals
- Prepare variant-specific smoke effects without changing item ids later.
- Prepare resin evolution from shared-behavior resin blocks toward future unique resin variants.
- Keep current gameplay behavior stable until the next prompts add new content.
## What changed
- `RolledJointItem` is now aware of its `HempVariant`.
- `CanapliaSmokeEffects` now resolves profiles from `SmokeSource + HempVariant`.
- `HempBudCompostingState` now remembers which hemp variant was inserted into each tracked composter.
- `HempBudComposterInteraction` now accepts any hemp bud variant and blocks mixed-variant composting in a single composter.
- `CanapliaResinCatalog` now maps each bud variant to its matching resin block and burn duration.
## Current shared behavior
- All hemp variants still use the same smoke effect set for now.
- All resin block variants still use the same smoke behavior for now.
- All resin block variants still use the same burn duration for now.
## Next prompt entry points
- Add unique smoke profiles in `CanapliaSmokeEffects#createVariantAwareProfile`.
- Add unique burn durations in `CanapliaResinCatalog#resolve`.
- Add unique resin-side effects if they need to diverge from the hemp source variant.
@@ -0,0 +1,18 @@
source_block,source_family,biome_focus,possible_variants,base_seed_drop_chance,extra_conditions,codex_notes
minecraft:short_grass,surface_flora,plains; forest; meadow; cherry_grove,common; tender; olive,0.06,Starter source buffed for survival playability,Main survival starter source
minecraft:tall_grass,surface_flora,plains; meadow; savanna; flower_forest,common; tender; olive,0.1,Higher chance than short grass,Best early-game exploration source
minecraft:short_dry_grass,dry_surface_flora,savanna; desert; badlands,olive,0.06,Fabric 1.21.11 dry-grass starter source,Primary dry-biome starter source
minecraft:tall_dry_grass,dry_surface_flora,savanna; desert; badlands,olive,0.1,Higher chance than short dry grass,Best early-game dry starter source
minecraft:fern,cold_or_shaded_flora,taiga; dark_forest; snowy_taiga; grove,dark; ashen,0.07,Pick by biome temperature / canopy,Useful for cold and shade strains
minecraft:large_fern,cold_or_shaded_flora,snowy_taiga; grove; old_growth_taiga,ashen; dark,0.1,Slightly better than normal fern,Good for cold-biome hunting
minecraft:dead_bush,dry_flora,badlands; eroded_badlands; wooded_badlands; desert,amber; olive,0.1,Amber should dominate in badlands,Avoid dirt-breaking loot; keep it botanical
minecraft:moss_carpet,humid_flora,lush_caves,moss,0.07,Humidity source,Pairs well with cave exploration
minecraft:hanging_roots,humid_flora,lush_caves; mangrove_swamp,moss,0.1,Humidity source,Good spelunker / wet-biome source
minecraft:cave_vines,humid_flora,lush_caves,moss,0.06,Humidity source,Optional extra source if desired
minecraft:crimson_roots,nether_native,crimson_forest; nether_wastes,ember,0.02,Nether only,Forced ember result
minecraft:warped_roots,nether_native,warped_forest; basalt_deltas,ember,0.02,Nether only,Forced ember result
minecraft:nether_sprouts,nether_native,soul_sand_valley; basalt_deltas,ember,0.015,Nether only,Forced ember result
minecraft:weeping_vines,nether_native,crimson_forest,ember,0.01,Nether only,Forced ember result
minecraft:twisting_vines,nether_native,warped_forest; soul_sand_valley,ember,0.01,Nether only,Forced ember result
minecraft:chorus_plant,end_native,end_highlands; end_midlands; small_end_islands; end_barrens,indigo,0.015,End only,Forced indigo result
minecraft:chorus_flower,end_native,end_highlands; end_midlands; small_end_islands; end_barrens,indigo,0.02,End only,Forced indigo result
1 source_block source_family biome_focus possible_variants base_seed_drop_chance extra_conditions codex_notes
2 minecraft:short_grass surface_flora plains; forest; meadow; cherry_grove common; tender; olive 0.06 Starter source buffed for survival playability Main survival starter source
3 minecraft:tall_grass surface_flora plains; meadow; savanna; flower_forest common; tender; olive 0.1 Higher chance than short grass Best early-game exploration source
4 minecraft:short_dry_grass dry_surface_flora savanna; desert; badlands olive 0.06 Fabric 1.21.11 dry-grass starter source Primary dry-biome starter source
5 minecraft:tall_dry_grass dry_surface_flora savanna; desert; badlands olive 0.1 Higher chance than short dry grass Best early-game dry starter source
6 minecraft:fern cold_or_shaded_flora taiga; dark_forest; snowy_taiga; grove dark; ashen 0.07 Pick by biome temperature / canopy Useful for cold and shade strains
7 minecraft:large_fern cold_or_shaded_flora snowy_taiga; grove; old_growth_taiga ashen; dark 0.1 Slightly better than normal fern Good for cold-biome hunting
8 minecraft:dead_bush dry_flora badlands; eroded_badlands; wooded_badlands; desert amber; olive 0.1 Amber should dominate in badlands Avoid dirt-breaking loot; keep it botanical
9 minecraft:moss_carpet humid_flora lush_caves moss 0.07 Humidity source Pairs well with cave exploration
10 minecraft:hanging_roots humid_flora lush_caves; mangrove_swamp moss 0.1 Humidity source Good spelunker / wet-biome source
11 minecraft:cave_vines humid_flora lush_caves moss 0.06 Humidity source Optional extra source if desired
12 minecraft:crimson_roots nether_native crimson_forest; nether_wastes ember 0.02 Nether only Forced ember result
13 minecraft:warped_roots nether_native warped_forest; basalt_deltas ember 0.02 Nether only Forced ember result
14 minecraft:nether_sprouts nether_native soul_sand_valley; basalt_deltas ember 0.015 Nether only Forced ember result
15 minecraft:weeping_vines nether_native crimson_forest ember 0.01 Nether only Forced ember result
16 minecraft:twisting_vines nether_native warped_forest; soul_sand_valley ember 0.01 Nether only Forced ember result
17 minecraft:chorus_plant end_native end_highlands; end_midlands; small_end_islands; end_barrens indigo 0.015 End only Forced indigo result
18 minecraft:chorus_flower end_native end_highlands; end_midlands; small_end_islands; end_barrens indigo 0.02 End only Forced indigo result
@@ -0,0 +1,7 @@
result_variant,parent_a,parent_b,rule_type,environment_requirement,harvest_requirement,result_seed_chance,codex_notes
gold,tender,olive,hybrid,warm biome; sky visible; daytime,Both parents mature and adjacent (radius 1),0.12,Bright dry hybrid
purple,dark,moss,hybrid,humid area; low light,Both parents mature and adjacent (radius 1),0.08,Shadow-humidity hybrid
pink,tender,purple,hybrid,flower biome or greenhouse; dawn or dusk,Both parents mature and adjacent (radius 1),0.1,Floral color hybrid
coral,amber,moss,hybrid,warm biome; farmland touching water,Both parents mature and adjacent (radius 1),0.1,Warm coastal hybrid
bluish,ashen,tender,hybrid,cold biome or snow/ice nearby,Both parents mature and adjacent (radius 1),0.09,Cold color hybrid
varieg,any,different_any,mutation,humid biome; especially lush_caves,Two distinct mature variants adjacent (radius 1),0.06,Collector mutation
1 result_variant parent_a parent_b rule_type environment_requirement harvest_requirement result_seed_chance codex_notes
2 gold tender olive hybrid warm biome; sky visible; daytime Both parents mature and adjacent (radius 1) 0.12 Bright dry hybrid
3 purple dark moss hybrid humid area; low light Both parents mature and adjacent (radius 1) 0.08 Shadow-humidity hybrid
4 pink tender purple hybrid flower biome or greenhouse; dawn or dusk Both parents mature and adjacent (radius 1) 0.1 Floral color hybrid
5 coral amber moss hybrid warm biome; farmland touching water Both parents mature and adjacent (radius 1) 0.1 Warm coastal hybrid
6 bluish ashen tender hybrid cold biome or snow/ice nearby Both parents mature and adjacent (radius 1) 0.09 Cold color hybrid
7 varieg any different_any mutation humid biome; especially lush_caves Two distinct mature variants adjacent (radius 1) 0.06 Collector mutation
@@ -0,0 +1,4 @@
variant_key,rule_type,source,condition,result_chance,codex_notes
lunar,special_harvest,ashen or bluish,Harvest mature parent at night with sky visible in a cold biome,0.06,Night-only special roll; no full moon requirement
ember,dimension_lock,nether_native_plants,Break eligible Nether flora in any Nether biome,1.0,Forced result in Nether source table; never obtainable elsewhere
indigo,dimension_lock,chorus_plant or chorus_flower,Break eligible End flora in any End biome,1.0,Forced result in End source table; never obtainable elsewhere
1 variant_key rule_type source condition result_chance codex_notes
2 lunar special_harvest ashen or bluish Harvest mature parent at night with sky visible in a cold biome 0.06 Night-only special roll; no full moon requirement
3 ember dimension_lock nether_native_plants Break eligible Nether flora in any Nether biome 1.0 Forced result in Nether source table; never obtainable elsewhere
4 indigo dimension_lock chorus_plant or chorus_flower Break eligible End flora in any End biome 1.0 Forced result in End source table; never obtainable elsewhere
@@ -0,0 +1,496 @@
{
"variants_catalog": [
{
"variant_key": "common",
"variant_name_fr": "Chanvre commun",
"family": "wild_base",
"obtainable_in_survival": "yes",
"first_obtention": "Discover seeds by breaking short grass or tall grass",
"source_blocks_or_plants": "minecraft:short_grass; minecraft:tall_grass",
"biome_focus": "plains; forest; riverbanks",
"breeding_recipe": "",
"special_conditions": "No special condition",
"dimension_lock": "",
"codex_notes": "Main starter line. Use as fallback green strain."
},
{
"variant_key": "tender",
"variant_name_fr": "Chanvre tendre",
"family": "wild_base",
"obtainable_in_survival": "yes",
"first_obtention": "Discover seeds by breaking short grass or tall grass",
"source_blocks_or_plants": "minecraft:short_grass; minecraft:tall_grass",
"biome_focus": "meadow; flower_forest; cherry_grove",
"breeding_recipe": "",
"special_conditions": "Best as a bright / floral base strain",
"dimension_lock": "",
"codex_notes": "Soft green line used in several hybrid recipes."
},
{
"variant_key": "olive",
"variant_name_fr": "Chanvre olive",
"family": "wild_base",
"obtainable_in_survival": "yes",
"first_obtention": "Discover seeds by breaking grass or dry grass in warm biomes",
"source_blocks_or_plants": "minecraft:tall_grass; minecraft:short_grass; minecraft:tall_dry_grass; minecraft:short_dry_grass",
"biome_focus": "savanna; windswept_savanna; desert_edge",
"breeding_recipe": "",
"special_conditions": "Warm / dry overworld discovery line",
"dimension_lock": "",
"codex_notes": "Dry-climate green line."
},
{
"variant_key": "dark",
"variant_name_fr": "Chanvre sombre",
"family": "wild_base",
"obtainable_in_survival": "yes",
"first_obtention": "Discover seeds by breaking ferns or shaded grass",
"source_blocks_or_plants": "minecraft:fern; minecraft:short_grass",
"biome_focus": "dark_forest; old_growth_taiga; pale_garden",
"breeding_recipe": "",
"special_conditions": "Better in low light / canopy-heavy biomes",
"dimension_lock": "",
"codex_notes": "Shade line; key parent for purple."
},
{
"variant_key": "ashen",
"variant_name_fr": "Chanvre cendré",
"family": "wild_base",
"obtainable_in_survival": "yes",
"first_obtention": "Discover seeds by breaking ferns in cold biomes",
"source_blocks_or_plants": "minecraft:fern; minecraft:large_fern",
"biome_focus": "snowy_taiga; grove; snowy_plains",
"breeding_recipe": "",
"special_conditions": "Cold-climate base line",
"dimension_lock": "",
"codex_notes": "Cold green line; key parent for bluish and lunar."
},
{
"variant_key": "moss",
"variant_name_fr": "Chanvre mousse",
"family": "wild_base",
"obtainable_in_survival": "yes",
"first_obtention": "Discover seeds from humid cave / swamp flora",
"source_blocks_or_plants": "minecraft:moss_carpet; minecraft:hanging_roots; minecraft:cave_vines",
"biome_focus": "lush_caves; swamp; mangrove_swamp",
"breeding_recipe": "",
"special_conditions": "Humidity-heavy discovery line",
"dimension_lock": "",
"codex_notes": "Humid green line; key parent for purple, coral, varieg."
},
{
"variant_key": "amber",
"variant_name_fr": "Chanvre ambré",
"family": "wild_rare",
"obtainable_in_survival": "yes",
"first_obtention": "Rare seed from dead bushes",
"source_blocks_or_plants": "minecraft:dead_bush",
"biome_focus": "badlands; eroded_badlands; wooded_badlands",
"breeding_recipe": "",
"special_conditions": "Rare wild discovery in hot mineral biomes",
"dimension_lock": "",
"codex_notes": "Dry rare line; parent for coral."
},
{
"variant_key": "gold",
"variant_name_fr": "Chanvre doré",
"family": "hybrid",
"obtainable_in_survival": "yes",
"first_obtention": "Obtain as hybrid seed",
"source_blocks_or_plants": "",
"biome_focus": "warm_biomes; bright_surface_fields",
"breeding_recipe": "tender + olive",
"special_conditions": "Mature parents adjacent (radius 1); harvest by day with sky visible",
"dimension_lock": "",
"codex_notes": "Colorful hybrid from bright and dry green parents."
},
{
"variant_key": "pink",
"variant_name_fr": "Chanvre rosé",
"family": "hybrid",
"obtainable_in_survival": "yes",
"first_obtention": "Obtain as hybrid seed",
"source_blocks_or_plants": "",
"biome_focus": "flower_forest; meadow; cherry_grove",
"breeding_recipe": "tender + purple",
"special_conditions": "Mature parents adjacent (radius 1); harvest at dawn or dusk",
"dimension_lock": "",
"codex_notes": "Stylized floral hybrid."
},
{
"variant_key": "coral",
"variant_name_fr": "Chanvre corail",
"family": "hybrid",
"obtainable_in_survival": "yes",
"first_obtention": "Obtain as hybrid seed",
"source_blocks_or_plants": "",
"biome_focus": "mangrove_edge; beach; warm_coast",
"breeding_recipe": "amber + moss",
"special_conditions": "Mature parents adjacent (radius 1); at least 1 water block touching farmland",
"dimension_lock": "",
"codex_notes": "Warm wet hybrid."
},
{
"variant_key": "purple",
"variant_name_fr": "Chanvre pourpre",
"family": "hybrid",
"obtainable_in_survival": "yes",
"first_obtention": "Obtain as hybrid seed",
"source_blocks_or_plants": "",
"biome_focus": "humid_shaded_fields; swamp; dark_forest",
"breeding_recipe": "dark + moss",
"special_conditions": "Mature parents adjacent (radius 1); low light and humidity",
"dimension_lock": "",
"codex_notes": "Shadow-humidity hybrid."
},
{
"variant_key": "varieg",
"variant_name_fr": "Chanvre panaché",
"family": "hybrid",
"obtainable_in_survival": "yes",
"first_obtention": "Obtain as mutation seed",
"source_blocks_or_plants": "",
"biome_focus": "lush_caves; jungle; swamp_greenhouse",
"breeding_recipe": "any_two_distinct_variants",
"special_conditions": "Two distinct mature parents adjacent (radius 1); humid biome",
"dimension_lock": "",
"codex_notes": "Mutation-style collector variant."
},
{
"variant_key": "bluish",
"variant_name_fr": "Chanvre bleuté",
"family": "hybrid",
"obtainable_in_survival": "yes",
"first_obtention": "Obtain as hybrid seed",
"source_blocks_or_plants": "",
"biome_focus": "cold_fields; grove; ice_edge",
"breeding_recipe": "ashen + tender",
"special_conditions": "Mature parents adjacent (radius 1); cold biome or snow/ice nearby",
"dimension_lock": "",
"codex_notes": "Cold hybrid, moved out of wild discovery to keep survival logic coherent."
},
{
"variant_key": "lunar",
"variant_name_fr": "Chanvre lunaire",
"family": "circumstantial",
"obtainable_in_survival": "yes",
"first_obtention": "Special night harvest",
"source_blocks_or_plants": "",
"biome_focus": "cold_open_sky_biomes",
"breeding_recipe": "ashen or bluish -> lunar seed roll",
"special_conditions": "Harvest mature ashen or bluish plant at night, with sky visible, in a cold biome",
"dimension_lock": "",
"codex_notes": "Not found directly; obtained through timed harvest."
},
{
"variant_key": "ember",
"variant_name_fr": "Chanvre braise",
"family": "dimensional",
"obtainable_in_survival": "yes",
"first_obtention": "Break native Nether flora",
"source_blocks_or_plants": "minecraft:crimson_roots; minecraft:warped_roots; minecraft:nether_sprouts; minecraft:weeping_vines; minecraft:twisting_vines",
"biome_focus": "all_nether_biomes",
"breeding_recipe": "",
"special_conditions": "Nether-only. Never drops outside the Nether.",
"dimension_lock": "nether",
"codex_notes": "Dimension identity strain."
},
{
"variant_key": "indigo",
"variant_name_fr": "Chanvre indigo",
"family": "dimensional",
"obtainable_in_survival": "yes",
"first_obtention": "Break chorus plants or chorus flowers",
"source_blocks_or_plants": "minecraft:chorus_plant; minecraft:chorus_flower",
"biome_focus": "all_end_biomes",
"breeding_recipe": "",
"special_conditions": "End-only. Never drops outside the End.",
"dimension_lock": "end",
"codex_notes": "Dimension identity strain."
}
],
"discovery_sources": [
{
"source_block": "minecraft:short_grass",
"source_family": "surface_flora",
"biome_focus": "plains; forest; meadow; cherry_grove",
"possible_variants": [
"common",
"tender",
"olive"
],
"base_seed_drop_chance": 0.06,
"extra_conditions": "Starter source buffed for survival playability",
"codex_notes": "Main survival starter source"
},
{
"source_block": "minecraft:tall_grass",
"source_family": "surface_flora",
"biome_focus": "plains; meadow; savanna; flower_forest",
"possible_variants": [
"common",
"tender",
"olive"
],
"base_seed_drop_chance": 0.1,
"extra_conditions": "Higher chance than short grass",
"codex_notes": "Best early-game exploration source"
},
{
"source_block": "minecraft:short_dry_grass",
"source_family": "dry_surface_flora",
"biome_focus": "savanna; desert; badlands",
"possible_variants": [
"olive"
],
"base_seed_drop_chance": 0.06,
"extra_conditions": "Fabric 1.21.11 dry-grass starter source",
"codex_notes": "Primary dry-biome starter source"
},
{
"source_block": "minecraft:tall_dry_grass",
"source_family": "dry_surface_flora",
"biome_focus": "savanna; desert; badlands",
"possible_variants": [
"olive"
],
"base_seed_drop_chance": 0.1,
"extra_conditions": "Higher chance than short dry grass",
"codex_notes": "Best early-game dry starter source"
},
{
"source_block": "minecraft:fern",
"source_family": "cold_or_shaded_flora",
"biome_focus": "taiga; dark_forest; snowy_taiga; grove",
"possible_variants": [
"dark",
"ashen"
],
"base_seed_drop_chance": 0.07,
"extra_conditions": "Pick by biome temperature / canopy",
"codex_notes": "Useful for cold and shade strains"
},
{
"source_block": "minecraft:large_fern",
"source_family": "cold_or_shaded_flora",
"biome_focus": "snowy_taiga; grove; old_growth_taiga",
"possible_variants": [
"ashen",
"dark"
],
"base_seed_drop_chance": 0.1,
"extra_conditions": "Slightly better than normal fern",
"codex_notes": "Good for cold-biome hunting"
},
{
"source_block": "minecraft:dead_bush",
"source_family": "dry_flora",
"biome_focus": "badlands; eroded_badlands; wooded_badlands; desert",
"possible_variants": [
"amber",
"olive"
],
"base_seed_drop_chance": 0.1,
"extra_conditions": "Amber should dominate in badlands",
"codex_notes": "Avoid dirt-breaking loot; keep it botanical"
},
{
"source_block": "minecraft:moss_carpet",
"source_family": "humid_flora",
"biome_focus": "lush_caves",
"possible_variants": [
"moss"
],
"base_seed_drop_chance": 0.07,
"extra_conditions": "Humidity source",
"codex_notes": "Pairs well with cave exploration"
},
{
"source_block": "minecraft:hanging_roots",
"source_family": "humid_flora",
"biome_focus": "lush_caves; mangrove_swamp",
"possible_variants": [
"moss"
],
"base_seed_drop_chance": 0.1,
"extra_conditions": "Humidity source",
"codex_notes": "Good spelunker / wet-biome source"
},
{
"source_block": "minecraft:cave_vines",
"source_family": "humid_flora",
"biome_focus": "lush_caves",
"possible_variants": [
"moss"
],
"base_seed_drop_chance": 0.06,
"extra_conditions": "Humidity source",
"codex_notes": "Optional extra source if desired"
},
{
"source_block": "minecraft:crimson_roots",
"source_family": "nether_native",
"biome_focus": "crimson_forest; nether_wastes",
"possible_variants": [
"ember"
],
"base_seed_drop_chance": 0.02,
"extra_conditions": "Nether only",
"codex_notes": "Forced ember result"
},
{
"source_block": "minecraft:warped_roots",
"source_family": "nether_native",
"biome_focus": "warped_forest; basalt_deltas",
"possible_variants": [
"ember"
],
"base_seed_drop_chance": 0.02,
"extra_conditions": "Nether only",
"codex_notes": "Forced ember result"
},
{
"source_block": "minecraft:nether_sprouts",
"source_family": "nether_native",
"biome_focus": "soul_sand_valley; basalt_deltas",
"possible_variants": [
"ember"
],
"base_seed_drop_chance": 0.015,
"extra_conditions": "Nether only",
"codex_notes": "Forced ember result"
},
{
"source_block": "minecraft:weeping_vines",
"source_family": "nether_native",
"biome_focus": "crimson_forest",
"possible_variants": [
"ember"
],
"base_seed_drop_chance": 0.01,
"extra_conditions": "Nether only",
"codex_notes": "Forced ember result"
},
{
"source_block": "minecraft:twisting_vines",
"source_family": "nether_native",
"biome_focus": "warped_forest; soul_sand_valley",
"possible_variants": [
"ember"
],
"base_seed_drop_chance": 0.01,
"extra_conditions": "Nether only",
"codex_notes": "Forced ember result"
},
{
"source_block": "minecraft:chorus_plant",
"source_family": "end_native",
"biome_focus": "end_highlands; end_midlands; small_end_islands; end_barrens",
"possible_variants": [
"indigo"
],
"base_seed_drop_chance": 0.015,
"extra_conditions": "End only",
"codex_notes": "Forced indigo result"
},
{
"source_block": "minecraft:chorus_flower",
"source_family": "end_native",
"biome_focus": "end_highlands; end_midlands; small_end_islands; end_barrens",
"possible_variants": [
"indigo"
],
"base_seed_drop_chance": 0.02,
"extra_conditions": "End only",
"codex_notes": "Forced indigo result"
}
],
"hybrid_rules": [
{
"result_variant": "gold",
"parent_a": "tender",
"parent_b": "olive",
"rule_type": "hybrid",
"environment_requirement": "warm biome; sky visible; daytime",
"harvest_requirement": "Both parents mature and adjacent (radius 1)",
"result_seed_chance": 0.12,
"codex_notes": "Bright dry hybrid"
},
{
"result_variant": "purple",
"parent_a": "dark",
"parent_b": "moss",
"rule_type": "hybrid",
"environment_requirement": "humid area; low light",
"harvest_requirement": "Both parents mature and adjacent (radius 1)",
"result_seed_chance": 0.08,
"codex_notes": "Shadow-humidity hybrid"
},
{
"result_variant": "pink",
"parent_a": "tender",
"parent_b": "purple",
"rule_type": "hybrid",
"environment_requirement": "flower biome or greenhouse; dawn or dusk",
"harvest_requirement": "Both parents mature and adjacent (radius 1)",
"result_seed_chance": 0.1,
"codex_notes": "Floral color hybrid"
},
{
"result_variant": "coral",
"parent_a": "amber",
"parent_b": "moss",
"rule_type": "hybrid",
"environment_requirement": "warm biome; farmland touching water",
"harvest_requirement": "Both parents mature and adjacent (radius 1)",
"result_seed_chance": 0.1,
"codex_notes": "Warm coastal hybrid"
},
{
"result_variant": "bluish",
"parent_a": "ashen",
"parent_b": "tender",
"rule_type": "hybrid",
"environment_requirement": "cold biome or snow/ice nearby",
"harvest_requirement": "Both parents mature and adjacent (radius 1)",
"result_seed_chance": 0.09,
"codex_notes": "Cold color hybrid"
},
{
"result_variant": "varieg",
"parent_a": "any",
"parent_b": "different_any",
"rule_type": "mutation",
"environment_requirement": "humid biome; especially lush_caves",
"harvest_requirement": "Two distinct mature variants adjacent (radius 1)",
"result_seed_chance": 0.06,
"codex_notes": "Collector mutation"
}
],
"special_rules": [
{
"variant_key": "lunar",
"rule_type": "special_harvest",
"source": "ashen or bluish",
"condition": "Harvest mature parent at night with sky visible in a cold biome",
"result_chance": 0.06,
"codex_notes": "Night-only special roll; no full moon requirement"
},
{
"variant_key": "ember",
"rule_type": "dimension_lock",
"source": "nether_native_plants",
"condition": "Break eligible Nether flora in any Nether biome",
"result_chance": 1.0,
"codex_notes": "Forced result in Nether source table; never obtainable elsewhere"
},
{
"variant_key": "indigo",
"rule_type": "dimension_lock",
"source": "chorus_plant or chorus_flower",
"condition": "Break eligible End flora in any End biome",
"result_chance": 1.0,
"codex_notes": "Forced result in End source table; never obtainable elsewhere"
}
]
}
@@ -0,0 +1,29 @@
# Canaplia survival obtainment tables for Codex
These files describe how already-implemented hemp crops can be obtained in survival.
## Design summary
- The crop blocks and item variants already exist in the mod.
- The missing part is the survival obtainment loop.
- Wild green variants are discovered from biome flora.
- Colorful variants mostly come from breeding / mutation.
- `lunar` is a timed special harvest.
- `ember` is Nether-only.
- `indigo` is End-only.
## Files
- `canaplia_codex_variants_catalog.csv`: one row per variant
- `canaplia_codex_discovery_sources.csv`: world blocks / plants that can drop seeds
- `canaplia_codex_hybrid_rules.csv`: breeding and mutation outputs
- `canaplia_codex_special_rules.csv`: night / Nether / End rules
- `canaplia_codex_survival_obtainment.xlsx`: workbook version of the same data
## Intended Codex usage
Use these files as the survival design source-of-truth for:
- loot/drop tables for biome flora
- breeding logic between mature adjacent crops
- special timed harvest rules
- dimension-exclusive obtainment rules
## Internal key alignment
- Runtime enum keys must match the mod item/block ids: use `pink` instead of `rosy`, and `varieg` instead of `variegated`.
@@ -0,0 +1,17 @@
variant_key,variant_name_fr,family,obtainable_in_survival,first_obtention,source_blocks_or_plants,biome_focus,breeding_recipe,special_conditions,dimension_lock,codex_notes
common,Chanvre commun,wild_base,yes,Discover seeds by breaking short grass or tall grass,minecraft:short_grass; minecraft:tall_grass,plains; forest; riverbanks,,No special condition,,Main starter line. Use as fallback green strain.
tender,Chanvre tendre,wild_base,yes,Discover seeds by breaking short grass or tall grass,minecraft:short_grass; minecraft:tall_grass,meadow; flower_forest; cherry_grove,,Best as a bright / floral base strain,,Soft green line used in several hybrid recipes.
olive,Chanvre olive,wild_base,yes,Discover seeds by breaking grass or dry grass in warm biomes,minecraft:tall_grass; minecraft:short_grass; minecraft:tall_dry_grass; minecraft:short_dry_grass,savanna; windswept_savanna; desert_edge,,Warm / dry overworld discovery line,,Dry-climate green line.
dark,Chanvre sombre,wild_base,yes,Discover seeds by breaking ferns or shaded grass,minecraft:fern; minecraft:short_grass,dark_forest; old_growth_taiga; pale_garden,,Better in low light / canopy-heavy biomes,,Shade line; key parent for purple.
ashen,Chanvre cendré,wild_base,yes,Discover seeds by breaking ferns in cold biomes,minecraft:fern; minecraft:large_fern,snowy_taiga; grove; snowy_plains,,Cold-climate base line,,Cold green line; key parent for bluish and lunar.
moss,Chanvre mousse,wild_base,yes,Discover seeds from humid cave / swamp flora,minecraft:moss_carpet; minecraft:hanging_roots; minecraft:cave_vines,lush_caves; swamp; mangrove_swamp,,Humidity-heavy discovery line,,"Humid green line; key parent for purple, coral, varieg."
amber,Chanvre ambré,wild_rare,yes,Rare seed from dead bushes,minecraft:dead_bush,badlands; eroded_badlands; wooded_badlands,,Rare wild discovery in hot mineral biomes,,Dry rare line; parent for coral.
gold,Chanvre doré,hybrid,yes,Obtain as hybrid seed,,warm_biomes; bright_surface_fields,tender + olive,Mature parents adjacent (radius 1); harvest by day with sky visible,,Colorful hybrid from bright and dry green parents.
pink,Chanvre rosé,hybrid,yes,Obtain as hybrid seed,,flower_forest; meadow; cherry_grove,tender + purple,Mature parents adjacent (radius 1); harvest at dawn or dusk,,Stylized floral hybrid.
coral,Chanvre corail,hybrid,yes,Obtain as hybrid seed,,mangrove_edge; beach; warm_coast,amber + moss,Mature parents adjacent (radius 1); at least 1 water block touching farmland,,Warm wet hybrid.
purple,Chanvre pourpre,hybrid,yes,Obtain as hybrid seed,,humid_shaded_fields; swamp; dark_forest,dark + moss,Mature parents adjacent (radius 1); low light and humidity,,Shadow-humidity hybrid.
varieg,Chanvre panaché,hybrid,yes,Obtain as mutation seed,,lush_caves; jungle; swamp_greenhouse,any_two_distinct_variants,Two distinct mature parents adjacent (radius 1); humid biome,,Mutation-style collector variant.
bluish,Chanvre bleuté,hybrid,yes,Obtain as hybrid seed,,cold_fields; grove; ice_edge,ashen + tender,Mature parents adjacent (radius 1); cold biome or snow/ice nearby,,"Cold hybrid, moved out of wild discovery to keep survival logic coherent."
lunar,Chanvre lunaire,circumstantial,yes,Special night harvest,,cold_open_sky_biomes,ashen or bluish -> lunar seed roll,"Harvest mature ashen or bluish plant at night, with sky visible, in a cold biome",,Not found directly; obtained through timed harvest.
ember,Chanvre braise,dimensional,yes,Break native Nether flora,minecraft:crimson_roots; minecraft:warped_roots; minecraft:nether_sprouts; minecraft:weeping_vines; minecraft:twisting_vines,all_nether_biomes,,Nether-only. Never drops outside the Nether.,nether,Dimension identity strain.
indigo,Chanvre indigo,dimensional,yes,Break chorus plants or chorus flowers,minecraft:chorus_plant; minecraft:chorus_flower,all_end_biomes,,End-only. Never drops outside the End.,end,Dimension identity strain.
1 variant_key variant_name_fr family obtainable_in_survival first_obtention source_blocks_or_plants biome_focus breeding_recipe special_conditions dimension_lock codex_notes
2 common Chanvre commun wild_base yes Discover seeds by breaking short grass or tall grass minecraft:short_grass; minecraft:tall_grass plains; forest; riverbanks No special condition Main starter line. Use as fallback green strain.
3 tender Chanvre tendre wild_base yes Discover seeds by breaking short grass or tall grass minecraft:short_grass; minecraft:tall_grass meadow; flower_forest; cherry_grove Best as a bright / floral base strain Soft green line used in several hybrid recipes.
4 olive Chanvre olive wild_base yes Discover seeds by breaking grass or dry grass in warm biomes minecraft:tall_grass; minecraft:short_grass; minecraft:tall_dry_grass; minecraft:short_dry_grass savanna; windswept_savanna; desert_edge Warm / dry overworld discovery line Dry-climate green line.
5 dark Chanvre sombre wild_base yes Discover seeds by breaking ferns or shaded grass minecraft:fern; minecraft:short_grass dark_forest; old_growth_taiga; pale_garden Better in low light / canopy-heavy biomes Shade line; key parent for purple.
6 ashen Chanvre cendré wild_base yes Discover seeds by breaking ferns in cold biomes minecraft:fern; minecraft:large_fern snowy_taiga; grove; snowy_plains Cold-climate base line Cold green line; key parent for bluish and lunar.
7 moss Chanvre mousse wild_base yes Discover seeds from humid cave / swamp flora minecraft:moss_carpet; minecraft:hanging_roots; minecraft:cave_vines lush_caves; swamp; mangrove_swamp Humidity-heavy discovery line Humid green line; key parent for purple, coral, varieg.
8 amber Chanvre ambré wild_rare yes Rare seed from dead bushes minecraft:dead_bush badlands; eroded_badlands; wooded_badlands Rare wild discovery in hot mineral biomes Dry rare line; parent for coral.
9 gold Chanvre doré hybrid yes Obtain as hybrid seed warm_biomes; bright_surface_fields tender + olive Mature parents adjacent (radius 1); harvest by day with sky visible Colorful hybrid from bright and dry green parents.
10 pink Chanvre rosé hybrid yes Obtain as hybrid seed flower_forest; meadow; cherry_grove tender + purple Mature parents adjacent (radius 1); harvest at dawn or dusk Stylized floral hybrid.
11 coral Chanvre corail hybrid yes Obtain as hybrid seed mangrove_edge; beach; warm_coast amber + moss Mature parents adjacent (radius 1); at least 1 water block touching farmland Warm wet hybrid.
12 purple Chanvre pourpre hybrid yes Obtain as hybrid seed humid_shaded_fields; swamp; dark_forest dark + moss Mature parents adjacent (radius 1); low light and humidity Shadow-humidity hybrid.
13 varieg Chanvre panaché hybrid yes Obtain as mutation seed lush_caves; jungle; swamp_greenhouse any_two_distinct_variants Two distinct mature parents adjacent (radius 1); humid biome Mutation-style collector variant.
14 bluish Chanvre bleuté hybrid yes Obtain as hybrid seed cold_fields; grove; ice_edge ashen + tender Mature parents adjacent (radius 1); cold biome or snow/ice nearby Cold hybrid, moved out of wild discovery to keep survival logic coherent.
15 lunar Chanvre lunaire circumstantial yes Special night harvest cold_open_sky_biomes ashen or bluish -> lunar seed roll Harvest mature ashen or bluish plant at night, with sky visible, in a cold biome Not found directly; obtained through timed harvest.
16 ember Chanvre braise dimensional yes Break native Nether flora minecraft:crimson_roots; minecraft:warped_roots; minecraft:nether_sprouts; minecraft:weeping_vines; minecraft:twisting_vines all_nether_biomes Nether-only. Never drops outside the Nether. nether Dimension identity strain.
17 indigo Chanvre indigo dimensional yes Break chorus plants or chorus flowers minecraft:chorus_plant; minecraft:chorus_flower all_end_biomes End-only. Never drops outside the End. end Dimension identity strain.
+160
View File
@@ -0,0 +1,160 @@
# Hemp Effect System
## Goal
Each hemp variety applies:
1. a main gameplay profile,
2. a subtle visual profile during the normal trip,
3. a possible bad trip with stronger visual disturbance.
Normal trip must stay readable and non-invasive.
Bad trip is the only state allowed to become truly disturbing.
---
## Core rules
### Consumption flow
When the player consumes a hemp item:
1. Resolve the consumed variety from its `id`.
2. Apply all `main_effects` immediately.
3. Enable the `normal_visual_profile`.
4. Roll one bad trip chance using `bad_trip_chance`.
5. If the roll succeeds, schedule the bad trip after a random delay in `bad_trip_delay_sec`.
6. When the delay expires, apply `bad_trip_effects` and enable `bad_trip_visual_profile`.
7. When the main duration ends, clear normal visuals and gameplay effects.
8. When the bad trip duration ends, clear bad trip visuals and gameplay effects.
---
## Design constraints
### Normal trip
Normal trip should:
- remain comfortable for 2 to 3 minutes,
- never make HUD unreadable,
- never make combat or building frustrating,
- use only light visual treatment.
Allowed normal visual changes:
- subtle tint,
- mild saturation shift,
- mild contrast shift,
- very light vignette,
- very light ghosting.
Forbidden during normal trip:
- strong blur,
- strong wobble,
- aggressive FOV change,
- strong double vision,
- strong screen shake.
### Bad trip
Bad trip should:
- feel clearly worse,
- remain shorter than the main trip,
- include nausea and hunger,
- be visually more unstable.
Allowed bad trip visual changes:
- stronger tint,
- stronger vignette,
- stronger saturation shift,
- light image wobble,
- light afterimage,
- light brightness pulsing.
---
## Stacking rules
Current stacking model:
- Consuming the same variety refreshes that variety's duration.
- Consuming a different variety keeps the previous gameplay effects active and adds the new variety on top.
- Main gameplay effects from several varieties can coexist at the same time.
- A new manual consumption rerolls the bad trip entirely from the latest variety.
- Passive resin aura refresh keeps extending the same variety without rerolling the bad trip every tick.
- Only one normal hemp visual profile can be active at a time: the latest active variety drives visuals.
- Only one bad trip state can be active at a time, and a reroll replaces the previous pending or active bad trip.
---
## Effect conventions
### Main effect duration
Main trip duration should stay between 140 and 180 seconds.
### Bad trip duration
Bad trip duration should stay between 25 and 40 seconds.
### Bad trip base gameplay package
All bad trips contain at least:
- Nausea
- Hunger
Rare and very rare varieties may add:
- Weakness
- Slowness
- short Blindness
Use these sparingly.
---
## Data format
Each variety entry contains:
- `id`: stable machine id
- `name_fr`: display name
- `rarity`: common, uncommon, rare, very_rare
- `color_family`: readable color identity
- `main_duration_sec`: main trip duration
- `main_effects`: list of vanilla effects
- `normal_visual_profile`: subtle visual profile
- `bad_trip_chance`: float from 0.0 to 1.0
- `bad_trip_delay_sec`: min/max delay before bad trip starts
- `bad_trip_duration_sec`: bad trip duration
- `bad_trip_effects`: gameplay penalty package
- `bad_trip_visual_profile`: stronger visual profile
---
## Visual profile semantics
### Intensity scale
Use a 0.0 to 1.0 scale:
- 0.05 to 0.15 = subtle
- 0.20 to 0.35 = noticeable
- 0.40+ = invasive
Normal trip should usually stay in 0.08 to 0.14.
Bad trip may go to 0.25 to 0.50 depending on rarity.
### Suggested shader parameters
A visual profile can drive:
- `tint_strength`
- `saturation_delta`
- `contrast_delta`
- `vignette_strength`
- `ghosting_strength`
- `wobble_strength`
- `pulse_strength`
Not every profile needs every parameter.
---
## Implementation note
The system should be data-driven:
- all plant tuning lives in JSON,
- gameplay code reads the JSON,
- visuals are picked by profile name or inline values,
- item classes should not hardcode effect logic.
This allows easy balancing without rewriting gameplay code.
+601
View File
@@ -0,0 +1,601 @@
{
"version": 1,
"bad_trip_base_rules": {
"applies_nausea": true,
"applies_hunger": true,
"normal_trip_visual_intensity_target": [0.08, 0.14],
"bad_trip_visual_intensity_target": [0.25, 0.50]
},
"varieties": [
{
"id": "chanvre_commun",
"name_fr": "Chanvre commun",
"rarity": "common",
"color_family": "natural_green",
"main_duration_sec": 160,
"main_effects": [
{ "effect": "minecraft:resistance", "amplifier": 0, "duration_sec": 160 },
{ "effect": "minecraft:slowness", "amplifier": 0, "duration_sec": 160 },
{ "effect": "minecraft:haste", "amplifier": 0, "duration_sec": 160 },
{ "effect": "minecraft:strength", "amplifier": 0, "duration_sec": 160 }
],
"normal_visual_profile": {
"palette": "soft_green",
"intensity": 0.09,
"tint_strength": 0.05,
"saturation_delta": 0.03,
"contrast_delta": 0.02,
"vignette_strength": 0.03
},
"bad_trip_chance": 0.10,
"bad_trip_delay_sec": { "min": 18, "max": 32 },
"bad_trip_duration_sec": 28,
"bad_trip_effects": [
{ "effect": "minecraft:nausea", "amplifier": 0, "duration_sec": 28 },
{ "effect": "minecraft:hunger", "amplifier": 0, "duration_sec": 32 }
],
"bad_trip_visual_profile": {
"palette": "dirty_green",
"intensity": 0.26,
"tint_strength": 0.10,
"saturation_delta": -0.05,
"contrast_delta": 0.04,
"vignette_strength": 0.10,
"ghosting_strength": 0.06
}
},
{
"id": "chanvre_tendre",
"name_fr": "Chanvre tendre",
"rarity": "common",
"color_family": "fresh_light_green",
"main_duration_sec": 170,
"main_effects": [
{ "effect": "minecraft:speed", "amplifier": 0, "duration_sec": 170 },
{ "effect": "minecraft:jump_boost", "amplifier": 0, "duration_sec": 170 },
{ "effect": "minecraft:weakness", "amplifier": 0, "duration_sec": 170 }
],
"normal_visual_profile": {
"palette": "fresh_green",
"intensity": 0.08,
"tint_strength": 0.04,
"saturation_delta": 0.04,
"contrast_delta": 0.01,
"vignette_strength": 0.02
},
"bad_trip_chance": 0.09,
"bad_trip_delay_sec": { "min": 20, "max": 35 },
"bad_trip_duration_sec": 26,
"bad_trip_effects": [
{ "effect": "minecraft:nausea", "amplifier": 0, "duration_sec": 26 },
{ "effect": "minecraft:hunger", "amplifier": 0, "duration_sec": 30 }
],
"bad_trip_visual_profile": {
"palette": "sour_green",
"intensity": 0.24,
"tint_strength": 0.09,
"saturation_delta": -0.04,
"vignette_strength": 0.08,
"ghosting_strength": 0.05
}
},
{
"id": "chanvre_olive",
"name_fr": "Chanvre olive",
"rarity": "common",
"color_family": "olive_green",
"main_duration_sec": 155,
"main_effects": [
{ "effect": "minecraft:haste", "amplifier": 0, "duration_sec": 155 },
{ "effect": "minecraft:luck", "amplifier": 0, "duration_sec": 155 },
{ "effect": "minecraft:hunger", "amplifier": 0, "duration_sec": 155 }
],
"normal_visual_profile": {
"palette": "olive_matte",
"intensity": 0.09,
"tint_strength": 0.05,
"saturation_delta": -0.01,
"contrast_delta": 0.02,
"vignette_strength": 0.03
},
"bad_trip_chance": 0.12,
"bad_trip_delay_sec": { "min": 16, "max": 30 },
"bad_trip_duration_sec": 30,
"bad_trip_effects": [
{ "effect": "minecraft:nausea", "amplifier": 0, "duration_sec": 30 },
{ "effect": "minecraft:hunger", "amplifier": 1, "duration_sec": 34 }
],
"bad_trip_visual_profile": {
"palette": "mustard_sick",
"intensity": 0.28,
"tint_strength": 0.11,
"saturation_delta": -0.08,
"vignette_strength": 0.10,
"ghosting_strength": 0.06
}
},
{
"id": "chanvre_sombre",
"name_fr": "Chanvre sombre",
"rarity": "common",
"color_family": "deep_forest_green",
"main_duration_sec": 165,
"main_effects": [
{ "effect": "minecraft:night_vision", "amplifier": 0, "duration_sec": 165 },
{ "effect": "minecraft:strength", "amplifier": 0, "duration_sec": 165 },
{ "effect": "minecraft:slowness", "amplifier": 0, "duration_sec": 165 }
],
"normal_visual_profile": {
"palette": "deep_green",
"intensity": 0.10,
"tint_strength": 0.06,
"saturation_delta": -0.01,
"contrast_delta": 0.03,
"vignette_strength": 0.04
},
"bad_trip_chance": 0.12,
"bad_trip_delay_sec": { "min": 18, "max": 34 },
"bad_trip_duration_sec": 30,
"bad_trip_effects": [
{ "effect": "minecraft:nausea", "amplifier": 0, "duration_sec": 30 },
{ "effect": "minecraft:hunger", "amplifier": 0, "duration_sec": 34 }
],
"bad_trip_visual_profile": {
"palette": "swamp_dark",
"intensity": 0.29,
"tint_strength": 0.12,
"saturation_delta": -0.06,
"contrast_delta": 0.05,
"vignette_strength": 0.12,
"ghosting_strength": 0.05
}
},
{
"id": "chanvre_cendre",
"name_fr": "Chanvre cendré",
"rarity": "common",
"color_family": "ashy_green",
"main_duration_sec": 150,
"main_effects": [
{ "effect": "minecraft:slow_falling", "amplifier": 0, "duration_sec": 150 },
{ "effect": "minecraft:weakness", "amplifier": 0, "duration_sec": 150 }
],
"normal_visual_profile": {
"palette": "ash_green",
"intensity": 0.09,
"tint_strength": 0.04,
"saturation_delta": -0.05,
"contrast_delta": -0.01,
"vignette_strength": 0.03,
"ghosting_strength": 0.03
},
"bad_trip_chance": 0.14,
"bad_trip_delay_sec": { "min": 14, "max": 28 },
"bad_trip_duration_sec": 32,
"bad_trip_effects": [
{ "effect": "minecraft:nausea", "amplifier": 0, "duration_sec": 32 },
{ "effect": "minecraft:hunger", "amplifier": 1, "duration_sec": 34 }
],
"bad_trip_visual_profile": {
"palette": "dusty_gray_green",
"intensity": 0.30,
"tint_strength": 0.10,
"saturation_delta": -0.12,
"contrast_delta": -0.03,
"vignette_strength": 0.11,
"ghosting_strength": 0.08,
"wobble_strength": 0.04
}
},
{
"id": "chanvre_mousse",
"name_fr": "Chanvre mousse",
"rarity": "common",
"color_family": "moss_green",
"main_duration_sec": 175,
"main_effects": [
{ "effect": "minecraft:water_breathing", "amplifier": 0, "duration_sec": 175 },
{ "effect": "minecraft:regeneration", "amplifier": 0, "duration_sec": 175 },
{ "effect": "minecraft:slowness", "amplifier": 0, "duration_sec": 175 }
],
"normal_visual_profile": {
"palette": "wet_moss",
"intensity": 0.09,
"tint_strength": 0.05,
"saturation_delta": 0.01,
"contrast_delta": -0.01,
"vignette_strength": 0.03
},
"bad_trip_chance": 0.11,
"bad_trip_delay_sec": { "min": 20, "max": 36 },
"bad_trip_duration_sec": 28,
"bad_trip_effects": [
{ "effect": "minecraft:nausea", "amplifier": 0, "duration_sec": 28 },
{ "effect": "minecraft:hunger", "amplifier": 0, "duration_sec": 32 }
],
"bad_trip_visual_profile": {
"palette": "bog_green",
"intensity": 0.27,
"tint_strength": 0.10,
"saturation_delta": -0.04,
"contrast_delta": -0.02,
"vignette_strength": 0.09,
"ghosting_strength": 0.06
}
},
{
"id": "chanvre_dore",
"name_fr": "Chanvre doré",
"rarity": "uncommon",
"color_family": "golden_green",
"main_duration_sec": 150,
"main_effects": [
{ "effect": "minecraft:absorption", "amplifier": 0, "duration_sec": 150 },
{ "effect": "minecraft:haste", "amplifier": 1, "duration_sec": 150 },
{ "effect": "minecraft:speed", "amplifier": 0, "duration_sec": 150 }
],
"normal_visual_profile": {
"palette": "soft_gold",
"intensity": 0.11,
"tint_strength": 0.06,
"saturation_delta": 0.05,
"contrast_delta": 0.03,
"vignette_strength": 0.03
},
"bad_trip_chance": 0.15,
"bad_trip_delay_sec": { "min": 15, "max": 28 },
"bad_trip_duration_sec": 30,
"bad_trip_effects": [
{ "effect": "minecraft:nausea", "amplifier": 0, "duration_sec": 30 },
{ "effect": "minecraft:hunger", "amplifier": 1, "duration_sec": 34 }
],
"bad_trip_visual_profile": {
"palette": "toxic_yellow",
"intensity": 0.32,
"tint_strength": 0.13,
"saturation_delta": 0.03,
"contrast_delta": 0.06,
"vignette_strength": 0.11,
"pulse_strength": 0.05
}
},
{
"id": "chanvre_ambre",
"name_fr": "Chanvre ambré",
"rarity": "uncommon",
"color_family": "amber_yellow_brown",
"main_duration_sec": 155,
"main_effects": [
{ "effect": "minecraft:fire_resistance", "amplifier": 0, "duration_sec": 155 },
{ "effect": "minecraft:strength", "amplifier": 0, "duration_sec": 155 },
{ "effect": "minecraft:hunger", "amplifier": 0, "duration_sec": 155 }
],
"normal_visual_profile": {
"palette": "warm_amber",
"intensity": 0.11,
"tint_strength": 0.06,
"saturation_delta": 0.03,
"contrast_delta": 0.03,
"vignette_strength": 0.03
},
"bad_trip_chance": 0.16,
"bad_trip_delay_sec": { "min": 14, "max": 28 },
"bad_trip_duration_sec": 32,
"bad_trip_effects": [
{ "effect": "minecraft:nausea", "amplifier": 0, "duration_sec": 32 },
{ "effect": "minecraft:hunger", "amplifier": 1, "duration_sec": 34 }
],
"bad_trip_visual_profile": {
"palette": "burnt_amber",
"intensity": 0.33,
"tint_strength": 0.14,
"saturation_delta": 0.01,
"contrast_delta": 0.05,
"vignette_strength": 0.12,
"pulse_strength": 0.06
}
},
{
"id": "chanvre_bleute",
"name_fr": "Chanvre bleuté",
"rarity": "uncommon",
"color_family": "cool_blue_green",
"main_duration_sec": 165,
"main_effects": [
{ "effect": "minecraft:night_vision", "amplifier": 0, "duration_sec": 165 },
{ "effect": "minecraft:water_breathing", "amplifier": 0, "duration_sec": 165 },
{ "effect": "minecraft:speed", "amplifier": 0, "duration_sec": 165 }
],
"normal_visual_profile": {
"palette": "cool_blue",
"intensity": 0.10,
"tint_strength": 0.05,
"saturation_delta": 0.01,
"contrast_delta": 0.02,
"vignette_strength": 0.02
},
"bad_trip_chance": 0.14,
"bad_trip_delay_sec": { "min": 18, "max": 30 },
"bad_trip_duration_sec": 29,
"bad_trip_effects": [
{ "effect": "minecraft:nausea", "amplifier": 0, "duration_sec": 29 },
{ "effect": "minecraft:hunger", "amplifier": 0, "duration_sec": 33 }
],
"bad_trip_visual_profile": {
"palette": "cold_cyan",
"intensity": 0.30,
"tint_strength": 0.12,
"saturation_delta": -0.02,
"contrast_delta": 0.05,
"vignette_strength": 0.10,
"ghosting_strength": 0.07
}
},
{
"id": "chanvre_rose",
"name_fr": "Chanvre rosé",
"rarity": "uncommon",
"color_family": "soft_plant_pink",
"main_duration_sec": 175,
"main_effects": [
{ "effect": "minecraft:regeneration", "amplifier": 0, "duration_sec": 175 },
{ "effect": "minecraft:slowness", "amplifier": 0, "duration_sec": 175 }
],
"normal_visual_profile": {
"palette": "soft_pink",
"intensity": 0.09,
"tint_strength": 0.04,
"saturation_delta": 0.03,
"contrast_delta": 0.01,
"vignette_strength": 0.02
},
"bad_trip_chance": 0.15,
"bad_trip_delay_sec": { "min": 20, "max": 35 },
"bad_trip_duration_sec": 30,
"bad_trip_effects": [
{ "effect": "minecraft:nausea", "amplifier": 0, "duration_sec": 30 },
{ "effect": "minecraft:hunger", "amplifier": 1, "duration_sec": 34 }
],
"bad_trip_visual_profile": {
"palette": "sickly_pink",
"intensity": 0.31,
"tint_strength": 0.12,
"saturation_delta": -0.01,
"vignette_strength": 0.10,
"ghosting_strength": 0.06
}
},
{
"id": "chanvre_corail",
"name_fr": "Chanvre corail",
"rarity": "uncommon",
"color_family": "warm_coral",
"main_duration_sec": 150,
"main_effects": [
{ "effect": "minecraft:dolphins_grace", "amplifier": 0, "duration_sec": 150 },
{ "effect": "minecraft:water_breathing", "amplifier": 0, "duration_sec": 150 },
{ "effect": "minecraft:jump_boost", "amplifier": 0, "duration_sec": 150 }
],
"normal_visual_profile": {
"palette": "coral_warm",
"intensity": 0.11,
"tint_strength": 0.05,
"saturation_delta": 0.04,
"contrast_delta": 0.02,
"vignette_strength": 0.02
},
"bad_trip_chance": 0.17,
"bad_trip_delay_sec": { "min": 14, "max": 26 },
"bad_trip_duration_sec": 31,
"bad_trip_effects": [
{ "effect": "minecraft:nausea", "amplifier": 0, "duration_sec": 31 },
{ "effect": "minecraft:hunger", "amplifier": 1, "duration_sec": 35 }
],
"bad_trip_visual_profile": {
"palette": "burnt_coral",
"intensity": 0.33,
"tint_strength": 0.13,
"saturation_delta": 0.00,
"contrast_delta": 0.05,
"vignette_strength": 0.11,
"ghosting_strength": 0.06,
"pulse_strength": 0.05
}
},
{
"id": "chanvre_pourpre",
"name_fr": "Chanvre pourpre",
"rarity": "rare",
"color_family": "deep_red_violet",
"main_duration_sec": 145,
"main_effects": [
{ "effect": "minecraft:strength", "amplifier": 1, "duration_sec": 145 },
{ "effect": "minecraft:resistance", "amplifier": 0, "duration_sec": 145 }
],
"normal_visual_profile": {
"palette": "mystic_purple",
"intensity": 0.12,
"tint_strength": 0.06,
"saturation_delta": 0.05,
"contrast_delta": 0.03,
"vignette_strength": 0.03
},
"bad_trip_chance": 0.22,
"bad_trip_delay_sec": { "min": 12, "max": 24 },
"bad_trip_duration_sec": 34,
"bad_trip_effects": [
{ "effect": "minecraft:nausea", "amplifier": 1, "duration_sec": 34 },
{ "effect": "minecraft:hunger", "amplifier": 1, "duration_sec": 36 },
{ "effect": "minecraft:weakness", "amplifier": 0, "duration_sec": 24 }
],
"bad_trip_visual_profile": {
"palette": "corrupted_magenta",
"intensity": 0.40,
"tint_strength": 0.17,
"saturation_delta": 0.08,
"contrast_delta": 0.07,
"vignette_strength": 0.14,
"ghosting_strength": 0.10,
"wobble_strength": 0.05
}
},
{
"id": "chanvre_indigo",
"name_fr": "Chanvre indigo",
"rarity": "rare",
"color_family": "dark_blue_violet",
"main_duration_sec": 145,
"main_effects": [
{ "effect": "minecraft:invisibility", "amplifier": 0, "duration_sec": 145 },
{ "effect": "minecraft:night_vision", "amplifier": 0, "duration_sec": 145 },
{ "effect": "minecraft:weakness", "amplifier": 0, "duration_sec": 145 }
],
"normal_visual_profile": {
"palette": "deep_indigo",
"intensity": 0.12,
"tint_strength": 0.06,
"saturation_delta": -0.01,
"contrast_delta": 0.04,
"vignette_strength": 0.04
},
"bad_trip_chance": 0.21,
"bad_trip_delay_sec": { "min": 12, "max": 25 },
"bad_trip_duration_sec": 34,
"bad_trip_effects": [
{ "effect": "minecraft:nausea", "amplifier": 1, "duration_sec": 34 },
{ "effect": "minecraft:hunger", "amplifier": 1, "duration_sec": 36 },
{ "effect": "minecraft:weakness", "amplifier": 0, "duration_sec": 24 }
],
"bad_trip_visual_profile": {
"palette": "void_indigo",
"intensity": 0.39,
"tint_strength": 0.16,
"saturation_delta": -0.05,
"contrast_delta": 0.08,
"vignette_strength": 0.15,
"ghosting_strength": 0.11,
"wobble_strength": 0.04
}
},
{
"id": "chanvre_panache",
"name_fr": "Chanvre panaché",
"rarity": "rare",
"color_family": "mixed_pale_green",
"main_duration_sec": 160,
"main_effects_mode": "random_pick",
"main_effects_pool": [
{ "effect": "minecraft:speed", "amplifier": 0, "duration_sec": 160 },
{ "effect": "minecraft:haste", "amplifier": 0, "duration_sec": 160 },
{ "effect": "minecraft:regeneration", "amplifier": 0, "duration_sec": 160 },
{ "effect": "minecraft:night_vision", "amplifier": 0, "duration_sec": 160 }
],
"main_effects_pick_count": 2,
"normal_visual_profile": {
"palette": "pale_mixed_green",
"intensity": 0.11,
"tint_strength": 0.05,
"saturation_delta": 0.01,
"contrast_delta": 0.02,
"vignette_strength": 0.03,
"ghosting_strength": 0.03
},
"bad_trip_chance": 0.20,
"bad_trip_delay_sec": { "min": 13, "max": 27 },
"bad_trip_duration_sec": 33,
"bad_trip_effects": [
{ "effect": "minecraft:nausea", "amplifier": 1, "duration_sec": 33 },
{ "effect": "minecraft:hunger", "amplifier": 1, "duration_sec": 36 }
],
"bad_trip_visual_profile": {
"palette": "unstable_mixed",
"intensity": 0.36,
"tint_strength": 0.14,
"saturation_delta": -0.02,
"contrast_delta": 0.04,
"vignette_strength": 0.12,
"ghosting_strength": 0.10,
"wobble_strength": 0.05
}
},
{
"id": "chanvre_lunaire",
"name_fr": "Chanvre lunaire",
"rarity": "very_rare",
"color_family": "pale_silver_green",
"main_duration_sec": 150,
"main_effects": [
{ "effect": "minecraft:jump_boost", "amplifier": 1, "duration_sec": 150 },
{ "effect": "minecraft:slow_falling", "amplifier": 0, "duration_sec": 150 },
{ "effect": "minecraft:night_vision", "amplifier": 0, "duration_sec": 150 }
],
"normal_visual_profile": {
"palette": "moon_pale",
"intensity": 0.13,
"tint_strength": 0.06,
"saturation_delta": -0.03,
"contrast_delta": 0.01,
"vignette_strength": 0.03,
"ghosting_strength": 0.03
},
"bad_trip_chance": 0.27,
"bad_trip_delay_sec": { "min": 10, "max": 22 },
"bad_trip_duration_sec": 36,
"bad_trip_effects": [
{ "effect": "minecraft:nausea", "amplifier": 1, "duration_sec": 36 },
{ "effect": "minecraft:hunger", "amplifier": 1, "duration_sec": 38 },
{ "effect": "minecraft:blindness", "amplifier": 0, "duration_sec": 4 }
],
"bad_trip_visual_profile": {
"palette": "overexposed_moon",
"intensity": 0.46,
"tint_strength": 0.18,
"saturation_delta": -0.10,
"contrast_delta": -0.02,
"vignette_strength": 0.13,
"ghosting_strength": 0.12,
"wobble_strength": 0.06,
"pulse_strength": 0.06
}
},
{
"id": "chanvre_braise",
"name_fr": "Chanvre braise",
"rarity": "very_rare",
"color_family": "dark_red_ember",
"main_duration_sec": 145,
"main_effects": [
{ "effect": "minecraft:fire_resistance", "amplifier": 0, "duration_sec": 145 },
{ "effect": "minecraft:strength", "amplifier": 1, "duration_sec": 145 },
{ "effect": "minecraft:haste", "amplifier": 1, "duration_sec": 145 }
],
"normal_visual_profile": {
"palette": "ember_warm",
"intensity": 0.13,
"tint_strength": 0.07,
"saturation_delta": 0.04,
"contrast_delta": 0.04,
"vignette_strength": 0.03
},
"bad_trip_chance": 0.30,
"bad_trip_delay_sec": { "min": 10, "max": 20 },
"bad_trip_duration_sec": 38,
"bad_trip_effects": [
{ "effect": "minecraft:nausea", "amplifier": 1, "duration_sec": 38 },
{ "effect": "minecraft:hunger", "amplifier": 2, "duration_sec": 40 },
{ "effect": "minecraft:weakness", "amplifier": 0, "duration_sec": 20 }
],
"bad_trip_visual_profile": {
"palette": "burning_red",
"intensity": 0.50,
"tint_strength": 0.20,
"saturation_delta": 0.06,
"contrast_delta": 0.08,
"vignette_strength": 0.16,
"ghosting_strength": 0.09,
"wobble_strength": 0.05,
"pulse_strength": 0.08
}
}
]
}
@@ -0,0 +1,162 @@
{
"layout": {
"tile_size": [
16,
16
],
"columns": 16,
"rows": 1,
"column_order": [
"common",
"tender",
"olive",
"dark",
"ashen",
"moss",
"gold",
"amber",
"bluish",
"pink",
"coral",
"purple",
"indigo",
"varieg",
"lunar",
"ember"
],
"row_order": [
"resin_block"
],
"note": "Raw sheet has no margins. Size: 256x16."
},
"variants": [
{
"key": "common",
"name": "Résine commune",
"rarity": "commun",
"h": 36,
"s": 1.0,
"v": 1.0
},
{
"key": "tender",
"name": "Résine tendre",
"rarity": "commun",
"h": 44,
"s": 0.88,
"v": 1.1
},
{
"key": "olive",
"name": "Résine olive",
"rarity": "commun",
"h": 78,
"s": 0.82,
"v": 0.96
},
{
"key": "dark",
"name": "Résine sombre",
"rarity": "commun",
"h": 28,
"s": 1.0,
"v": 0.72
},
{
"key": "ashen",
"name": "Résine cendrée",
"rarity": "commun",
"h": 34,
"s": 0.34,
"v": 0.92
},
{
"key": "moss",
"name": "Résine mousse",
"rarity": "commun",
"h": 112,
"s": 0.72,
"v": 0.82
},
{
"key": "gold",
"name": "Résine dorée",
"rarity": "peu commun",
"h": 52,
"s": 0.96,
"v": 1.12
},
{
"key": "amber",
"name": "Résine ambrée",
"rarity": "peu commun",
"h": 22,
"s": 1.0,
"v": 1.04
},
{
"key": "bluish",
"name": "Résine bleutée",
"rarity": "peu commun",
"h": 190,
"s": 0.7,
"v": 0.98
},
{
"key": "pink",
"name": "Résine rosée",
"rarity": "peu commun",
"h": 340,
"s": 0.62,
"v": 1.08
},
{
"key": "coral",
"name": "Résine corail",
"rarity": "peu commun",
"h": 10,
"s": 0.82,
"v": 1.1
},
{
"key": "purple",
"name": "Résine pourpre",
"rarity": "rare",
"h": 296,
"s": 0.82,
"v": 0.84
},
{
"key": "indigo",
"name": "Résine indigo",
"rarity": "rare",
"h": 246,
"s": 0.82,
"v": 0.84
},
{
"key": "varieg",
"name": "Résine panachée",
"rarity": "rare",
"h": 88,
"s": 0.88,
"v": 1.0
},
{
"key": "lunar",
"name": "Résine lunaire",
"rarity": "très rare",
"h": 72,
"s": 0.12,
"v": 1.22
},
{
"key": "ember",
"name": "Résine braise",
"rarity": "très rare",
"h": 4,
"s": 0.96,
"v": 0.92
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB